版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中 原 工学 院二级课题实训任务书2011年 6 月 13 日学生姓名赵文娟学号201007132106专 业软件技术班级编码 J101课题名称单机版五子棋游戏课题来源二级实训模拟课题指导教师郭彦宾专业计算机科学与技术职称集成项目经理课题说明:五子棋是一种增强思维能力,提高智力,有助于修身养性的游戏,这种娱乐方式既简单易学又具有深奥的技巧。在经过不断地发展后,五子棋已经成为棋盘娱乐的一个重要的组成部分。作为一个 Java 语言的学习者,正好将学过的 Java 语言的各种知识综合起来,用 Elipse 集成开发工具编写一个单机版的五子棋小游戏,既是对自己学过的知识的一种检验,也能巩固对于 Jav
2、a语言知识的学习。承担的任务:1 总体进度;2 编写代码;3 代码测试;I中原工学院二级课题实训任务书工作进度安排:任务名称总体进度整理资料编写代码代码测试整理文档2011年 6 月 14日时间轴 2011-6-13至 2011-6-28(除周日)审负责人核人12345678910111230%62%8%李雨桐郭朱芳芳彦赵文娟宾朱芳芳李雨桐赵文娟朱芳芳李雨桐指导教师签字:2011年6 月 28日实训单位意见签章:年月日学院意见签章:年月日II中原工学院二 级 课题实训评审表学号201007132106 姓名赵文娟专业软件技术班级编码 J101题目单机版五子棋游戏指导教师评语成绩(百分制):指导
3、教师签名:2011 年6 月日III软件学院二级课题实训报告课题名称:单机版五子棋游戏专业:软件技术班级:编码 J101学号:201007132106学生姓名:赵文娟指导教师:郭彦宾2011年6月28日IV摘要五子棋是一种开发智力的趣味性小游戏,在我国有着悠久的历史。随着IT 技术的发展,五子棋游戏已经被搬到了计算机里大众娱乐。 五子棋不仅能增强思维能力, 提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征,又有古典哲学的高深学问;它既有简单易学的特征,为广大群众需哦喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化渊源流长, 具有东方的神秘和西方的直观。 它是中西文化
4、的交流电,是古今哲理的结晶。通过一系列的变化,使五子棋这一简单的游戏系统化、规范化,最终成为今天的一种国际化比赛。本程序是采用 Java 作为开发语言。 Java 语言作为一种面向对象的编程语言,易学易用,对学习者掌握技能,开拓思维又很大的帮助。在系统的学习了 Java 语言之后,用它来做一些小程序,将学过的 Java 语言中的各种技术综合起来编写一个单机版的五子棋小游戏,以巩固 Java 语言的学习。报告结合五子棋这个游戏的特点,将阐述单机版五子棋的算法及设计。单机版五子棋是两个人通过交替使用同一台计算机来进行下棋。所有的操作都必须在同一台计算机上来完成。关键词:单机版五子棋游戏事件监听器数
5、组判断V目录摘 要 .V第 1 章 项目分析 .11.1问题描述 .11.2技术分析 .11.3工程进度计划 .1第 2 章 系统分析与设计 .22.1系统分析 .22.1.1参与者 .22.1.2用例及用例规约 .22.2系统设计 .22.2.1顺序图 .32.2.2类图 .43.1功能模块 .43.1.1活动图 .93.1.2界面 .103.1.3代码 .103.1.4测试用例 .16第 4 章 结束语 .20附录 A: 主要源程序 .22赵文娟:单机版五子棋游戏第1章项目分析单机版五子棋游戏项目要实现其功能,必须有棋盘,棋子,“新游戏”,“黑棋”,“白棋”按钮,以及添加按钮的事件监听,判
6、断输赢等。1.1 问题描述此项目包括用 Graphics 类绘制五子棋的棋盘和棋子,刷新棋盘,用Button 添加按钮,用 ActionListener 事件监听器,判断输赢等问题。1.2 技术分析此单机版五子棋游戏采用Java作为开发语言,用elipse 集成开发工具编写的小程序。用 awt 包和 applet 包作为开发使用的基础包。1.3 工程进度计划1,首先对课题进行一个系统的分析和规划;计划用时:半天。2,然后开始整理和课题有关的资料和信息等等;计划用时: 12 天。3,接下来进行初步的代码编写;计划用时: 12 天 .4,完善编写的代码,然后进行代码测试,这个阶段最为重要,分析已写
7、代码的可运行度,再进一步的对代码修改,运行;计划用时: 35 天5,如果代码成功并且简捷易懂并且方便,则开始整理文档;计划用时: 12 天。6,最后进行实践报告。计划用时: 12 天。总天时间段进度为: 2011 年 6 月 13 日 2011 年 6 月 28 日1赵文娟:单机版五子棋游戏第 2 章 系统分析与设计单机版五子棋游戏采用Java语言设计,用 awt 和 applet 来处理棋盘和棋子的绘制、刷新,用数组来保存棋盘,最后判断输赢。2.1 系统分析游戏的基本步骤为:a.开始游戏;b.用鼠标点击在棋盘中下棋;c.判断输赢,若继续玩游戏则重复b;d.游戏结束。2.1.1 参与者小组成员
8、:朱芳芳,李雨桐,赵文娟以及指导老师2.1.2 用例及用例规约用例:五子棋用例规约:五子棋是黑白双方的竞技活动。一方先下,交替执行,只要有一方的棋子连成一线,即为赢。2.2 系统设计采用 Graphics 类来绘制棋盘和棋子,数组来保存棋盘,继而用init() 方法来刷新棋盘 ,用 Button 来定义按钮“新游戏” 、“黑棋”、“白棋”。用 ActionListener 来监听 Button“新游戏”、“黑棋”、“白棋”。用 mouseDown 是鼠标点击,在棋盘中下棋。最后用 panduan()方法,利用数学知识来判断输赢。2赵文娟:单机版五子棋游戏2.2.1 顺序图图 2.1.1五子棋顺
9、序图3赵文娟:单机版五子棋游戏2.2.2 类图图 2.1.2 五子棋类图第 3 章 实现与测试经过一系列的分析和设计,五子棋代码的编写已经完成,开始进入代码的实现与测试阶段,实现五子棋的功能。3.1 功能模块首先,绘制棋盘,先绘制一个确定的矩形,然后在矩形中画线,形成一个15*15 的棋盘:g.setColor(Color.lightGray);g.fill3DRect(0, 0, size * 30, size * 30, true);g.setColor(Color.black);for (int i = 1; i < 15; i+)g.drawLine(30, i * 30, 28
10、 * size, i * 30 );for (int i = 1; i < 15; i+)g.drawLine(i * 30 , 30, i *30 , 28 * size);其次,用数组保存棋盘,用init() 方法来刷新棋盘:public void init()4赵文娟:单机版五子棋游戏for(int i = 0; i < size; i+)for(int j = 0; j < size;j+)qipanij=0;然后,对 Button 按钮“新游戏”、“黑棋”、“白棋”添加监听器 ,利用 ActionListener 来监听:black.addActionListene
11、r(new ActionListener()public void actionPerformed(ActionEvent e) / TODO 自动生成方法存根if(e.getSource()=black)temp = true;);white.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) / TODO 自动生成方法存根if(e.getSource()=white)temp = false;);button.addActionListener(new ActionListener
12、()public void actionPerformed(ActionEvent e) / TODO 自动生成方法存根if(e.getSource()=button)init(););在后来,监听鼠标在棋盘中的位置,以及下棋子:public boolean mouseDown(Event e, int x, int y) if (x % 30 < 15&&x>14)dx = x - x % 30 - size;elsedx = x - x % 30 + size;if (y % 30 < 15&&y>14)5赵文娟:单机版五子棋游戏dy
13、 = y - y % 30 - size;elsedy = y - y %30 + size;int zx = dx + size;int zy = dy + size;/下棋子if (qipanzx / 30zy / 30 = 0) if (temp = true) / 每下一个棋子改变一下颜色qipanzx / 30zy / 30 = 1;/1代表黑棋temp = false;else qipanzx / 30zy / 30 = 2;/2代表白棋temp = true;repaint();return true;最后,按照水平方向,竖直方向,左上到右下方向,右上到左下方向来判断输赢:pub
14、lic int panduan()/ 水平方向for (int i = 0; i < 15; i+)for (int j = 0; j < 15; j+) int hq = 0;int bq = 0;for (int n = 0; n < 5; n+) if (j + n < 15) if (qipanij + n = 1) /判断水平方向hq+;if (qipanij + n = 2) bq+;if (hq = 5)return 1;if (bq = 5)return 2;6赵文娟:单机版五子棋游戏/ 垂直方向for (int i = 0; i < 15; i+
15、) for (int j = 0; j < 15; j+) int hq = 0;int bq = 0;for (int n = 0; n < 5; n+) if (i + n < 15) if (qipani + nj = 1)/判断垂直方向hq+;if (qipani + nj = 2) bq+;if (hq = 5)return 1;if (bq = 5)return 2;/ 斜方向 左上 到 右下 (即 方向)for (int i = 0; i < 15; i+) for (int j = 0; j < 15; j+) int hq = 0;int bq
16、= 0;for (int n = 0; n < 5; n+) if (i + n < 15 && j + n < 15) if (qipani + nj + n = 1) hq+;if (qipani + nj + n = 2)bq+;if (hq = 5)return 1;if (bq = 5)7赵文娟:单机版五子棋游戏return 2;/ 斜方向 右上 到 左下 (即 /方向)for (int i = 0; i < 15; i+) for (int j = 0; j < 15; j+) int hq = 0;int bq = 0;for (in
17、t n = 0; n < 5; n+) if (i + n < 15 && j - n > 0) if (qipani + nj - n = 1) hq+;if (qipani + nj - n = 2) bq+;if (hq = 5)return 1;if (bq = 5)return 2;return 0;8赵文娟:单机版五子棋游戏3.1.1 活动图图 3.1.1五子棋活动图9赵文娟:单机版五子棋游戏3.1.2 界面图 3.1.2五子棋界面3.1.3 代码import java.applet.Applet;import java.awt.Button;im
18、port java.awt.Color;import java.awt.Event;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class 五子棋extends Appletprivate int size = 15;10赵文娟:单机版五子棋游戏private int dx;private int dy;private boolean temp = true;private Button button = new Button(&qu
19、ot;新游戏 ");private Button black = new Button ("黑棋 ");private Button white = new Button ("白棋 ");private int qipan =new intsizesize;/刷新棋盘public void init()for(int i = 0; i < size; i+)for(int j = 0; j < size;j+)qipanij=0;/ 添加按钮 add(button); add(black); add(white);/ 对“新游戏”
20、、“黑棋”、“白棋”按钮添加监听器black.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) / TODO 自动生成方法存根if(e.getSource()=black)temp = true;);white.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) / TODO 自动生成方法存根if(e.getSource()=white)temp = false;);butt
21、on.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) / TODO 自动生成方法存根if(e.getSource()=button)11赵文娟:单机版五子棋游戏init(););repaint();/限制下棋的范围,并监听鼠标在棋盘中点击的位置public boolean mouseDown(Event e, int x, int y) if (x % 30 < 15&&x>14)dx = x - x % 30 - size;elsedx = x - x
22、 % 30 + size;if (y % 30 < 15&&y>14)dy = y - y % 30 - size;elsedy = y - y %30 + size;int zx = dx + size;int zy = dy + size;/下棋子if (qipanzx / 30zy / 30 = 0) if (temp = true) / 每下一个棋子改变一下颜色qipanzx / 30zy / 30 = 1;/1代表黑棋temp = false;else qipanzx / 30zy / 30 = 2;/2代表白棋temp = true;repaint();
23、return true;/用 Graphics 类绘制棋盘,棋子public void paint(Graphics g)/ 背景颜色g.setColor(Color.lightGray);/绘制一个长宽确定的矩形g.fill3DRect(0, 0, size * 30, size * 30, true);/ 绘制棋盘( drawLine(int x1,int y1,int x2,int y2)中在( x1,y1) 和( x2,y2)/ 之间画一条直线)g.setColor(Color.black);for (int i = 1; i < 15; i+)12赵文娟:单机版五子棋游戏g.d
24、rawLine(30, i * 30, 28 * size, i * 30 );for (int i = 1; i < 15; i+)g.drawLine(i * 30 , 30, i *30 , 28 * size);/ 绘制棋子(用fillOval ( int x,int y,int width,int height)绘制棋子)for (int i = 0; i < 15; i+)for (int j = 0; j < 15; j+) if (qipanij = 1) g.setColor(Color.black); /1 代表黑色g.fillOval(i *30 - s
25、ize, j * 30 - size, 30, 30);if (qipanij = 2) g.setColor(Color.white);g.fillOval(i * 30 - size, j * 30 - size, 30, 30);/ 画出棋子并填充为白色/ 判断输赢int panduan = panduan(); if (panduan = 1) g.setColor(Color.red);g.drawString(" 黑棋胜! ", 450, 100);try /游戏结束后,等待2000 毫秒后可从新开始Thread.sleep(2000);catch (Inter
26、ruptedException e) e.printStackTrace();/判断后返回init ()重新开局init();else if (panduan = 2) g.setColor(Color.red);g.drawString(" 白棋胜! ", 450, 100);try Thread.sleep(2000);catch (InterruptedException e) e.printStackTrace();13赵文娟:单机版五子棋游戏init();public int panduan()/ 水平方向for (int i = 0; i < 15; i+
27、)for (int j = 0; j < 15; j+) int hq = 0;int bq = 0;for (int n = 0; n < 5; n+) if (j + n < 15) if (qipanij + n = 1) /判断水平方向hq+;if (qipanij + n = 2) bq+;if (hq = 5)return 1;if (bq = 5)return 2;/ 垂直方向for (int i = 0; i < 15; i+) for (int j = 0; j < 15; j+) int hq = 0;int bq = 0;for (int n
28、 = 0; n < 5; n+) if (i + n < 15) if (qipani + nj = 1)/判断垂直方向hq+;if (qipani + nj = 2) bq+;if (hq = 5)14赵文娟:单机版五子棋游戏return 1;if (bq = 5)return 2;/ 斜方向 左上 到 右下 (即 方向)for (int i = 0; i < 15; i+) for (int j = 0; j < 15; j+) int hq = 0;int bq = 0;for (int n = 0; n < 5; n+) if (i + n < 15
29、 && j + n < 15) if (qipani + nj + n = 1) hq+;if (qipani + nj + n = 2)bq+;if (hq = 5)return 1;if (bq = 5)return 2;/ 斜方向 右上 到 左下 (即 /方向)for (int i = 0; i < 15; i+) for (int j = 0; j < 15; j+) int hq = 0;int bq = 0;for (int n = 0; n < 5; n+) if (i + n < 15 && j - n > 0
30、) if (qipani + nj - n = 1) hq+;if (qipani + nj - n = 2) bq+;15赵文娟:单机版五子棋游戏if (hq = 5)return 1;if (bq = 5)return 2;return 0;3.1.4 测试用例水平方向:图 3.1.3 五子棋测试用例水平方向竖直方向:16赵文娟:单机版五子棋游戏图 3.1.4 五子棋测试用例竖直方向17赵文娟:单机版五子棋游戏斜方向右上到左下:图 3.1.5五子棋测试用例斜方向右上到左下18赵文娟:单机版五子棋游戏斜方向左上到右下:图 3.1.6 五子棋用例测试斜方向左上到右下19赵文娟:单机版五子棋游戏
31、第4章结束语经过长达三个星期的实训,因为有了团队的合作,有了老师的热心指导,有了同学的帮助,我觉得实训很好完成。在实训完成之际,我要感谢所有给了我莫大支持和指导建议的老师和同学。在整个实训的过程中,总结其中的经验和教训,有以下几点体会:1. 在系统分析之前,要准备充分,在设计阶段要做的尽可能详细、全面,以免在以后的阶段中返工,浪费时间和精力;2. 要做好备份,防止文件的丢失;3. 有问题多请教老师或者同学,只有他们的帮助才可以做到尽善尽美等。回顾五子棋的整个设计过程,我觉得我的Java 语言的知识不够融汇贯通,有些知识寄的也不清楚,所以在以后的学习中要加强训练,熟练基础知识。而且游戏行业的正在
32、迅速的发展,作为一种简单的休闲游戏五子棋也在不断地改善前进,所以我们要时时刻刻的学习 Java 语言,和同学、老师共同进步。在遇到问题时,向老师请教或者和同学讨论并且查阅课本。我们要熟悉自己的优势和劣势和别人的优势,也就是所谓的“知己知彼,才能百战百胜”。总之,这次实训教会了我在以后的生活和学习中要认真仔细,教会我做人的道理,和同学互相帮助,团结友爱。在这里,更要感谢老师的认真辅导和支持。20赵文娟:单机版五子棋游戏参考文献1 Y .Daniel Liang. Java 语言程序设计基础篇 M机械工业出版社,2008.62 Y .Daniel Liang. Java 语言程序设计进阶篇 M机械
33、工业出版社,2008.621赵文娟:单机版五子棋游戏附录 A: 主要源程序import java.applet.Applet;import java.awt.Button;import java.awt.Color;import java.awt.Event;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class 五子棋extends Appletprivate int size = 15;private int dx;private
34、 int dy;private boolean temp = true;/定义“新游戏” 、“黑棋”、“白棋”按钮private Button button = new Button("新游戏 ");private Button black = new Button ("黑棋 ");private Button white = new Button ("白棋 ");/定义二维数组private int qipan =new intsizesize;/刷新棋盘public void init()for(int i = 0; i < size; i+)for(int j = 0; j < size;j+)qip
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/PASPSF 002-2024校家社协同育人体系下科学教育实施指南
- 建筑设计师建筑设计方案与实施效果绩效考评表
- 家电维修服务响应时间考核表
- 网络技术工程师系统故障响应与处理能力绩效评定表
- 2026届辽宁省铁岭市昌图县中考数学四模试卷含解析
- 妇产科医院环境清洁与消毒知识考试试题及答案
- 运营专员物流配送及时率考核表
- 技术研发团队年度KPI绩效考评表
- 乙苯装置操作工安全文明测试考核试卷含答案
- 玻璃釉印工常识水平考核试卷含答案
- 2026年专业技术人员继续教育公需科目-智慧城市历年参考题库含答案解析
- 湖南省2027届高三九校联盟第一次联考语文试卷(含答案及解析)
- 2026年广东中考英语考试大纲
- 2026年上海高考英语(秋考)完整真题(考生回忆版)+ 参考答案与解析
- 高中120个文言实词+18个文言虚词
- 广东广州市2025-2026学年九年级上学期第一次月考化学试题(含答案)
- 初中几何基础习题集含解答
- 消除母婴三病培训课件
- 临床实验(检验、病理)标本采集、储存、运送制度
- 酒店管理心理学
- 司炉工培训课件下载
评论
0/150
提交评论