ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:109.03KB ,
资源ID:30402111      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30402111.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(五子棋Java课程设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

五子棋Java课程设计.docx

1、五子棋Java课程设计面向对象程序设计课程设计报告实验时间: 2010年10月26日 实验班级: * 实验报告总份(片)数: 1 份(片)实验指导老师: * * 设计小组湖南省吉首市吉首大学课程设计报告简单的游戏五子棋小组成员(姓名、学号):*(组长) * * *一、实验分工姓名职责*编写程序、修改程序、设计流程图、设计实验报告*修改程序、分析运行结果、搜索相关资料*修改程序、分析运行结果、整理实验报告二、开发环境(实验编译以及测试环境)硬件环境:CPU:Intel 奔腾双核E5200 主频 2.5GHz内存:2G软件环境:操作系统:Windows 7编程环境 JDK7.0开发工具:Eclip

2、se SDK三、使用环境(用户运行环境)硬件环境:CPU主频在500MHZ以上,内存在128M以上软件环境:JAVA运行环境 + Windows XP或Windows 2000 以上操作系统第一章 总体设计1.1设计的目的面向对象程序设计课程设计是计算机科学与技术专业集中实践性环节之一,是学习完面向对象程序设计课程后进行的一次全面的综合练习。本课程设计主要目的在于加深学生对面向对象基础理论和基本知识的理解,掌握面向对象程序设计的基本方法,进一步使学生综合运用所学知识和增强实际动手能力。通过课程设计,学生在下述各方面的能力应该得到锻炼:1. 通过本次设计,实现对本学期内容的回顾与综合运用,包括类

3、的建立,用类创建对象,方法的调用,图形组件的使用方法,图形界面的布局形式,事件处理机制,文件对话框的使用,文件操作的基本方法,数据读写的基本用法等。2. 对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 3. 掌握自顶而下的设计方法,将大问题进行模块化、对象化,领会面向对象程序设计的方法。4. 熟练掌握JAVA语言(C#)的基本语法,灵活运用各种预定义类、线程和事件处理。1.2本系统的主要功能 本系统可以实现电脑可以自动下棋,扫描整个棋盘记录连在一起的黑白棋子数,实现人与电脑有次序的下棋,判断人与电脑的胜负,为电脑下棋提供帮助1.3系统包含的类及类之间的关系。本系统共包6个J

4、ava源文件。类之间的关系如图1-1所示。1.4 Java源文件及其功能表1-1 java源文件及其功能序号文件名主要功能备注1Chess本程序的主函数初始化棋盘2Autoplay实现电脑可以自动下棋分为8种情况3Scan扫描整个棋盘记录连在一起的黑白棋子数为判断胜负服务4Sort实现人与电脑有次序的下棋黑棋白棋有序的下5Judge判断人与电脑的胜负可以在文本框中显示胜负结果6Evaluate电脑估计为电脑下棋提供帮助1.5 项目构建思路此程序旨在打造一个小型五子棋娱乐游戏,经过认真分析和探索。终于,在大家的共同努力之下,完成了这个小型五子棋游戏。游戏编辑思路,五子棋是一种互动性的益智游戏。需

5、要棋盘、棋子、棋手、裁判。首先,我们绘制一个五子棋棋盘,关键代码如下:/绘制棋盘函数 public void paint(Graphics g) for (int i=40;i=400;i=i+20) g.drawLine(40,i,400,i); /绘制棋盘 行 for(int j=40;j=400;j=j+20) g.drawLine(j,40,j,400); /绘制棋盘 列 g.fillOval(97,97,6,6); /使用当前颜色填充外接指定矩形框的椭圆 g.fillOval(337,97,6,6); g.fillOval(97,337,6,6); g.fillOval(337,33

6、7,6,6); g.fillOval(217,217,6,6); 其次,我们生成两种颜色不一样的棋子,关键代码如下:黑色棋子代码如下:/ChessPoint_black 类 继承 Canvas类class ChessPoint_black extends Canvas implements MouseListener ChessPad chesspad=null; ChessPoint_black(ChessPad p) setSize(20,20); /设置棋盘每一小格的长宽 addMouseListener(this); chesspad=p; public void paint(Grap

7、hics g) g.setColor(Color.black); /设置黑色棋子的颜色 g.fillOval(0,0,18,18); /使用黑色填充椭圆棋子 白色棋子代码如下:class ChessPoint_white extends Canvas implements MouseListener ChessPad chesspad=null; ChessPoint_white(ChessPad p) setSize(20,20); addMouseListener(this); chesspad=p; public void paint(Graphics g) /绘制棋子的颜色 g.set

8、Color(Color.white);/设置为白色 g.fillOval(0,0,18,18);/填充白子 再次,为实现双方行棋,我们实现了电脑自动下棋的函数,一共分为8种情况,关键代码如下:class AutoPlay /AutoPlay类实现电脑可以自动下棋 int x,y; /X统计玩家的连起来的棋子数 /Y电脑玩家的连起来的棋子数 void autoPlay(int chesspad,int a,int b) int randomNumber=(int)(Math.random()*8)+1; /获取一个随机数 switch(randomNumber) /分情况实现电脑自动下棋 cas

9、e(1): /通过a,b的值 执行不同的运算,最后返回不同的/值。达到执行不同的操作。if(chesspada-1b-1=0) x=a-1;y=b-1; if(chesspada-1b+1=0) x=a-1;y=b+1; else if(chesspada-2b-2=0) x=a-2;y=b-2; else x=a-3;y=b-3; break; case(2): if(chesspada-1b=0) x=a-1;y=b; else if(chesspada-2b=0) x=a-2;y=b; else x=a-3;y=b; break; case(3): if(chesspada-1b+1=0

10、) x=a-1;y=b+1; else if(chesspada-2b+2=0) x=a-2;y=b+2; else x=a-3;y=b+3; break; case(4): if(chesspadab+1=0) x=a;y=b+1; else if(chesspadab+2=0) x=a;y=b+2; else x=a;y=b+3; break; case(5): if(chesspada+1b+1=0) x=a+1;y=b+1; else if(chesspada+2b+2=0) x=a+2;y=b+2; else x=a+3;y=b+3; break; case(6): if(chess

11、pada+1b=0) x=a+1;y=b; else if(chesspada+2b=0) x=a+2;y=b; else x=a+3;y=b; break; case(7): if(chesspada+1b-1=0) x=a+1;y=b-1; else if(chesspada+2b-2=0) x=a+2;y=b-2; else x=a+3;y=b-3; break; case(8): if(chesspadab-1=0) x=a;y=b-1; else if(chesspadab-2=0) x=a;y=b-2; elsex=a;y=b+3; break; 第四,为规范双方行棋的先后顺序,我

12、们实现了一个判断函数,关键代码如下:class Sort /sort类 实现人与电脑有次序的下棋 public void sort(int shape) int temp; for(int i=0;i19;i+) for(int j=0;j19;j+) for(int h=1;h=h;w-) if(shapeijw-1shapeijw) /如果前者小于后者,则交换 temp=shapeijw-1; shapeijw-1=shapeijw; shapeijw=temp; 第五,脑只是简单的执行代码,没有智能思考的能力。在行棋之前,他需要对整个棋盘上的棋子做一个判断,然后决定该怎么行棋,关键代码如

13、下:class Evaluate /Evaluate类 int max_x,max_y,max; public void evaluate(int shape) int i=0,j=0; for(i=0;i19;i+) for(j=0;j19;j+) switch(shapeij0) /电脑根据传进来的三维数组决定该怎么行棋, case 5: shapeij4=200; break; case 4: switch(shapeij1) case 4: shapeij4=150+shapeij2+ shapeij3; break; case 3: shapeij4=100+ shapeij2+ s

14、hapeij3; break; default: shapeij4=50+ shapeij2+ shapeij3; break; case 3: switch(shapeij1) case 3: shapeij4=75+ shapeij2+ shapeij3; break; default: shapeij4=20+ shapeij2+ shapeij3; break; case 2: shapeij4=10+shapeij1 +shapeij2 +shapeij3; break; case 1: shapeij4=shapeij0+shapeij1 +shapeij2 +shapeij3;

15、default : shapeij4=0; int x=0,y=0; max=0; for(x=0;x19;x+) for(y=0;y19;y+) if(maxshapexy4) max=shapexy4; max_x=x; max_y=y; 第六,在双方行棋后,我们需要判断那一方赢。裁判的功能代码如下/判断人与电脑的胜负class Judge static boolean judge(int a,int color) int i,j,flag; for(i=0;i19;i+) /行 flag=0; for(j=0;j19;j+)/列 if(aij=color) flag+; /棋子计数器 i

16、f (flag=5) /如果棋子数等于5 return true; /返回true else flag=0; /返回false for(j=0;j19;j+) flag=0; /棋子计数器 for(i=0;i19;i+) if(aij=color) /每一列的棋子颜色一样 flag+; if(flag=5) /棋子数为5 return true; /返回true 否则返回true else flag=0; for(j=4;j19;j+) flag=0; int m=j; for(i=0;i=0;j-) flag=0; int m=j; for(i=0;i=0;i-) flag=0; int n

17、=i; for(j=0;j=0;j-) flag=0; int m=j; for(i=18;i=j;i-) if(aim+=color) flag+; if(flag=5) return true; else flag=0; return false; 最后,我们最终的程序是急于可视化的,所以,需要容器及组建来实现,关键代码如下:class ChessPad extends Panel implements MouseListener,ActionListener /创建棋盘 int array=new int1919;/创建二维数组,生成棋盘 Sort sort=new Sort(); in

18、t i=0; /控制棋子颜色 int x=-1,y=-1,棋子颜色=1; Button button=new Button(重新开局); /确定按钮 TextField text_1=new TextField(请黑棋下子), /创建文本组件 并初始化第一个 text_2=new TextField(), text_3=new TextField(); ChessPad() /ChessPad函数的构造函数 setSize(440,440); / setLayout(null); setBackground(Color.pink); /设置背景为粉色 addMouseListener(this

19、); add(button);/向组件添加指定的重新开局菜单 button.setBounds(10,5,60,26); /移动组件并调整其大小。由 x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。 button.addActionListener(this); /添加指定的操作侦听器,以接收来自此按钮的操作事件 add(text_1); text_1.setBounds(90,5,90,24); add(text_2); text_2.setBounds(290,5,90,24); add(text_3); text_3.setBounds(200,5,80,

20、24); for(int i=0;i19;i+) for(int j=0;j19;j+) arrayij=0; /初始化数组为0 for(int i=0;i19;i+) for(int j=0;j19;j+) for(int h=0;h5;h+) scanp.shapeijh=0; scanc.shapeijh=0; /初始化三维数组为0 text_1.setEditable(false); text_2.setEditable(false); /设置文本组件为不可编辑 第二章 模块功能介绍2.1主类Chess(1)成员变量见表2-1表2-1 主要成员变量(属性)成员变量描述变量类型名称控制棋

21、子颜色inti重新开局ButtonButton请黑棋下子TextFieldtext_1请白棋下子TextFieldtext_2这是第+i+步TextFieldtext_3(2)方法见表2-2表2-2 主要方法方法名称返回类型功能备注ChessPad()初始化棋盘设置棋盘颜色,ChessPad()Void paint (Graphics g)对棋子等图像进行初始化设置棋子大小,颜色等Void paint (Graphics g)Public void mousePressed(MouseEvent e)鼠标的实践监听单击实践public void mousePressed(MouseEvent

22、e)public void paint(Graphics g)画出图像控制图像的大小范围public void paint(Graphics g)public void mousePressed(MouseEvent e)处理按下鼠标的事件选中下棋的位置public void mousePressed(MouseEvent e)public void mouseReleased(MouseEvent e)处理鼠标离开的事件本步下棋结束public void mouseReleased(MouseEvent e)public void mouseExited(MouseEvent e)处理鼠标离

23、开棋盘时鼠标离开组件不实现任何事件public void mouseExited(MouseEvent e)public void mouseClicked(MouseEvent e)处理发生单击的事件实现下棋以及重新开始游戏public void mouseClicked(MouseEvent e)(3)源代码见文件Chess.java中的公共类 Chess2.2类Autoplay(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称统计玩家的连起来的棋子数intX电脑玩家的连起来的棋子数IntY(2)方法见表2-4表2-4 主要方法方法名功能备注void autoPlay(

24、int chesspad,int a,int b)分情况实现电脑自动下棋使用switch语句分为8种情况来下棋(3)源代码见文件Chess.java中的Autoplay类2.3类Scan(1)成员变量见表2.5表2-5 Scan成员变量描述变量类型名称统计棋盘种五个连起来的棋子数数组int shape控制行数inti控制列数intj(2)方法见表2.6表2-6 Scan方法名功能备注 void scan(int chesspad,int colour)判断棋盘上连在一起的黑白棋子个数。(3)源代码见文件Chess.java中的Scan类第三章 功能测试及运行效果3.1系统主界面图3-1初始化棋

25、盘效果,玩家为黑棋。图3-2可以统计下棋步数,与下棋的位置。图3-3可以实现胜负的判断,并终止游戏。3.2参考文献面向对象程序设计Java(第二版).西安电子科技大学出版社2006【教材】张孝祥. Java就业培训教程M. 北京:清华大学出版社,2003陈国君等编著.Java2程序设计基础.北京:清华大学出版社,20063.3工作总结一个编程语言最强大的地方不是它是容易学,或者难学,而是它拥有一个强大的库。JAVA是一个完全面向对象的语言,JAVA的命名规则是很容易让人接受的。而且容易被编程人员记住。经过实践训练,对JAVA的综合应用能力有了较大的提高,另外对JAVA的特点有了更深层次的认识。这次实践中使用的代码虽然不长,但类与类之间也有很强的逻辑关系,这就是面向对象语言的最大优势,这样可使我们更轻松的运用JAVA。经过努力,查阅相关资料,终于完成该课题,虽然效果不是很好,但亲手做过之后还是很有成就感的。通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过在老师和同学们的帮助和自己的思考下还是很好的完成了。这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。它还让我学会了在网上

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1