五子棋游戏-课程设计报告(含源代码可以运行)_第1页
五子棋游戏-课程设计报告(含源代码可以运行)_第2页
五子棋游戏-课程设计报告(含源代码可以运行)_第3页
五子棋游戏-课程设计报告(含源代码可以运行)_第4页
五子棋游戏-课程设计报告(含源代码可以运行)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

PAGEVIII五子棋兴趣小组活动教案第一课时认识五子棋(一)学习目标:认识五子棋棋盘,知道棋盘是有横竖各15条平行线交叉组成及棋盘上的4星1天元;认识五子棋棋子,知道五子棋棋子是黑白225枚子,黑113枚子,白112枚子。学会五子棋执棋方式。了解五子棋的历史及比赛的计时制。重点、难点:认识五子棋棋盘,知道棋盘是有横竖各15条平行线交叉组成及棋盘上的4星1天元;认识五子棋棋子,知道五子棋棋子是黑白225枚子,黑113枚子,白112枚子;学会五子棋执棋方式。谈话导入。1、同学们,课前老师让你们收集并了解有关五子棋的资料,那谁愿意把自己收集到的知识讲给大家听?2、学生汇报所收集的资料。3、通过资料的收集,我们了解了许多五子棋的知识。二、新课1、五子棋的历史五子棋是我们中国发明的,距离现在已经有四千多年的历史了认识五子棋棋盘。出示图1第二课时认识五子棋(二)(1)生观察棋盘,发现问题,提出质疑。(2)通过其他学生的已有知识解决问题,师补充小结:棋盘由纵横各15条等距离、垂直交叉的平行线构成,形成225个交叉点。

