java五子棋小程序.doc_第1页
java五子棋小程序.doc_第2页
java五子棋小程序.doc_第3页
java五子棋小程序.doc_第4页
java五子棋小程序.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java五子棋小程序简介:Java五子棋小程序,送给Java初学者学习提高兴趣与学习所用,希望能给大家带来一些帮助。此程序用Java语言编写,采用swing技术开发界面,采用触发模式进行键盘事件监听,原本设计与台式机全键盘使用,所以白棋选手落子采用数字键盘0键,经过本人改进后,也可使用/键进行落子。如出现运行后无图案现象,请双击标题栏最大化后方可出现图案,然后再还原。最后感谢大家支持!1.程序运行效果2.Myeclipse根目录3.所有应用图片1)black.png 2)white.png3)space.gif 4)num0.gif 5)red.png 6)mbi_user.gif 7)mbi_D.gif 8)mbi_L.gif 9)mbi_R.gif 10)mbi_U.gif 11)qipan.jpg 4.所有类1)运行类package com.dhl.wuziqi;public class RunGame /* * param args */public static void main(String args) new Game();System.out.println(程序运行);2)主程序类package com.dhl.wuziqi;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.KeyStroke;import javax.swing.Timer;public class Game extends JFrame implements KeyListener, ActionListenerprivate 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();this.mainPanel.setBounds(0, 0, 609, 608);this.mainPanel.setLayout(null);con.add(this.mainPanel);this.rightPanel = new JPanel();this.rightPanel.setBounds(610, 0, 180, 608);this.rightPanel.setBackground(Color.GRAY);this.rightPanel.setLayout(null);con.add(this.rightPanel);this.user = new JLabel(new ImageIcon(./img/mbi_user.gif);this.user.setBounds(40, 25, 40, 40);this.rightPanel.add(this.user);/* * 初始化所有点 * 给每个点上都放置一个黑子、一个白子,设置棋子为不可见 */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 + :;if(scd 10) str = str + 0 + scd;elsestr = str +scd;time.setText(str);this.timer = new Timer(1000, keepTime);this.timer.start();/菜单初始化private void initMenu() this.menuBar = new JMenuBar();this.menuE = new JMenu(菜单(E);this.menuH = new JMenu(帮助(H);this.menuItemCZ = new JMenuItem(重置);this.menuItemCZ.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK);this.menuItemCZ.addActionListener(this);this.menuE.add(this.menuItemCZ);this.menuBar.add(this.menuE);this.menuBar.add(this.menuH);setJMenuBar(this.menuBar);/* * 当从键盘得到响应时改变边框位置 * */private void setBiankuang() this.biankuang.setLocation(69 + 36 * this.biankuang.getXX(), 64 + 36 * this.biankuang.getYY();/* * 重新初始化,隐藏所有棋子,所有位置状态清零,边框回到原来位置 * */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(false);this.baiziij.setVisible(false);this.biankuang.setBounds(285, 280, 45, 45);this.biankuang.returnMyLabel(); /边框初始化this.user.setLocation(40, 25);this.timer.start();/重新开始计时/* * 胜利显示 * */private void showOver() this.timer.stop();if(this.biankuang.getLabel_Status() = 1) JOptionPane.showMessageDialog(this, 黑方获胜!); else if(this.biankuang.getLabel_Status() = 2) JOptionPane.showMessageDialog(this, 白方获胜!); int flag = JOptionPane.showConfirmDialog(this, 再来一局吧!, 消息, JOptionPane.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_Status() = this.biankuang.getLabel_Status() staNum+;System.out.println(staNum = + staNum);if(staNum = 5) this.showOver();/this.timer.stop();/if(this.posij.getLabel_Status() = 1) /JOptionPane.showMessageDialog(this, 黑方获胜!);/System.out.println(黑子获胜!);/if(this.posij.getLabel_Status() = 2) /JOptionPane.showMessageDialog(this, 白方获胜!);/System.out.println(白子获胜!);/ else staNum = 0;/* * 向右方检查是否形成五连子 */for (int i = x - 4, j = y ; i = 0 & i = 0 & j = 12) if(this.posij.getLabel_Status() = this.biankuang.getLabel_Status() staNum+;System.out.println(staNum = + staNum);if(staNum = 5) this.showOver();/this.timer.stop();/if(this.posij.getLabel_Status() = 1) /JOptionPane.showMessageDialog(this, 黑方获胜!);/System.out.println(黑子获胜!);/if(this.posij.getLabel_Status() = 2) /JOptionPane.showMessageDialog(this, 白方获胜!);/System.out.println(白子获胜!);/ else staNum = 0;/* * 向右上方检查是否形成五连子 */for (int i = x - 4, j = y + 4; i = 0 & i = 0 & j = 12) if(this.posij.getLabel_Status() = this.biankuang.getLabel_Status() staNum+;System.out.println(staNum = + staNum);if(staNum = 5) this.showOver();/this.timer.stop();/if(this.posij.getLabel_Status() = 1) /JOptionPane.showMessageDialog(this, 黑方获胜!);/System.out.println(黑子获胜!);/if(this.posij.getLabel_Status() = 2) /JOptionPane.showMessageDialog(this, 白方获胜!);/System.out.println(白子获胜!);/ else staNum = 0;/* * 向下方检查是否形成五连子 */for (int i = x, j = y - 4 ; j = 0 & i = 0 & j 0) this.biankuang.moveYY(-1);this.setBiankuang();break;case KeyEvent.VK_S:if(this.biankuang.getYY() 0) this.biankuang.moveXX(-1);this.setBiankuang();break;case KeyEvent.VK_D:if(this.biankuang.getXX() 0) this.biankuang.moveYY(-1);this.setBiankuang();break;case KeyEvent.VK_DOWN:if(this.biankuang.getYY() 0) this.biankuang.moveXX(-1);this.setBiankuang();break;case KeyEvent.VK_RIGHT:if(this.biankuang.getXX() 12) this.biankuang.moveXX(1);this.setBiankuang();break;case KeyEvent.VK_NUMPAD0:if(this.posthis.biankuang.getXX()this.biankuang.getYY().getLabel_Status() = 0) this.baizithis.biankuang.getXX()this.biankuang.getYY().setVisible(true);this.repaint();this.posthis.biankuang.getXX()this.biankuang.getYY().setLabel_Status(2);this.gameOver(this.biankuang.getXX(), this.biankuang.getYY();this.biankuang.setLabel_Status(1);this.user.setLocation(40, 25);break;case KeyEvent.VK_SLASH:if(this.posthis.biankuang.getXX()this.biankuang.getYY().getLabel_Status() = 0) this.baizithis.biankuang.getXX()this.biankuang.getYY().setVisible(true);this.repaint();this.posthis.biankuang.getXX()this.biankuang.getYY().setLabel_Status(2);this.gameOver(this.biankuang.getXX(), this.biankuang.getYY();this.biankuang.setLabel_Status(1);this.user.setLocation(40, 25);break;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 com.dhl.wuziqi;import java.awt.Graphics;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JPanel;public class MainPanel extends JPanel private ImageIcon welcomImageIcon = null;public MainPanel()this.welcomImageIcon = new ImageIcon(./img/qipan.jpg); public void paintComponent(Graphics g) g.drawImage(this.welcomImageIcon.getImage(), 0, 0, this.getWidth(), this.getHeight(), this); 4)JLabel封装了package com.dhl.wuziqi;import javax.swing.ImageIcon;import javax.swing.JLabel;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 l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论