【五子棋游戏开发设计12000字(论文)】_第1页
【五子棋游戏开发设计12000字(论文)】_第2页
【五子棋游戏开发设计12000字(论文)】_第3页
【五子棋游戏开发设计12000字(论文)】_第4页
【五子棋游戏开发设计12000字(论文)】_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

五子棋游戏开发设计 1 21.1开发背景 21.2课题意义 21.3五子棋游戏的发展与现状 31.4论文的组织结构 42.五子棋技术相关理论介绍 52.1软件的基本功能 52.2开发运行环境 2.3软件的开发手段以及工具的介绍 62.3.1Java简介 62.3.2MyEclipse10开发环境简介 72.4软件的实现目的 93.五子棋程序分析与设计 3.1用户需求分析 103.2软件功能结构图 103.3软件各个功能的简要说明 3.5五子棋界面设计 3.6五子棋算法设计 3.6.1五子棋棋盘设计 3.6.2棋子设计 153.6.3落子算法设计 3.6.4判断输赢设计 3.7网络五子棋算法设计 4.软件的具体实现 24.1准备工作 24.2游戏窗□界面的实现 24.3下棋算法的实现 4.4完成判断胜负的功能 4.5系统测试 4.6测试计划 4.6.1界面功能测试 4.6.2单机游戏测试 4.6.3联网游戏测试 4.7测试结果 附录 3 3参考文献 41的训练,最大的优势就是可以提高个人的思维逻辑缜密性以及自身的智商的提弈。最早采用这种方式则是美国的深蓝计算机对抗国际象棋世界冠军-卡斯帕罗本文主要是对于五子棋的程序的开发以及具体的设计目的则是为了让这个尤行不同规模的比赛。其中比较著名在1989年8月份在日本京都、1991年8月份是制作成APP供人们下载以及使用。其中比较常见的棋牌类的游戏为五子棋。其中对于网络的性五子棋比赛而言,更多的是263、QQ游戏中最为常见。可见到五子棋的在网络上可以说非常的火爆,而且③需要根据游戏规则,计算机自动判断出游戏是否是黑方或者是白方胜⑥在下五子棋的过程中,除了考虑以上的细节问题外,对于双方的下棋的4)操作系统:WINDOWS7;主要是继承了C++语言的面向对象的技术的核心以及在JAVA摒弃了C++语言度可以说得到了比较大幅度提升。JAVA语言的最早的推出者为SUN公司,随公司对于JAVA的语言的解释则是比较的简单以及面向对象、具有一定的分布是JAM优化机器码的形式。则是一种解释性的JVM的实现。整个的解释性的只需占据215K的RAM,并且在此基础上需要增加一些非常实对于现阶段的JAVA的开发的工具而言,主要是因为MyEclipse10本身则是具有一个整体性的框架以及平台,但是在具体的插件的支持更多的自身拥有的其他的功能,但是相对于固定的IDE的软件则是很难的具有其灵活性。但是对于很多的开发商更多的是以MyEclipse10为主要的框架的开放性的源三个项目组成,具体组成主要包含的四个部分,分别是对应的是MyEclipse来支持插件开发,MyEclipsePlatform则是一个开放的以及具有一定的开发IDE,及构造集成软件的开发以及工具的基础,在MyEclipsePlatform可以允许的工具的建造者以及独立开发者进行无缝的连接以及从一个工具的功能在那个地方进这个组件主要是针对于的希望的开拓的尔以及MyEclipse10的软件的开工具,以及在具体的MyEclipse10对于其中的每一样的的东西的插件以及对于MyEclipse10需要给用户这提供统一的以及一致的集成以及具体的开发性的环(2)OSGi(标准集束框架)等①具有重新开始功能;③具有提示该轮到哪一方下棋的功能;④退出游戏功能;⑤判断胜负功能;⑥时间设置功能;⑧联机功能。以及选择,具体的功能如图3-1所示:五子棋程序联机对完设游戏提示输赢的判定下棋方法的落子的设计选择难度棋盘的设计联机对完设游戏提示输赢的判定下棋方法的落子的设计选择难度棋盘的设计下下棋界面界面判断标记3.3软件各个功能的简要说明③在进行黑白双方的轮流的落子的时候,其中的黑子的落子以后,这就需连机对战)漂亮以及大方的游戏性的界面能够吸引的玩家去尝试,需要按照国人的喜欢程度进行制定基本的信息,具体的如图3-2所示。3.6五子棋算法设计具体五子棋的算法,可以进行设计如图3-3所示。输赢判断输赢判断落子设计棋子设计棋盘设计在具体的五子棋的设计可以JAVA自带画图的算法进行设计,在设计的过程是图3-4棋盘设计流程图计一般为木质颜色进行设计和线条,在进行执行的循环,主要循环的次数为15圆是→的红心圆,表示这图3-5棋子设计流程图棋子设计就需要使用java自带的画图方法,获取横竖交叉点,然后以该点为圆心,画一个半径为13的圆,然后填充两种颜色:黑色和白色。完成后判定该圆是否属于刚刚落下的棋子,如果是,则在填充一个半径为6的红色圆,表示由于需要设计单机游戏和联机对战。但是该算法不涉及到联机对战,所初步设定单机游戏分为三种难度等级。分别为容易、中等和困难。我们①当计算出的自己已经有四个连珠并且没有被堵住的情况下当然也就是②当计算出的对方已经有四个连珠并且没有被堵住的情况下当然也就是③当计算出的自己已经有三个连珠并且没有被堵住的情况下当然也就是④当计算出的对方已经有三个连珠并且没有被堵住的情况下当然也就是⑥三三连的情况其算法流程图如图3-6所示:是否是是图3-6五子棋算法流程图开始下子,系统赋予该棋子(Value)初始值,然后系统自动分“\”“1”1.当计算出的自己已经有四个连珠并且至少有一个没有被其他颜2.当计算出的对方已经有四个连珠并且没有被拦截住的情况就会1.当自己已经有四个连珠并且至少有一个没有被其他颜色棋子拦2.当计算出的对方已经有四个连珠并且没有被拦截住的情况就会4.当计算出的对方已经有三个连珠并且没有被拦截的情况就会主当为棋盘出现四三连(三三连)连子的情况时候它不拦截2.当计算出的对方已经有四个连珠并且没有被拦截住的情况就会6.当计算机即将出现三三连的情况时候,计算机就会自动7.当对方快或者已经出现四三连子的时候,电脑就会视优先级去判断五子棋输赢且设置个初始值0,每次运行加1否—且设置个初始值0,每次运行加1判断胜利杏是否小于4是否小于4且设置个初始值0,每次运行加1颜色是否相同是找,且设置个初始值0,每次运行加1判断失败是否小于4颜色是否相同的规则,当任一行、列、斜行连续相同的棋子数达到5以后,则判定改色棋子的3.7网络五子棋算法设计息息服务器主程序开始客户端主程序开始服务器主程序开始客户端主程序开始主循环开始接收用户处理请求—客户端往服务器端发送的处理请求服务器端代理程序刷新显示场景处理请求数据包然后准备一个算法类Qipan,其中包括三种算法对比,分别为简单,中等,33Java-FR/sre/gomoku/MainFramejava-MyEclipseEnterQipanjavaDatajavaDDecisionTreejavabottomjpg图4-1单机游戏主界面选择难度(默认为中等难度),难度分为三种:简单,中等,困难。在玩家选择当玩家选择联机游戏时,系统会出现等待的界面,当系统扫描局域若该局域网内有个IP也在运行次程序,则主动匹配,完成网络游戏的功能。若无IP运行,则系统将一直搜索等待。javaDQipan.javajavaDQipan.java×setForeground(Color.orange);g.drawLine(startX,startX+30*i,startX+14*g.drawLine(startX+30*i,startx,startx+30*i,sg.fill0val(startX+30*3-dotg.fill0val(startX+30*11-dot_r,startX+30*3-dot_r,2*dot_r,2*dot_r);g.fill0val(startX+g.fill0val(startX+30*7-dot_r,startX+30*7-dot_r游戏帮助2.当计算出的对方已经有四个连珠并且没有被拦截住的情况就会去2.当计算出的对方已经有四个连珠并且没有被拦截住的情况就会4.当计算出的对方已经有三个连珠并且没有被拦截的情况就会主当为四三连(三三连)连的时候它不拦截3.当计算出的自己已经有三个连珠并且没有被拦截的情况下就会继续补齐到第四颗棋子,然后继续1号操作。4.当计算出的对方已经有三个连珠并且没有被拦截的情况就会主图4-4五子棋落子点的判断原则如图4-3所示。当系统判定某种棋子获胜后,就代表本局已经结束了,玩家可以负关键代码如图4-6所示:D*检查是否一方已经获胜。0没有获胜,-1白棋获胜,1黑棋获胜,2和棋。竖向if(position[i][j]==18&position[i][j+1]==18&p&&position[i][j+3]==1&&position[i][j+4]==}if(position[i][j]==-18&position[i][j+1]==-1&&&position[i][j+3]==-1&&position[i][j+4]==-}}if(position[i][j]==18&position[i+1][j]==18&p8&position[i+3][j]==1&&position[i+4]}if(position[i][j]==-1&&position[i+1][j]==-1&8&position[i+3][j]==-1&&position[i+4][}for(intj=0;j<row-4;j++){if(position[i][j]==1&}if(position[i][j]==-1&&position[i+1][j+1]==-1&&position[&&position[i+3][j+3]==-1&&position[i+}for(inti=0;i<row-for(intj=4;j<row;j++){if(position[i][j]==1&&position[i+1][j-1]==1&&position[&&position[i+3][j-3]==1&&position[i}if(position[i][j]==-1&&position[i+1][j-1]==-1&&position[i&&position[i+3][j-3]==-1&&position[i+for(intj=0;j<row;j++)图4-6五子棋获胜判断1)测试的重要性件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上。而在软件开发的总成本中,用在测试上的开销要占30%到50%。如果把维护阶段也考①认为测试工作不如设计和编码那样容易取得进展难以给测试人员某种成②以发现软件错误为目标的测试是非建设性的,甚至是破坏性的,测试中③测试工作枯燥无味,不能引起人们的兴趣;⑤对自己编写的程序盲目自信,在发现错误后,顾虑别人对自己的开发能(2)测试的目的①软件测试是为了发现错误而执行程序的过程;②测试是为了证明程序有错,而不是证明程序无错误;③一个好的测试用例是在于它能发现至今未发现的错误;④一个成功的测试是发现了至今未发现的错误的测试。(1)测试目标:系统界面按钮的可用性。(2)测试时间:2017年3月20日(3)测试步骤:1、点击界面上每个可点击的SWING组件(4)测试结果:正在等待连接求和图4-7界面功能测试结果(1)测试目标:单机游戏是否正常。(2)测试时间:2017年4月26日(3)测试步骤:2、选择难度(4)测试结果:游戏帮助图4-8单机游戏测试结果(1)测试目标:联网游戏是否正常。(2)测试时间:2017年5月11日(3)测试步骤:2、另外选择一台电脑安装相同的环境,进行联网测试(4)测试结果:图4-9联网游戏测试结果程度,最后系统通过所有的测试,系统功能已达到预privatestaticfinallongprivatestaticintLENGTH=25;publicvoidpaintCompong.fillRect(0,0,LENGTH,LENGTH);importjava.awt.Graphics;importjavax.swing.*;*构造棋盘和算法***2、value值为1-100,表示为初始值;*3、value值为1000,表示优先级为1即自己下该位置就五个了(自己必赢的情况下,优先级最高)*4、value值为990,优先级为2即对方下该位置就五个了(对方必赢的情况下,自己就该堵住对方,优先级其次)*5、value值为980,优先级为3四连)(优先级第三)*6、value值为970,优先级为4四连)(优先级第四)*7、value值为960,优先级为5即自己下该位置就三连(三三连)(优先级第五)*8、value值为950,优先级为6即对方下该位置就三连(三三连)(优先级第六)*以上都是必胜或者必败的情况。*9、其余情况从100为始值,采取加值处理。publicclassQipanextendsJComponentimplementsRupublicint[][]position;//标记棋盘中的棋子,无棋子为0,白棋为-1,黑棋privateint[][]qizi;//标记棋盘中的棋子,无棋子为0,白棋为-1,黑棋为privateintcurrentColorblack=newColo}}publicbooleanisFinished}}publicvoidsetCurrentX(int}}}returnrow;publicvoidinit(){for(intj=0;j<row;j++){value[i][j]=(8-Math.abs(i-7))*(8-Math.abs//System.out.print(value[i][j]+"//System.out.printlpublicvoidpaint(Graphicsg){g.drawLine(startX,startX+30*i,startX+14*30,g.drawLine(startX+30*i,startX,startX+30*i,g.fillOval(startX+30*3-dot_r,startX+30*3-dot_r,2*dotg.fillOval(startX+30*11-dot_r,startX+30*3-dot_r,2*dotg.fillOval(startX+30*3-dot_r,startX+30*11-dot_r,2*dotg.fillOval(startX+30*7-dot_r,startX+30*7-dot_r,2*dog.drawOval(startX+30*i-qizi_r,startX+30*j-qizg.fillOval(startX+30*i-qizi_r,startX+30*j-qizstartX+30*currentY-qizi_r/2g.fillOval(startX+30*currentX-qizi_r/2,startX+30*curr}g.drawString("黑棋获胜",75,235);g.drawString("白棋获胜",75,235);g.drawString("和棋",125,250);}*检查是否一方已经获胜。0没有获胜,-1白棋获胜,1黑棋获胜,2和if(position[i][j]==1&&position[i][j+1]==1&&posit&&position[i][j+3]==1&&positi}if(position[i][j]==-1&&position[i]

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论