资源描述
文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.Java 五子棋小程序简介: Java 五子棋小程序,送给Java 初学者学习提高兴趣与学习所用,希望能给大家带来一些帮助。此程序用 Java 语言编写,采用swing 技术开发界面,采用触发模式进行键盘事件监听, 原本设计与台式机全键盘使用,所以白棋选手落子采用数字键盘0 键,经过本人改进后,也可使用/ 键进行落子。如出现运行后无图案现象,请双击标题栏最大化后方可出现图案,然后再还原。最后感谢大家支持!1.程序运行效果1文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.2.Myeclipse 根目录3.所有应用图片1)black.png2)white.png3) space.gif4)num0.gif5)red.png6) mbi_user.gif7)mbi_D.gif8) mbi_L.gif9) mbi_R.gif10)mbi_U.gif11) qipan.jpg2文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.4.所有类1)运行类package;publicclassRunGame /* param args*/publicstaticvoidmain(String args) new Game(); 程序运行 );2)主程序类package ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;3文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.import ;public class Game extends JFrame implements KeyListener, ActionListener private JPanel mainPanel = null;private JLabel baizi = null;private JLabel heizi = null;private MyLabel biankuang = null;private Position pos = null;private JLabel user = null;private JPanel rightPanel = null;private JLabel hei, heiU, heiD, heiL, heiR, heiC;private JLabel bai, baiU, baiD, baiL, baiR, baiC;private JLabel timeL, time;/ 显示时间private Timer timer;private int mnt = 0, scd = 0;/ 分、秒private JMenuBar menuBar;private JMenu menuE, menuH;private JMenuItem menuItemCZ;/* 初始化主视窗*/private void InitLabel() Container con = this.getContentPane();con.setLayout(null);this.mainPanel = new MainPanel();, 0, 609, 608);con.add(this.mainPanel); this.rightPanel = new JPanel();, 0, 180, 608);con.add(this.rightPanel);this.user = new JLabel(new ImageIcon(./img/mbi_user.gif);4文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持., 25, 40, 40);/* 初始化所有点* 给每个点上都放置一个黑子、一个白子,设置棋子为不可见*/this.pos = new Position1313;this.heizi = new JLabel1313;this.baizi = new JLabel1313;for (int i = 0; i 13; i+) for (int j = 0; j = 60) scd = 0;mnt+;String str = ;if(mnt 10) str = 0 + mnt + :;elsestr = mnt + :;7文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.if(scd 10) str = str + 0 + scd;elsestr = str +scd;time.setText(str);this.timer = new Timer(1000, keepTime);/ 菜单初始化private void initMenu() this.menuBar = new JMenuBar(); this.menuE = new JMenu( 菜单 (E); this.menuH = new JMenu( 帮助 (H);this.menuItemCZ = new JMenuItem( 重置 );, InputEvent.CTRL_MASK);setJMenuBar(this.menuBar);/* 当从键盘得到响应时改变边框位置*/private void setBiankuang() +36*,64+36*;/* 重新初始化,隐藏所有棋子,所有位置状态清零,边框回到原来位置*/private void initAll() this.mnt = 0;this.scd = 0;8文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.for (int i = 0; i 13; i+) for (int j = 0; j 13; j+) posij.setLabel_Status(0);this.heiziij.setVisible(false);this.baiziij.setVisible(false);, 280, 45, 45); ; / 边框初始化, 25);/ 重新开始计时/* 胜利显示*/private void showOver() ;if( = 1) JOptionPane.showMessageDialog(this, 黑方获胜! ); else if( = 2) JOptionPane.showMessageDialog(this, 白方获胜! );int flag = JOptionPane.showConfirmDialog(this, 再 来 一 局 吧 ! , 消 息 , JOptionPane.YES_NO_OPTION);if(flag = JOptionPane.YES_OPTION) this.initAll();else this.dispose();/*9文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.* 判断游戏是否结束* param x当前落子x 坐标* param y当前落子y 坐标*/private void gameOver(int x, int y) int staNum = 0;/* 向右下方检查是否形成五连子*/for (int i = x - 4, j = y - 4; i = 0 & i = 0 & j = 12) if(this.posij.getLabel_Status() =staNum+; staNum = + staNum);if(staNum = 5) this.showOver();/;/if(this.posij.getLabel_Status() = 1) /JOptionPane.showMessageDialog(this, 黑方获胜! );/ 黑子获胜!);/if(this.posij.getLabel_Status() = 2) /JOptionPane.showMessageDialog(this, 白方获胜! );/ 白子获胜!);/ else staNum = 0;/*向右方检查是否形成五连子*/for (int i = x - 4, j = y ; i = 0 & i = 0 & j = 12) if(this.posij.getLabel_Status() =staNum+; staNum = + staNum);if(staNum = 5) this.showOver();10文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持./;/if(this.posij.getLabel_Status() = 1) /JOptionPane.showMessageDialog(this, 黑方获胜! );/ 黑子获胜!);/if(this.posij.getLabel_Status() = 2) /JOptionPane.showMessageDialog(this, 白方获胜! );/ 白子获胜!);/ else staNum = 0;/*向右上方检查是否形成五连子*/for (int i = x - 4, j = y + 4; i = 0 & i = 0 & j = 12) if(this.posij.getLabel_Status() =staNum+; staNum = + staNum);if(staNum = 5) this.showOver();/;/if(this.posij.getLabel_Status() = 1) /JOptionPane.showMessageDialog(this, 黑方获胜! );/ 黑子获胜!);/if(this.posij.getLabel_Status() = 2) /JOptionPane.showMessageDialog(this, 白方获胜! );/ 白子获胜!);/ else staNum = 0;/*11文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.*向下方检查是否形成五连子*/for (int i = x, j = y - 4 ; j = 0 & i = 0 & j 0) ;this.setBiankuang();break;case KeyEvent.VK_S:if( 0) ;this.setBiankuang();break;case KeyEvent.VK_D:if( 0) ;this.setBiankuang();break;case KeyEvent.VK_DOWN:if( 0) ;this.setBiankuang();break;case KeyEvent.VK_RIGHT:if( 12) ;this.setBiankuang();break;case KeyEvent.VK_NUMPAD0:if(this.pos = 0) this.baizi;this.repaint();this.pos;this.gameOver(, ;, 25);break;case KeyEvent.VK_SLASH:if(this.pos = 0) this.baizi;this.repaint();this.pos;this.gameOver(, ;, 25);break;14文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.default:break;public void keyReleased(KeyEvent e) / TODO Auto-generated method stubpublic void keyTyped(KeyEvent e) / TODO Auto-generated method stubpublic void actionPerformed(ActionEvent e) if(e.getSource() = menuItemCZ) this.initAll();3)JPanel 封装类package;import;import;import;import;publicclassMainPanelextendsJPanel privateImageIconwelcomImageIcon=null;publicMainPanel()this. welcomImageIcon=new ImageIcon(./img/qipan.jpg);15文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.publicvoidpaintComponent(Graphics g) g.drawImage(,0,0,this.getWidth(),this.getHeight(),this);4)JLabel 封装了package ;import ;import ;public class MyLabel extends JLabel private int xx;private int yy;private int Label_Status;public int getLabel_Status() return Label_Status;public void setLabel_Status(int label_Status) Label_Status = label_Status;public int getXX() return xx;public void moveXX(int xx) this.xx = this.xx + xx;public int getYY() return yy;16文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.public void moveYY(int yy) this.yy = this.yy + yy;public MyLabel() this.xx = 6;this.yy = 6;this.Label_Status = 1;this.setIcon(new ImageIcon(./img/red.png);/* 对边框重新初始化*/public void returnMyLabel() this.xx = 6;this.yy = 6;this.Label_Status = 1;5)位置处理类/* 设计一个位置类用来标记每个点的位置*/package;publicclassPositionprivateintx ;privateinty ;privateintLabel_Status;publicPosition() this. x = 0;this. y = 0;this. Label_Status= 0;publicintgetLabel_Status() returnLabel_Status;publicvoidsetLabel_Status(intLabel_Status) this. Label_Status= Label_Status;17文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.publicintgetX() returnx ;publicvoidsetX(intx) this. x = x;publicintgetY() returny ;publicvoidsetY(inty) this. y = y;18
展开阅读全文