基于JAVA语言的五子棋游戏设计.doc

上传人:laozhun 文档编号:2387441 上传时间:2023-02-17 格式:DOC 页数:29 大小:719.50KB
返回 下载 相关 举报
基于JAVA语言的五子棋游戏设计.doc_第1页
第1页 / 共29页
基于JAVA语言的五子棋游戏设计.doc_第2页
第2页 / 共29页
基于JAVA语言的五子棋游戏设计.doc_第3页
第3页 / 共29页
基于JAVA语言的五子棋游戏设计.doc_第4页
第4页 / 共29页
基于JAVA语言的五子棋游戏设计.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《基于JAVA语言的五子棋游戏设计.doc》由会员分享,可在线阅读,更多相关《基于JAVA语言的五子棋游戏设计.doc(29页珍藏版)》请在三一办公上搜索。

1、计算机科学与工程学院课程设计报告题目全称: 基于JAVA语言的五子棋游戏设计 学生学号: 姓名: 指导老师: 全 职称: 指导老师评语: 签字: 课程设计成绩:设计过程表现设计报告质量总分目 录第1章 课程设计的目的与要求31.1 课程设计目的31.2 课程设计的实验环境31.3 课程设计的预备知识31.4 课程设计要求3第2章 课程设计内容42.1课程设计题目42.2课程设计整体设计说明42.2.1课程设计内容52.2.2程序中所用类说明52.2.3程序中使用方法的说明52.2.4异常处理说明62.2.5程序运行效果及存在的问题72.3课程设计详细说明92.4程序代码和注释17第3章 课程设

2、计总结28第1章 课程设计的目的与要求1.1 课程设计目的JAVA程序设计是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。1.2 课程设计的实验环境硬件要求能运行Windows 9.X操作系统的微机系统。JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。1.3 课程设计的预备知识熟悉JAVA语言及ECLIP

3、SE开发工具。熟悉Swing编程,以及JFrame类学会Image IO,以及在内存中保存图片背景图片的绘制1.4 课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理

4、解和归纳能力的提高。第2章 课程设计内容2.1课程设计题目基于JAVA语言的五子棋游戏设计2.2课程设计整体设计说明 这次设计的是一个五子棋游戏,能实现的功能为1.黑白双方轮流落子,点击鼠标时在棋盘上显示棋子2.在黑白双方某一方获得胜利的时候会有获胜提示3.可设置每个人的走棋时间,在窗体下方显示倒计时,并可判超时判负4.有认输选项5.可以自动判断游戏是否结束 在游戏的过程中我们要测试程序是否能够真正达到五子棋的标准,那么我们就要根据下面的五子棋规则进行参照:1.五子棋专用盘为 19条横线19条坚线组成,交叉的每个点都可以行棋。 2.游戏分黑白两方,每局由规定黑方先行。黑方玩家移动鼠标在棋盘中点

5、击行棋。 3.当黑方行棋完毕,转由白方行棋。游戏结束后黑白方互换颜色。 胜负判定:某一方玩家最先在棋盘上形成横、竖、斜连成五连或长连。将获得胜利。 这次我使用的编程语言是JAVA语言。我采用的编译环境是Windows XP中文版+J2SDK1.6.0中文版+Eclipse3.2.1+ Eclipse3.2.12.2.1课程设计内容(一)安装编译环境(1)安装jdk1.6.0 运行j2sdk1.6.0.exe程序,并设置相应的环境变量CLASSPATH以及PATH (2)安装Eclipse 将下载的Eclipse压缩包eclipse-SDK-3.2.1-win32.zip解压到指定目录下(3)打

6、开eclipse,新建一个Java Project,名称为FiveChessProject,同时在src中新建一个类class,package:org.liky.game.test,name:text.再创建一个类FiveChessFrame,用于保存五子棋窗体,设置继承类Superclass:javax.swing.Jframe,Add:java.awt.event.Mouselistener(4)编写程序 (5)调试并运行2.2.2程序中所用类说明Test类,主要写了main()方法。FiveChessFrame为主体程序,实现了五子棋的游戏各个功能模块。2.2.3程序中使用方法的说明Jf

