1、java五子棋小程序Java五子棋小程序简介:Java五子棋小程序,送给Java初学者学习提高兴趣与学习所用,希望能给大家带来一些帮助。此程序用Java语言编写,采用swing技术开发界面,采用触发模式进行键盘事件监听,原本设计与台式机全键盘使用,所以白棋选手落子采用数字键盘0键,经过本人改进后,也可使用/键进行落子。如出现运行后无图案现象,请双击标题栏最大化后方可出现图案,然后再还原。最后感谢大家支持!1.程序运行效果2.Myeclipse根目录3.所有应用图片1)black.png 2)white.png 3)space.gif 4)num0.gif 5)red.png 6)mbi_use
2、r.gif 7)mbi_D.gif 8)mbi_L.gif 9)mbi_R.gif 10)mbi_U.gif 11)qipan.jpg 4.所有类1)运行类package ;public class RunGame /* * param args */ public static void main(String args) new Game(); 程序运行); 2)主程序类package ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import
3、 ;import ;import ;import ;import ;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; priv
4、ate 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 menuItemC
5、Z; /* * 初始化主视窗 * */ 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(./i
6、mg/mbi_user.gif); , 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 + :; else str = mnt + :; if(s
7、cd 10) str = str + 0 + scd; else str = 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); ; ;
8、 ; ; setJMenuBar(this.menuBar); /* * 当从键盘得到响应时改变边框位置 * */ private void setBiankuang() + 36 * , 64 + 36 * ; /* * 重新初始化,隐藏所有棋子,所有位置状态清零,边框回到原来位置 * */ private void initAll() this.mnt = 0; this.scd = 0; for (int i = 0; i 13; i+) for (int j = 0; j 13; j+) posij.setLabel_Status(0); this.heiziij.setVisible
9、(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, 再来一局吧!, 消息, JOption
10、Pane.YES_NO_OPTION); if(flag = JOptionPane.YES_OPTION) this.initAll(); else this.dispose(); /* * 判断游戏是否结束 * 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_Sta
11、tus() = 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; /* * 向右方检查是否形成五连子 */ f
12、or (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();/ ;/ if(this.posij.getLabel_Status() = 1) / JOptionPane.showMessageDialog(this, 黑方获胜!);/ 黑子获胜!);/ / if(this.posij.getLabel_Status() = 2) / JOptionPane.show
13、MessageDialog(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(
14、this, 黑方获胜!);/ 黑子获胜!);/ / if(this.posij.getLabel_Status() = 2) / JOptionPane.showMessageDialog(this, 白方获胜!);/ 白子获胜!);/ else staNum = 0; /* * 向下方检查是否形成五连子 */ 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 Ke
15、yEvent.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; default: break; public void keyReleased(KeyE
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1