




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
package org;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Toolkit;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JFrame;import javax.swing.JOptionPane;public class FiveChess extends JFrame implements MouseListener, Runnable / 背景图片BufferedImage bgImage = null;/ 保存棋子坐標int x = 0;int y = 0;/ 用數組來表示所有下過的棋子/ 其內容數據:0-表示沒有棋子、1-表示黑子、2-表示白子int allChess = new int1919;/ 标识下一步棋子的颜色boolean isBlack = true;/ 标识游戏是否结束boolean canPlay = false;/ 创建游戏信息标识String gameMessage = 黑方先行;/ 创建黑白双方的游戏时间信息String blackTimeMessage = 无限制;String whiteTimeMessage = 无限制;/ 保存游戲最大時間(秒)int maxTime = 0;/ 保存黑白雙方 游戲時間int blackTime = 0;int whiteTime = 0;/ 保存黑白雙方游戲時間信息String blackMessage = 無限制;String whiteMessage = 無限制;/ 創建線程,用來建立倒計時Thread t = new Thread(this);public FiveChess() this.setTitle(五子棋);this.setSize(500, 500);this.setLocation(Toolkit.getDefaultToolkit().getScreenSize().width - 500) / 2,(Toolkit.getDefaultToolkit().getScreenSize().height - 500) / 2);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);/ 实例化背景图片try bgImage = ImageIO.read(new File(F: + File.separator + image+ File.separator + background.jpg); catch (IOException e) e.printStackTrace();/ 加入鼠标监听this.addMouseListener(this);t.start();/ 啟動線程t.suspend();/掛起線程this.repaint();/ 刷新屏幕public void paint(Graphics g) / 利用双缓冲技术,防止点击时屏幕闪烁。BufferedImage bi = new BufferedImage(500, 500,BufferedImage.TYPE_INT_ARGB);/ 在内在中创建一图片bi,Graphics g2 = bi.createGraphics();/ 创建bi的画笔g2.setColor(Color.BLACK);/ 创建bi画笔的颜色/ 绘制背景g2.drawImage(bgImage, 1, 20, this);/ 绘制棋盘for (int i = 0; i 19; i+) g2.drawLine(10, 70 + i * 20, 370, 70 + i * 20);g2.drawLine(10 + i * 20, 70, 10 + i * 20, 430);/ 繪制所有的棋子for (int i = 0; i 19; i+) for (int j = 0; j = 10 & x = 70 & y = 400 & x = 70 & y = 400 & x = 120 & y 0) / 設置的時間為0,則是無限制int temp = JOptionPane.showConfirmDialog(this,設置完成,是否開始新游戲?);if (temp = 0) allChess = new int1919;/ 1、将棋盘内的棋子清空isBlack = true;/ 2、将下一步设成黑方gameMessage = 黑方先行;/ 3、将下一步设成黑方/ 初始化黑白雙方的游戲時間blackTime = maxTime;whiteTime = maxTime;/ 初始化游戲時間信息blackTimeMessage = (blackTime / 3600) + :+ (blackTime % 3600 / 60) + :+ (blackTime % 3600 % 60);whiteTimeMessage = (whiteTime / 3600) + :+ (whiteTime % 3600 / 60) + :+ (whiteTime % 3600 % 60);t.resume();this.repaint();/ 刷新屏幕 catch (Exception exception) JOptionPane.showMessageDialog(this, 請輸入正確的時間。);if (x = 400 & x = 170 & y = 400 & x = 270 & y = 400 & x = 320 & y = 400 & x = 370 & y = 5) flag = true; else count = this.checkCount(0, 1, color);/ 縱向判斷if (count = 5) flag = true; else count = this.checkCount(1, -1, color);/ 斜向判斷(右上、左下)if (count = 5) flag = true; else count = this.checkCount(1, 1, color);/ 斜向判斷(左上、右下)if (count = 5) flag = true;return flag;private int checkCount(int changeX, int changeY, int color) int count = 1;int tempX = changeX;int tempY = changeY;while (x + changeX) = 0 & (y + changeY) = 0 & (x + changeX) = 18& (y + changeY) 0) changeY+; else changeY-;count+;changeX = tempX;changeY = tempY;while (x + changeX) = 0 & (y + changeY) = 0 & (x + changeX) = 18& (y + changeY) 0) changeY+; else changeY-;count+;return count;public void run() if (maxTime 0) while (true) if (isBlack) / 黑子blackTime-;if (blackTime = 0) JOptionPane.showMessageDialog(this, 黑方超時,游戲結束); else / 白子whiteTime-;if (whiteTime = 0) JOptionPane.showMessageDialog(this, 白方超時,游戲結束);blackTimeMessage = (blackTime / 3600) + :+ (blackTime % 3600 / 60) + :+ (blackTime % 3600 % 60);whiteTimeMessage = (whiteTime / 3600) + :+ (whiteTime % 3600 / 60) + :+ (whiteTime % 3600 % 60);this.repaint();try t.sleep(1000); catch (InterruptedException e) e.printStackTrace();public void mouseClicke
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025重庆市荣昌区人力资源和社会保障局招聘公益性岗位人员1人考试备考题库及答案解析
- 2026瑞昌国际控股校园招聘备考考试题库附答案解析
- 2026中铁北京局招聘备考考试题库附答案解析
- 基于知识图谱的问答-洞察及研究
- 哲学光芒专业引领
- 赞颂母爱之光
- 资本逻辑与性别差异-洞察及研究
- 人工智能导论第4版-课件 第8章-进化计算
- 手指谣大西瓜课件
- 统编版五年级语文上册新课标情境式命题真题卷(二)(含答案)
- 游戏室工作室合同范本
- T/CCMA 0172-2023移动式升降工作平台施工现场管理规程
- 粮食代烘干协议书
- 吊车装卸钢筋合同协议书
- 华为光芯片笔试题及答案
- 应急预案鲁西化工集团股份有限公司煤化工二分公司突发环境事件应急预案
- 监护协议书范本格式
- 《当代艺术流派》课件
- 循环水池清淤施工方案
- 2025年人力资源制度:【年终奖】员工超产奖金计算表
- 建设6英寸硅基功率半导体晶圆生产线项目资金申请报告
评论
0/150
提交评论