以对局开始时的黑方为准,棋盘上的纵行线从下向上用阿拉伯数字1—15标记(注:QQ棋盘上的数字则从上向下标记),横行线从左到右用英文字母A--O标记,其中H8点为天元;D4、D12、L12、L4四点为星。3、认识棋子。(1)师演示,生直观:棋子由黑白两种颜色组成。师补充:共有225个棋子,与交叉点的个数相同;其中黑棋113个,白棋112个,不过平时下棋棋子少些也是可以的。(2)正确的执棋方式。师演示:是食指的指甲与中指的指肚儿夹住棋子。棋子落在棋盘的交叉点上,落下后不能移动。生执棋练习:先从自己的棋盒里拿棋,放到棋盘上的交叉点上。然后同桌之间比赛,看谁拿的快,放的准。4.了解五子棋比赛计时制(一)比赛时限比赛时限可分每方30分钟到5小时不等,但一般要求一天内必须结束。有些比赛受条件限制,也可采用双方共用时限的方法,时限时间约是单方时限的双倍。双方共用时限到时后,可用限时走棋(几分钟之内走完若干手棋)或到时读秒的后续手段,直到该局结束。读秒时限,多采用1分钟制,凡一着棋用时不足1分钟,可不计时间,到1分钟则判负。(二)迟到时限比赛前,组织者都会规定迟到时限,一般为15分钟,每场比赛迟到时限一到,未到场的棋手均按弃权判负。第三课时五子棋术语(一)学习目标:1.学会术语:阴线、阳线,猜先、开局、着、回合、连五、长连。2.学生能够运用所学术语进行交流或表达。重点难点:学会术语阴线、阳线、猜先、开局、着、回合、连五、长连并能够运用所学术语进行交流或表达新课1、阳线、阴线(图2)阳线:棋盘上可见的横线和竖线的总称。阴线:棋盘的两条对角线及与它们平行的交叉点间不可见斜线的总称。练习:同桌之间在棋盘上互指阳线阴线;师再请生到板前指。(图2)活动:师示范,生模仿,再请两生到板前展示。2、着:也称“步”。对局中,把棋子放到某一交叉点上去,称之为一着棋。3、回合:双方各走一着,称为一个回合。4、连五:一条阳线或阴线上紧紧相连的同色五枚棋子。(胜棋)5、长连:一条阳线或阴线上紧紧相连的同色六枚或六枚以上棋子。第四课时五子棋术语(二)学习目标:1.学会术语四的棋形,即活四,冲四,跳冲四。2.知道如何防守活四、冲四、跳冲四。难点、重点:学会术语四的棋形,即活四,冲四,跳冲四;知道如何防守活四、冲四、跳冲四。过程:导入新课:谁能到前面摆一个五连?:同学们,要想摆成五,必须先有几?(四)“四”是连五取胜的前一步,所以研究好棋形“四”很重要。二、棋形“四”这里说的“四”是指己方再走一步能够成五的单一棋形,包括“活四”和“冲四”和“跳冲四”1、“活四”是指在同一条阳线或阴线上有两个点可以成五的单一棋形。日本也形象的称活四为“棒四”。一旦走出活四,对方靠阻挡来防守是没有用的,这样本方都可成五胜了。有两个点能形成五的四就是活四。下面图中的四就是活四,其中A、B两个点能形成五。总结:说说你今天学到了什么?:把学习术语四,将给爸爸妈妈听,并和他们下一盘第五课时五子棋术语(三)学习目标:1.学会术语三的棋形,即活三、死三2.知道如何防守活三重点、难点:学会术语三的棋形,即活三、死三;知道如何防守活三。教学内容:三分为活三和死三。活三:再走一着可以形成活四的三活三包括连三,跳三两种。(图7)连三:在一条阳线或阴线上的同色棋子相邻成一排的活三。跳三:中间隔有一个空点的活三。死三:对方有棋子在同一条线相邻交叉点防守的三。死三包括死连三、死跳三、特形眠三如图:(死跳三)(死跳三)(眠三)《软件基础》大作业项目名称:五子棋游戏学号:201046820510201046820605姓名:校建林朱颖完成时间:2011年11月28日指导教师:鲁可目录一需求分析 11.1开发背景 11.2项目目标五子棋与游戏开发成员和具体日期完成任务以及任务的具体分配....................11.3运行环境…初始化 31.4项目任务书主循环控制模块 31.5玩家下子 31.6盘面分析填写棋型表 31.7对方下子 41.8胜负判断 4二技术线路 42.1采用的软件及开发平台是什么2.2项目的总体方案—包括模块及模块间的联系、信息流、数据流等2.3项目的详细设计—包括模块的功能、数据结构及算法等2.1技术线路模块图 42.2技术线路说明 5三工程进度第三章系统设计 53.1流程图 63.2流程图说明 6四程序测试分析 74.1阶段性测试4.2总体测试五个人总结 9附录源代码 10PAGE13五子棋游戏第一章需求分析1.1开发背景软件需求分析是软件开发周期的第一个阶段,也是关系到软件开发成败的关键一步。对于任何一个软件而言,需求分析工作都是至关重要的一步。只有通过软件需求分析,才能把软件的功能和性能由总体的概念性描述转化为具体的规格说明,进而建立软件开发的基础。实践表明,需求分析工作进行得好坏,在很大程度上决定了软件开发的成败。软件需求分析的任务是:让用户和开发者共同明确将要开发的是一个什么样的软件。具体而言,就是通过对问题及其环境的理解、分析和综合,建立逻辑模型,完成新软件的逻辑方案设计。基于本游戏,首先得为整个棋盘建立一张表格用以记录棋子信息,我们使用一个15*15的二维数组Table[15][15](15*15是五子棋棋盘的大小),数组的每一个元素对应棋盘上的一个交叉点,用‘0’表示空位、‘1’代表己方的子、‘2’代表对方的子;这张表也是今后分析的基础。在此之后还要为两个玩家双方各建立一张棋型表Computer[15][15][4]和Player[15][15][4],用来存放棋型数据。1.2项目目标五子棋与游戏开发具体任务完成日期以及任务的具体分配五子棋游戏开发成员:校建林、朱颖。五子棋游戏开发具体的任务步骤:1.需求分析内容包括:总体分析、五子棋与游戏开发成员和具体任务完成日期以及任务的具体分配、初始化、主循环控制模块、玩家下子、盘面分析填写棋型表、对方下子、胜负判断。2.技术线路内容包括:采用的软件及开发平台是什么。项目的总体方案—包括模块及模块间的联系、信息流、数据流等。项目的详细设计—包括模块的功能、数据结构及算法等。技术线路模块图技术线路模块图、技术线路说明。3.系统设计 内容包括:流程图、流程图说明。4.程序测试分析5.总结。6.源代码。2.具体日期完成任务1.第五周完成任务:完成具体的需求分析中的总体分析、五子棋与游戏开发成员和具体任务完成日期以及任务的具体分配、初始化、主循环控制模块等部分内容的任务。2.第六周完成任务:完成具的需求分析中的玩家下子、盘面分析填写棋型表、对方下子、胜负判断等部分内容的任务。3.第七周完成任务:完成具的功能描述的功能模块图、功能说明部分内容的任务。4.第八周完成任务:完成具的系统设计的流程图、流程图说明部分内容的任务。5.第九周完成任务:完成具的程序测试结果部分内容的任务。6.第九周完成任务:完成具的五子棋游戏源代码中的初始化程序任务。7.第九周完成任务:完成具的五子棋游戏源代码中的主循环控制模块程序任务。8.第十周完成任务:完成具的五子棋游戏源代码中的玩家下子的有关程序任务。9.第十一周完成任务:完成具的五子棋游戏源代码中的盘面、棋型的有关程序任务。10.第十二周完成任务:完成具的五子棋游戏源代码中的对方下子的有关程序任务。11.第十二周完成任务:完成具的五子棋游戏源代码中的整体程序任务。12.第十三周完成任务:完成具的系统设计的流程图、流程图说明部分内容的任务。13..第十四周完成任务:完成具的程序测试结果以及总结部分内容的任务。3.五子棋游戏开发具体任务的具体分配1.校建林、朱颖共同完成需求分析任务。-2.校建林完成具体的需求分析中的总体分析、五子棋与游戏开发成员和具体任务完成日期以及任务的具体分配、初始化、主循环控制模块等部分内容的任务。3.朱颖完成具的需求分析中的玩家下子、盘面分析填写棋型表、对方下子、胜负判断等部分内容的任务。4.校建林、朱颖共同完成具的功能描述的功能模块图、功能说明部分内容的任务。5.校建林、朱颖共同完成具的系统设计的流程图、流程图说明部分内容的任务。6.校建林完成具的程序测试结果部分内容的任务。7.校建林、朱颖共同完成具的五子棋游戏源代码中的初始化程序任务。8.校建林、朱颖共同完成具的五子棋游戏源代码中的玩家下子的有关程序任务。10.校建林完成具的五子棋游戏源代码中的玩家下子的有关程序任务。11.朱颖完成具的五子棋游戏源代码中的盘面、棋型的有关程序任务。12.校建林、朱颖共同完成具的五子棋游戏源代码中的对方下子的有关程序任务。13.校建林、朱颖共同完成具的五子棋游戏源代码中的整体程序任务。14.校建林、朱颖共同完成具的系统设计的流程图、流程图说明部分内容的任务。15.校建林、朱颖共同完成具的程序测试结果以及总结部分内容的任务。1.3运行环境初始化首先,建立盘面数组Table[15][15]、对战双方的棋型表Computer[15][15][4]和Player[15][15][4]并将它们清零以备使用;然后初始化显示器、键盘、鼠等输入输出设备并在屏幕上画出棋盘(棋盘可以不显示)。1.4项目任务书主循环控制模块控制下棋顺序,当轮到某方下子时,负责将程序转到相应的模块中去,主要担当一个调度者的角色。1.5玩家下子当轮到玩家下时,您通过键盘或鼠标在棋盘上落子,程序会根据该点的位置,在Table[15][15]数组的相应地方记录‘2’,以表明该子是玩家下的。1.6盘面分析填写棋型表您在下五子棋时,一定会先根据棋盘上的情况,找出当前最重要的一些点位,如“活三”、“冲四”等;然后再在其中选择落子点。先来分析己方的棋型,我们从棋盘左上角出发,向右逐行搜索,当遇到一个空白点时,以它为中心向左挨个查找,如果遇到己方的子则记录然后继续,如果遇到对方的子、空白点或边界就停止查找。左边完成后再向右进行同样的操作;最后把左右两边的记录合并起来,得到的数据就是该点横向上的棋型,然后把棋型的编号填入到Computer[x][y][n]中就行了(x、y代表坐标,n=0、1、2、3分别代表横、竖、左斜、右斜四个方向)。而其他三个方向的棋型也可用同样的方法得到,当搜索完整张棋盘后,己方棋型表也就填写完毕了。然后再用同样的方法填写对方棋型表。注意:所有棋型的编号都要事先定义好,越重要的号数越大!1.7对方下子有了上面填写的两张棋型表,就是遍历棋型表Computer[15][15][4]和Player[15][15][4]找出其中数值最大的一点,在该点下子即可。但这种算法的弱点非常明显,只顾眼前利益,不能顾全大局,这就和许多五子棋初学者一样犯了“目光短浅”的毛病。如果在这儿下子将会形成对手不得不防守的棋型(例如:‘冲四’、‘活三’);那么下一步对手就会照您的思路下子来防守您,如此一来便完成了第一步的预测。这时再调用模块4对预测后的棋进行盘面分析,如果出现了‘四三’、‘双三’或‘双四’等制胜点,那么己方就可以获胜了(当然对黑棋而言‘双三’、‘双四’是禁手,另当别论);否则照同样的方法向下分析,就可预测出第二步、第三步……等一等,要是盘面上没有对手必须防的棋型,哪该怎么办呢?进攻不成的话就得考虑防守了,将自己和对手调换一下位置,然后用上面的方法来预测对手的棋,这样既可以防住对手巧妙的攻击,又能待机发动反击,何乐而不为呢!1.8胜负判断务须多言,某方形成五子连即获胜;若黑棋走出‘双三’、‘双四’或长连即以禁手判负。第二章技术线路2.1技术线路模块图图2.1功能模块图2.2技术线路说明该五子棋程序基本上实现了五子棋的游戏功能,有双方下棋的界面及最终判定结果的界面。同时该游戏采用二维坐标实现,明了易懂,方便玩家在游戏过程中的基本操作,使游戏更加简便。在细节方面,该系统提供实时存储功能,随时记录为完成的游戏,使用户可以很好的处理意外中断的情况。该游戏基本实现了游戏的一些要求和特征。在游戏的源程序及文档方面,我们也严格遵守软件工程思想,立足实验要求,确定任务,需求分析,设计和编码,每个步骤力求清晰易懂。原代码注释详尽,各功能模块功能分明,可移植性强。当然该系统也有很多不足的地方,第一次进行独立的课程设计,也有很多细节方面是考虑到的,这款游戏也是在不断的调试和修改中产生和完善的。希望老师能够指出不足,帮助我不断提高。 第三章系统设计3.1流程图图3.1流程图3.2流程图说明本程序定义了各种操作函数、各种状态判定宏,思想明确,思路清晰。各个判断选择了不同路径,因此继续进行或输出结果。程序中,“循环”的利用非常直接和清晰,双方交替下棋,因此循环往复。最终决出胜负或最终平局。分析时,也考虑了许多种情况,针对各个情况均作出了相对措施和解决方案。程序采用循环进行双方交替下棋,并进行了很多判断。首先判断棋盘是否已满,若棋盘已满,则输出平局,结束游戏;若棋盘未满,则继续进行。然后判断“0”方是否胜出,若“0”方获胜,则输出“0”方获胜,结束游戏;若“0”方没有获胜,则继续进行。再判断“x”方是否获胜,若“x”方获胜,则输出“x”方获胜,结束游戏;若“x”方没有获胜,则继续进行。回到“首先”第四章运行结果图4.1运行结果初始图图4.2游戏过程图图4.3游戏进行图图4.4“0”方获胜图第五章总结附录一参考文献[1]严蔚敏,吴伟民.数据结构.北京:清华大学出版社,2010年[2]苏仕华,魏韦巍,王敬生,刘燕君.数据结构课程设计(第二版).北京:机械工业出版社,2010年[3]谭浩强.C程序设计(第二版).北京:清华大学出版社,1999年[4]谭浩强.C++程序设计.北京:清华大学出版社,2009年附录二源代码#include<iostream.h>usingnamespacestd;intHsheng(chara[][15]);//判断o子是否获胜的函数intBsheng(chara[][15]);//判断x子是否获胜的函数inthe(chara[][15]);//判断是否平局(也就是棋盘下满了)的函数voidqipan(chara[15][15])//执行输出棋盘命令{cout<<"本游戏采用二维数组实现,棋盘为15X15的二维直角坐标系,均从1到15,祝二位游戏愉快.";for(inti=0;i<15;i++)//打印棋盘{for(intj=0;j<15;j++)cout<<a[i][j];cout<<endl;}}intmain(){chara[15][15];intx,y;for(inti=0;i<15;i++)for(intj=0;j<15;j++)a[i][j]='';qipan(a);while(1)//用循环语句执行o,x交替下子,这些while语句看起来似乎是个死循环~实际上都会经过break结束{inta1=1;while(1){for(;a1;){cout<<"请输入o子下的位置:";//输入o子的位置cin>>x>>y;if(a[x][y]=='o'||a[x][y]=='x')//判断是否已有子{cout<<"已有子请重下"<<",";continue;}elseif(x>=15||y>=15){cout<<"输入错误请重输"<<",";continue;}else{a[x][y]='o';a1=0;}}break;}qipan(a);//下好o子后将棋盘显示if(Hsheng(a))//判断o子是否已经获胜{cout<<"o子获胜"<<endl;break;}while(1)//下x子{cout<<"请输入x子下的位置:";cin>>x>>y;if(a[x][y]=='o'||a[x][y]=='x'||x>=15||y>=15){for(;a[x][y]=='o'||a[x][y]=='x';){cout<<"已有子请重下";cout<<"请输入x子下的位置:";cin>>x>>y;continue;}for(;x>=15||y>=15||x;){cout<<"输入错误请重输"<<",";//判断输入棋子位置是否正确cout<<"请输入x子下的位置:";cin>>x>>y;continue;}a[x][y]='x';break;}else{a[x][y]='x';break;}}qipan(a);//再一次输出棋盘if(Bsheng(a))//判断x子是否已经获胜{cout<<"x子获胜"<<endl;break;}if(he(a))//判断是否平局{cout<<"平局"<<endl;break;}}return0;}intHsheng(chara[][15]){inti,j;//判断横着的5个是否都相等for(i=0;i<15;i++)for(j=0;j<15;j++)if(a[i][j]=='o'&&a[i][j+1]=='o'&&a[i][j+2]=='o'&&a[i][j+3]=='o'&&a[i][j+4]=='o')return1;for(j=0;j<15;j++)//判断竖着的5个是否都相等for(i=0;i<15;i++)if(a[i][j]=='o'&&a[i+1][j]=='o'&&a[i+2][j]=='o'&&a[i+3][j]=='o'&&a[i+4][j]=='o')return1;for(i=0;i<15;i++)//判断左斜5个for(j=0;j<15;j++)if(a[i][j]=='o'&&a[i+1][j+1]=='o'&&a[i+2][j+2]=='o'&&a[i+3][j+3]=='o'&&a[i+4][j+4]=='o')return1;for(i=0;

温馨提示

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

评论

0/150

提交评论