“java程序设计”——“五子棋”综合实验报告

“java程序设计”——“五子棋”综合实验报告

ID:18839292

大小:83.64 KB

页数:64页

时间:2018-09-25

“java程序设计”——“五子棋”综合实验报告_第1页
“java程序设计”——“五子棋”综合实验报告_第2页
“java程序设计”——“五子棋”综合实验报告_第3页
“java程序设计”——“五子棋”综合实验报告_第4页
“java程序设计”——“五子棋”综合实验报告_第5页
资源描述:

《“java程序设计”——“五子棋”综合实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、“Java程序设计”综合实验报告一、前言1、项目背景通过五子棋这个课程设计。可以让我们更加熟悉Java程序设计这门课程,加强对Eclipse这个软件的使用,加深对Java语言的掌握,提高编程水平。同时培养能力,为将来的工作打下坚实的基础。2、目标和意义目标:锻炼我们的能力,提高组中每一个人对Java语言的认识,培养编程兴趣。让每一个人都能参与进来,提高团队合作意识。意义:通过编写综合类的程序,运用已经学过的知识,和自主学习一些新的知识,提高了学习能力,掌握了一些自主学习的方法。3、开发分工及进度安排二、功能分析1、主要模块本项目主要分为

2、3个大的模块,分别为整体布局;界面绘制;与对战的算法。由于游戏规则的设置,这里的游戏模式分为人机对战和人人对战。黑白双方依次落子,由黑子先下,当任意一方在棋盘上形成横向,竖向,斜向连续五个相同颜色的棋子的一方获胜。主要功能①实现在2种模式下五子棋的游戏。②实现通过鼠标的点击位置放置棋子,达到下棋的目的。63③实现游戏玩家对游戏模式的自主选择。④实现对在每种游戏模式下的黑子先手下棋的规定,先达到5子即为胜利。三、关键功能的设计与实现1、数据结构与算法数据结构:项目中主要数据结构为二维数组。用于存储棋盘上棋子的信息,和保存棋型表。主要算法:

3、(一)iswin()函数:用来判断输赢,通过鼠标事件所得到的点或者电脑下的点的坐标,来扫描该点八个方向的相邻的相同棋子数,上下,左右,斜左上下,斜右上下为四组,任意一组等于5即为胜利,由于本程序没有考虑禁手原则,只考虑了民间规则,所以大于5也为胜利。publicintiswin1(intx,inty,intheqi){intk,s1,s2,s3,s4,s5,s6,s7,s8;s1=0;s2=0;s3=0;s4=0;63s5=0;s6=0;s7=0;s8=0;if(heqi==256)return-1;for(k=1;k<5;k++){i

4、f(y+k<16&&qipanqizi[x][y+k]==qipanqizi[x][y])s1++;elsebreak;}for(k=1;k<5;k++){if(y-k>-1&&qipanqizi[x][y-k]==qipanqizi[x][y])s2++;elsebreak;}for(k=1;k<5;k++){if(x+k<16&&y+k<1663&&qipanqizi[x+k][y+k]==qipanqizi[x][y])s3++;elsebreak;}for(k=1;k<5;k++){if(x-k>-1&&y-k>-1&&qipa

5、nqizi[x-k][y-k]==qipanqizi[x][y])s4++;elsebreak;}for(k=1;k<5;k++){if(x+k<16&&qipanqizi[x+k][y]==qipanqizi[x][y])s5++;elsebreak;}for(k=1;k<5;k++){63if(x-k>-1&&qipanqizi[x-k][y]==qipanqizi[x][y])s6++;elsebreak;}for(k=1;k<5;k++){if(x-k>-1&&y+k<16&&qipanqizi[x-k][y+k]==qipan

6、qizi[x][y])s7++;elsebreak;}for(k=1;k<5;k++){if(x+k<16&&y-k>-1&&qipanqizi[x+k][y-k]==qipanqizi[x][y])s8++;elsebreak;}63if(s1+s2>=4

7、

8、s3+s4>=4

9、

10、s5+s6>=4

11、

12、s7+s8>=4){return1;}elsereturn0;}(二)人机对战通过对整个棋盘上每一个点的扫描,获得了电脑和玩家的棋型表,表中数据为该点的权值。根据权值来考虑下一步应该下在哪里。棋型表中的权值通过引用下表的值来计算。publi

13、cvoidrenji(){inti,j,max,jx=0,jy=0,k=0;63max=-10;q=getGraphics();if(gameover==false){if(isblack==true){if(qipanqizi[y1][x1]==-1){Pointlinshi=newPoint(x1,y1,Color.black);point[ii]=newPoint(linshi,q);isblack=false;qipanqizi[y1][x1]=0;//0代表黑棋,1代表白棋,-1代表空if(iswin1(y1,x1,ii)==

14、1){Stringmsg=String.format("恭喜,你赢了!");JOptionPane.showMessageDialog(this,msg);gameover=true;}if(iswin1(

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

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

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