版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学号:888888888888毕业计文题目:
基于C语言或JAVA语言实现的五子棋游戏专班
业:级:
软件技术********学生姓名:导师姓名:
************起止时间:2010年9月至2010年月******计算机学院摘
要五子棋,是一种两人对弈的纯策略型棋类游戏,亦称“串珠国民间非常熟知的一个古老棋种。相传,它起源于四千多年前的尧帝时期,比围棋的历史还要悠久。五子棋游戏容易上手,老少皆宜,而且趣味横生,引人入胜;它不仅能使人娱乐,也能够开发人的智力,而且富含哲理,有助于修身养性。本文主要讲的是Eclipse开发工具Java开发语言开发的一个直观大方的自定义界面的带部分AI功能的五子棋游戏戏程序实现人机对弈和人人对弈自动智能计算最佳落子位置,而且程序能够自动的判定游戏的获胜方和游戏的结束与否,实现对战双方顺利进行博弈。关键词:Eclipse
游戏Java
人机对弈
五子棋AbstractGobangisatwo-typeboardgameofpurestrategy,alsoknownas",beads",and"evenfivesons"isaverywell-knownChinesefolkkindofanoldchess.Accordingtolegend,itoriginatedintheperiodoffourthousandyearsago,EmperorYao,butalsoalongofthanGobangeasyages,itnotmakesbutalsotodevelophumanintelligence,andrichinphilosophywillhelpself-cultivation.ThisarticleisprimarilyconcernedwiththeEclipsedevelopmenttoolsandjavaprogramminglanguagedevelopedanintuitiveinterfaceandgenerouscustombackgammongame,chessgamesandeveryonetoachievehuman-computerchess,theprogramcanautomaticallywinnerthegameandthetheornot,thetwosidestoachieveBattleGame.Keywords:EclipseGamesJavaHumanchessGobang目
录摘前1
要..........................................................................................................................................................................言..........................................................................................................................................................................概.....................................................................................................................................................................1.11.2
程序开发语...........................................................................................................................................开发平台....................................................................................................................................................2
开发环.........................................................................................................................................5运行环.........................................................................................................................................52
开设.............................................................................................................................................................2.1
概要设计....................................................................................................................................................2
流程图..........................................................................................................................................6功能分析......................................................................................................................................7
详细设计...................................................................................................................................................3
功测及行果.......................................................................................................................................3.43.5
游戏主界面.............................................................................................................................................13游戏落子控界面..................................................................................................................................13游戏输赢判控制界面..........................................................................................................................结论.........................................................................................................................................................几点补充说.........................................................................................................................................15总致
结........................................................................................................................................................................16谢........................................................................................................................................................................17参文....................................................................................................................................................................18前
言计算机已经深入到人们日常工作和生活的方方面面程序软件也逐渐进入大众的视野开始影响人们工作生活计算机相关的产业进入快速发展期。作为一名学生特别是软件技术专业的程序编程学生在系统的学习了一些编程语言之后更加觉得自己应该多动手编程实训项目不进行实际的操作,很难在编写程序上有进步编写自己的软件即使是小程序你也会向前迈进一大步。我个人比较喜欢Java,可以说我通过这次设计,把所学的各项技能很好的整合在一起又一次感受到了编程的乐趣从中也学到了不少知识技巧向前迈进了一大步!1
概述程强大Eclipse开SUN公jdk-6u20-windows,其中Eclipse是一个开源的、基于Java的可扩展开发平台,它是辅助开发一个框架和一组服务,用于通过插件组件构建开发环境。而且Eclipse附带了一个标准的插件集,包括Java开发工具JavaDevelopmentTools,JDT有利于程序开发。1.1
程序开发语言Java是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引!Java语言的强大是我选择这门语言的主要原因当然我个人也对比较感兴趣。1.2
开发平台通过Eclipse可扩展开发平台编辑系统程序,因为用功能强大的开源工具Eclipse来开发,相对较为方便,eclipse比较通用,而且支持很多插件,大大的减少工作量。然后再通过jdk-6u20-windows译运行程序,这样开发的程序比较好。
能够正常使用的WindowsXP对系统配置的要求不是很高,中等的电脑配置都可以很好的运行了然高配置效果会更好了的开发平台Java2StandardEdition(J2SE),带运行环境(能正常使用,就能够正常运行,如果安装了Eclipse那就更好。2
开发设计2.1
概要设计开始初始化棋盘默认人机对弈N人人对弈Y黑棋先下下棋横竖斜有五个同色棋子相连
NY黑棋NY
输出:黑方胜利!
输出:白方胜利!程序主窗体设计简洁得体,布局合理,五子棋游戏的基本功能齐全。菜单中的“新游戏”能够实现五子棋游戏开始、清盘,当玩家不想玩该局时可以点击该项重新开始。游戏默认模式为人机对弈可以手动更改对弈模式点击游戏-模式可以实现更改对弈模式。游戏默认为黑棋先下!游戏人机对弈能够实现每一步都通过AI计算最佳落子位置后做出相应的操作,玩家要赢有难度!程序有很好的退出关闭功能。程序编程规范,具有良好的编程风格。2.2
详细设计整个程序创建建了两个类类和MainPanel类,主要是通过类实现,MainPanel类辅助控制来达到预期目的。⑴WZQ类继承并且实现监听,创建类方法WZQ(通过类方法加载各组件并显示于窗体上然后调用MainPanel建[15×15]棋盘关键代码:panel=newMainPanel[15][15];for(inti=0;i<panel.length;i++)for(intj=0;j<panel[i].length;j++){panel[i][j]=newMainPanel();centerPanel.add(panel[i][j]);panel[i][j].addMouseListener(this);}⑵
判断输赢模块publicvoidisWin(MainPanelpanel[][]){},系到各个模块,它是判定控制模块,凸显重要性。判断是否有一方已经取胜,再执行下一步操作。关键代码:inti,j,sum_chess;for(i=0;i<panel.length;i++)//判断每一行是否有五个黑子或白子连在一起for(j=0;j<panel[i].length-4;j++){sum_chess=panel[i][j].chess+panel[i][j+1].chess+panel[i][j+2].chess+panel[i][j+3].chess+panel[i][j+4].chess;if(sum_chess==5){//如果是有5个白子连在一起,则显示白棋胜利的提示框dia1.setVisible(true);addComputer=false;}elseif(sum_chess==-5){//如果是有5个黑子连在一起,则显示白棋胜利的提示框dia2.setVisible(true);addComputer=false;}}⑶
整个系统最为关键的控制模块为判定执行AI(人机对弈)模块:publicvoidcomputerDo(MainPanelpanel[][]){}它是系统AI的核心。它是通过准确的判定,四子相连,三子相连,两子相连,一个棋子,得出最佳落子位置,再执行落子操作!关键代码:for(i=0;i<panel.length;i++)//判断电脑的白子在一行上是否有四个相连for(j=0;j<panel[i].length-3;j++){sum_chess=panel[i][j].chess+panel[i][j+1].chess+panel[i][j+2].chess+panel[i][j+3].chess;if(sum_chess==4){⑷
start_x=i;start_y=j-1;end_x=i;end_y=j+4;if(panel[start_x][start_y].chess==0){panel[start_x][start_y].computer_do=true;panel[start_x][start_y].repaint();isDo=true;dia1.setVisible(true);System.out.println("判断电脑的白子在一行上是否有四个相连的);break;}elseif(panel[end_x][end_y].chess==0){panel[end_x][end_y].computer_do=true;panel[end_x][end_y].repaint();isDo=true;dia1.setVisible(true);System.out.println("判断电脑的白子在一行上是否有四个相连的);break;}}}严格的条件控制,防止程序达不到预期目的。关键代码:if(!isDo){for(i=0;i<panel.length-3;i++)//判断每一列是否有四个电脑的白子连在一起for(j=0;j<panel[i].length;j++){sum_chess=panel[i][j].chess+panel[i+1][j].chess⑸
+panel[i+2][j].chess+panel[i+3][j].chess;if(sum_chess==4){start_x=i-1;start_y=j;end_x=i+4;end_y=j;if(panel[start_x][start_y].chess==0){panel[start_x][start_y].computer_do=true;panel[start_x][start_y].repaint();isDo=true;dia1.setVisible(true);System.out.println("判断电脑的白子在一列上是否有四个相连);break;}elseif(panel[end_x][end_y].chess==0){panel[end_x][end_y].computer_do=true;panel[end_x][end_y].repaint();isDo=true;dia1.setVisible(true);System.out.println("判断电脑的白子在一列上是否有四个相连);break;}}}}弹出信息控制项。关键代码:if(e.getSource()==button1){dia1.setVisible(false);⑹
newWZQ();frame.setVisible(false);//刷新屏幕,防止开始游戏时出现无法显示的情况.this.repaint();}elseif(e.getSource()==button2){dia2.setVisible(false);newWZQ();frame.setVisible(false);//刷新屏幕,防止开始游戏时出现无法显示的情况.this.repaint();}菜单信息控制项。关键代码:elseif(e.getSource()==newgame){newWZQ();frame.setVisible(false);//刷新屏幕,防止开始游戏时出现无法显示的情况.This.repaint();}elseif(e.getActionCommand().equals(退出”)){System.exit(0);}elseif(e.getActionCommand().equals(人人对弈”)){addComputer=false;}elseif(e.getActionCommand().equals(版本信息”)){dia3.setVisible(true);}⑺MainPanel类为辅助控制类,主要有该哪方落子和画棋子,关键代码:super.paintComponent(g);this.setBackground(Color.lightGray);if(person_do||computer_do){if(mark==0){g.setColor(Color.BLACK);g.fillOval(4,4,15,15);chess=-1;mark=1;}elseif(mark==1){g.setColor(Color.WHITE);g.fillOval(4,4,15,15);chess=1;mark=0;}}3
功能测试及运行效果3.1
游戏主界面3.2
图3-1系统主窗口点击菜单“游戏现如上游戏界面。游戏落子控制界面图3-2落子情况开始游戏后落子控制情况3.3
游戏输赢判定控制界面3.4
图3-3输赢判定游戏落子输赢判定控制情况结论程序运行正常,各项功能正常,整个系统达到预期目的。不足之处程序AI计算落子边界控制做得不够好,有待改善!3.5
几点补充说明考虑到程序的执行效率,人机对弈算法只对玩家的棋子进行了一步的推测。计算机在落子时选取的是最佳的落子位置,所以如果玩家需要开动脑筋考虑清楚该在哪里落子,不然难有机会获胜!人机对弈这个算法的开销很大,每一步落子都会考虑棋盘布局,又考虑对手的落子,从而达到步步为营的目的。程序还有很多地方需要完善,例如:人机对弈边界处理不是很好,有待完善;还可以开发为网络对战游戏及完善游戏相关功能。总
结通过编写这个程序,我体会最为深刻的一点是系统架构和设计模式的重要性。即使是对于一个再小的程序,你已经做过但忘了的,再做一次又何妨,代码的组织和系统架构都是非常重要的,还因为这关系到日后的维护以及扩展。在开始编写这个程序的时候很模糊有什么头绪在编写不下去了。后来经过我详细了解,参阅相关资料,询问老师同学后,才慢慢做下来,坚持下来。分析五子棋算法,把代码的有效地组织,即系统架构,然后开发出这个简单的五子棋程序。设计这个程序之后我感觉自己不仅实际动手能力有所提高更重要的是进一步激发了我对专业知识的兴趣是理论与实际得到一次很好的结合并能够结合实际存在的问题在专业领域内进行更深入的学习。对于我们计算机专业的学生来说实际能力的培养至关重要而这种实际能力的培养单靠课堂教学是远远不够的必须从课堂走向实践只有通过企业式的实训,才会了解工作需要什么,自己要学什么。通过这次程序设计,使我了解自身状况与实际需要的差距并在以后的学习期间及时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 试用期工作总结及计划
- 2025年11月生物教学工作计划
- -学年社科系文艺部和外联部工作计划
- 服装店长个人月工作计划范文服装销售店长工作计划
- 度工作计划及目标模板
- 关于个人总结及工作计划汇编
- 英语特色教学计划范文
- 《衍射光栅衍射》课件
- 《蓝色简约商务模板》课件
- 《计算机文件基础 Windows 7+Office +Internet项目式教程》课件-第5章
- 人教版(2024)数学七年级上册期末测试卷(含答案)
- 大部分分校:地域文化形考任务三-国开(CQ)-国开期末复习资料
- 2024年国家保密培训
- 2024年全新初二生物上册期末试卷及答案(人教版)
- 大学生心理健康与发展学习通超星期末考试答案章节答案2024年
- 西方经济学考试题库(含参考答案)
- 古希腊神话智慧树知到期末考试答案章节答案2024年上海外国语大学贤达经济人文学院
- 生活中的社会学智慧树知到期末考试答案章节答案2024年西安交通大学
- JIS G4305-2021 冷轧不锈钢板材、薄板材和带材
- 部编版六年级上册语文非连续性文本阅读
- 智能水表项目可行性研究报告(范文模板)
评论
0/150
提交评论