《java程序设计》课程设计-五子棋小游戏

《java程序设计》课程设计-五子棋小游戏

ID:6363405

大小:1.06 MB

页数:19页

时间:2018-01-11

《java程序设计》课程设计-五子棋小游戏_第1页
《java程序设计》课程设计-五子棋小游戏_第2页
《java程序设计》课程设计-五子棋小游戏_第3页
《java程序设计》课程设计-五子棋小游戏_第4页
《java程序设计》课程设计-五子棋小游戏_第5页
资源描述:

《《java程序设计》课程设计-五子棋小游戏》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《JAVA程序设计》课程设计题目:五子棋小游戏专业:信息与计算科学学号:070930205等姓名:指导教师:成绩:二00九年十二月九日1.课程设计研究背景及意义五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。然则看似很简单的一个小游戏,却对我们这组刚接触JAVA编程的成员来说却是一个不错的挑战,由于水平不限不能做成和电脑进行对战,也对于和其它电脑联机对战的模式不太清楚,故做成一个自己和自己对战的五子棋来考验我们的JAVA的技

2、术。2.课程设计题目描述和要求题目:五子棋小游戏游戏主要界面如下:游戏规则:1,棋子分为黑白两色,采用19×19棋盘。2,自己和自己对战,白子和黑子交替下,直到白子或黑子一方有五粒子连在一起,最先完成五粒子连在一起的一方为胜利的一方(可以是横、竖、斜、反斜)。3,允许悔棋,且允许一直悔到棋盘上没有棋子了,悔棋后允许恢复。当悔棋后下子了,则不允许再恢复了。4,有棋子的地方不允许再下棋子了5,落子后不能移动或拿掉。7,胜利后,棋局重新开始。主要功能:1,鼠标点棋盘上的任意一点,棋子会落入离这点最近的一个交叉点处。2,白子和黑子交替下。3,当下到一半时,可以保存进度。4,关闭再打开后

3、,可以重新读取进度再接着下。5,允许悔棋,且允许一直悔到棋盘上没有棋子了。6,悔棋后允许恢复。当悔棋后下子了,则不允许再恢复了。7,下棋的过程中,随时可以重新开始。8,有棋子的地方不允许再下子了。9,当悔到没有棋子的时候会弹出消息。10,任意一方胜利后会弹出消息11,恢复的步数超过了悔棋的步数的时候会弹出消息12,当任意一方胜利后,棋局重新开始。13,设有菜单栏,玩家可以点菜单来完成某种操作。14,当最小化后,能重新还原棋子(棋子不会消失)。15,点菜单栏的“帮助”—>“关于…”会显示这个课程设计小组的成员。3.课程设计报告内容3.1题目求解的理论依据及算法1,利用JAVA的S

4、wing组件可以实现游戏主界面的设置和菜单的添加。本次发开的小游戏界面比较简单,就一个面板外加一个菜单栏,在面板中绘图。菜单条中有三项分别为:文件(保存进度、读取进度、退出),编辑(悔棋、恢复、重来),帮助(关于…)。2,利用JAVA的输入输出类库和文件操作来完成文件的读写来完成保存进度和读取进度的功能。3,利用JAVA的事件处理来完成鼠标,菜单的事件处理。4,利用JAVA的类来生成棋子5,利用JAVA的类的继承和多态,自定义Mypanel来继承JPanel,在Mypanel中重写paintComponent()方法来实现画在面板中图形的重绘。6,利用JAVA的绘图类Graph

5、ics在面板中绘制棋盘,当点鼠标的时候绘制棋子,以及完成重绘。7,利用JAVA的动态数组ArrayList来存储棋子的坐标等等信息。8,建立一个19*19的矩阵来存储棋盘上黑白棋子的信息,初始值全为0,例如:当每12行7列下了一个黑子后,hflag[12][7]=1。如果是白子则bflag[12][7]=1下一个棋子便对胜负进行一次判断,当hflag或bflag有五个1连在一起的时候则判hflag和bflag对应的一方胜利。9,建立一个棋子的类,有属性:X:棋子在棋盘上的横坐标、Y:棋子在棋盘上的纵坐标num:这是玩家下的第几个棋子xflag:矩阵的行、yflag:矩阵的列当下

6、一个棋子后产生一个棋子实例,将棋子在棋盘的位置和这是下的第几个子以及第几行和第几列分别赋值给x,y,num,xflag,yflag。10,当num%2==0的时候画白子,当num%2==1的时候画黑子。3.2主要事件处理:1,鼠标事件处理(MouseListener):publicvoidmouseClicked(MouseEvente){intx=e.getX();/**棋子在棋盘上的横坐标*/inty=e.getY()/**棋子在棋盘上的纵坐标*/;intit=0,jt=0;/**矩阵的行和列*///绝对定位棋子即当点在交叉点附近,棋子会落在交叉点if(y>53){//下子

7、不会落到菜单栏上,菜单和标题共高53个像素for(inti=0;i<19;i++){for(intj=0;j<19;j++){if(pal.hen[i][j]-13<=x&&(pal.hen[i][j]+13)>=x&&(y-53>=pal.shu[i][j]-13)&&(y-53<=pal.shu[i][j]+13)){x=(int)pal.hen[i][j];y=(int)pal.shu[i][j];it=i;jt=j;}}}//当绝对定位交叉处没有棋子时画棋子if(bflag[it][

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。