7、rame:用于创建窗体,并设置窗体的大小以及位置setVisible():设置窗体是否显示,布尔类型true则为显示setTitle():设置窗体名称,本程序中为“五子棋”setLocation():设置窗体在屏幕中的显示位置setSize():设置窗体的长宽setResizable():设置其大小可否改变setDefaultCloseOperation(Jframe.Exit_ON_Close):设置点击关闭按钮后程序是否也跟着结束JoptionPane:弹出信息框,确认框showMessageDialogue():显示消息对话框,主要用来提示信息showConfirmDialogue():

8、显示确认对话框,主要用来确认信息showInputDialogue():显示输入对话框,主要用来输入信息Mouselistener:取得用户点击鼠标的坐标,即鼠标监听器mouseClicked(): 监听鼠标点击事件mouseEntered():监听鼠标进入事件操作,只要鼠标一进入窗体范围内就会提示mouseExited():监听鼠标离开事件mousePressed():监听鼠标点下事件mouseRelased():监听鼠标松开事件MouseEvent中:getX():获得鼠标横向位置坐标getY(): 获得鼠标纵向坐标Graphics:绘制文字和图像drawstring():绘制字符串dra

9、wOval():绘制一个圆形(椭圆形)fillOval():绘制一个实心圆drawLine():绘制一条线drawRect():绘制一个矩形fillRect():绘制一个实心矩形drawImage():绘制一个已经存在的背景图片setColor():设置颜色setFont():设置绘制文字的字体2.2.4异常处理说明异常是异常事件的简称,它定义为在执行程序过程中出现了不正常的事件,破坏了正常的指令流。Java语言如果出现异常就要进行异常处理。在进行BufferedImage时我们会用到IO操作,需要进行异常处理,因为在读取内存的时候会存在读写不到文件的情况this.repaint();Stri

10、ng imagePath = ;try imagePath = System.getProperty(user.dir)+/src/background1.jpg ;bgImage = ImageIO.read(new File(imagePath.replaceAll(, /); catch (IOException e) e.printStackTrace();2.2.5 游戏运行的效果和不足横向可以判定游戏胜利:斜向可以判定游戏胜负:不足之处:此游戏各功能模块运行良好,但是由于精确度不够,落子略有偏差,但不影响整体游戏的运行。2.3课程设计详细设计说明开发游戏界面以及游戏功能的实现:1.

11、 新建一个类FiveChessFrame用于保存五子棋窗体2. 获取屏幕宽度并设置窗体的标题,大小,出现位置,大小不可变,关闭即结束程序,并显示窗体3. 加入背景图片,并要进行异常处理4. 将窗体显示在图片上5. 通过Paint显示字符串:游戏信息以及剩余时间6. 画棋盘:通过鼠标监听取得四个角的横纵坐标,再通过drawLine()进行画线,即棋盘,画出19*19的棋盘,每一个小格的宽度为20像素。在需要的位置画出黑色的定位点,通过点击鼠标取得坐标,并通过fillOval()进行绘制小圆点7. 黑子:一个实心黑圆8. 白子:一个空心黑圆加一个实心白圆9. 为了不导致重复落点,会进行提示此处已落

12、点10. 在未精确点击到横纵线交替的时候,需要判断距离哪个交点最近,此方法有特定算法 if (x = 10 & x = 70 & y = 5) flag = true; / 纵向的判断 int i2 = 1 ; int count2 = 1 ; * while (color = allChessx + 0y + i2) count2+; i2+; i2 = 1; * while (color = allChessx - 0y - i2) count2+; i2+; if * (count2 = 5) flag = true ; / 斜方向的判断(右上 + 左下) int i3 = 1 ; in

13、t * count3 = 1 ; while (color = allChessx + i3y - i3) count3+; * i3+; i3 = 1; while (color = allChessx - i3y + i3) count3+; * i3+; if (count3 = 5) flag = true ; / 斜方向的判断(右下 + 左上) int i4 = * 1 ; int count4 = 1 ; while (color = allChessx + i4y + i4) * count4+; i4+; i4 = 1; while (color = allChessx - i

14、4y - i4) * count4+; i4+; if (count4 = 5) flag = true ; */ 判断横向count = this.checkCount(1, 0, color);if (count = 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 / 判断右下、左上cou

15、nt = this.checkCount(1, 1, color);if (count = 5) flag = true;return flag;13. 提示信息设置:drawString():初始为黑方14. 处理屏幕闪烁:即双缓冲技术 该方法在手机游戏用较多,原因是手机游戏的内存相对较小,屏幕闪烁问题明显 通过BufferedImage类进行屏幕闪烁处理,在内存中创建BufferedImage类,并再创建一个画笔,将所有图片先缓冲到一个内存图片上再统一显示 public void paint(Graphics g) BufferedImage bi = new BufferedImage(

16、500, 500,BufferedImage.TYPE_INT_RGB);15.对控制功能的实现:开始游戏:重新开始新的游戏重新开始所要做 的操作: 把棋盘清空,allChess这个数组中全部数据归0.将游戏信息: 的显示改回到开始位置, 将下一步下棋的改为黑方 游戏设置:设置倒计时 int maxTime = 0; Thread t = new Thread(this); int blackTime = 0; int whiteTime = 0; String blackMessage = 无限制;String whiteMessage = 无限制; 并会有超时判定游戏说明:说明游戏规则和操

17、作 if (e.getX() = 400 & e.getX() = 170& e.getY() = 400 & e.getX() = 270& e.getY() = 400 & e.getX() = 320& e.getY() = 400 & e.getX() = 370& e.getY() = 10 & x = 70 & y = 400 & e.getX() = 70& e.getY() = 100) int result = JOptionPane.showConfirmDialog(this, 是否重新开始游戏?);if (result = 0) / 现在重新开始游戏/ 重新开始所要做的

18、操作: 1)把棋盘清空,allChess这个数组中全部数据归0./ 2) 将 游戏信息: 的显示改回到开始位置/ 3) 将下一步下棋的改为黑方for (int i = 0; i 19; i+) for (int j = 0; j 0) blackMessage = maxTime / 3600 + :+ (maxTime / 60 - maxTime / 3600 * 60) + :+ (maxTime - maxTime / 60 * 60);whiteMessage = maxTime / 3600 + :+ (maxTime / 60 - maxTime / 3600 * 60) + :

19、+ (maxTime - maxTime / 60 * 60);t.resume(); else blackMessage = 无限制;whiteMessage = 无限制;this.canPlay = true; this.repaint();/ 点击 游戏设置 按钮if (e.getX() = 400 & e.getX() = 120& e.getY() = 150) String input = JOptionPane.showInputDialog(请输入游戏的最大时间(单位:分钟),如果输入0,表示没有时间限制:);try maxTime = Integer.parseInt(inp

20、ut) * 60;if (maxTime 0) JOptionPane.showMessageDialog(this, 请输入正确信息,不允许输入负数!);if (maxTime = 0) int result = JOptionPane.showConfirmDialog(this,设置完成,是否重新开始游戏?);if (result = 0) for (int i = 0; i 19; i+) for (int j = 0; j 0) int result = JOptionPane.showConfirmDialog(this,设置完成,是否重新开始游戏?);if (result = 0

21、) for (int i = 0; i 19; i+) for (int j = 0; j = 400 & e.getX() = 170& e.getY() = 400 & e.getX() = 270& e.getY() = 400 & e.getX() = 320& e.getY() = 400 & e.getX() = 370& e.getY() = 400) JOptionPane.showMessageDialog(this, 游戏结束);System.exit(0);public void mouseReleased(MouseEvent arg0) public void pai

22、nt(Graphics g) / 双缓冲技术防止屏幕闪烁BufferedImage bi = new BufferedImage(500, 500,BufferedImage.TYPE_INT_RGB);Graphics g2 = bi.createGraphics();g2.setColor(Color.BLACK);/ 绘制背景g2.drawImage(bgImage, 1, 20, this);/ 输出标题信息g2.setFont(new Font(黑体, Font.BOLD, 20);g2.drawString(游戏信息: + message, 130, 60);/ 输出时间信息g2.setFont(new Font(宋体, 0, 14);g2.drawString(黑方时间: + blackMessage, 30, 470);g2.drawString(白方时间: + whiteMessage, 260, 470);/ 绘制棋盘for (int i = 0; i 19; i+) g2.drawLine(10, 70 + 20 * i, 370, 70 + 20 * i);g2.drawLine(10 + 20 * i, 70, 10 + 20 * i, 430);./ 标注点位g2.fillOval(68, 128,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号