连珠游戏综合设计报告模板.doc_第1页
连珠游戏综合设计报告模板.doc_第2页
连珠游戏综合设计报告模板.doc_第3页
连珠游戏综合设计报告模板.doc_第4页
连珠游戏综合设计报告模板.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

辽宁师范大学计算机与信息技术学院综合性、设计性实验报告课程名称: 面向对象程序设计 实验题目: 连珠游戏学生姓名:陈俏专 业: 数字媒体技术 所在班级: 2014 级 5 班201421012894号同组姓名:实验日期:2015 年12 月13 日实验成绩:一、 实验目的1学会编写实用程序;2掌握编写面向对象程序设计的规范;3提高用C程序设计语言解决问题的能力;4积累调试和测试程序的经验。二、 实验设备及系统环境安装Windows操作系统和Visual C+开发环境的计算机一台三、 综合性、设计性实验的设计要求1、游戏功能三子连珠游戏棋盘是33, 3个棋子连起来即为赢。输入参数时,若输入的数字超出边界或已有棋子的地方再输入,则提示出错,要求重新输入。2、实验要求1)要求学生读懂一个三子连珠游戏程序,分析清楚程序的设计功能,设计思想,设计结构,设计技巧,设计的不足等。2)要求学生按 “实验内容”编写出程序代码,并调试通过。3)要求学生详细写出改进部分程序的设计思想及详细代码,并写出自己完善及调试程序的心得体会。3、 实验内容1)将已知程序改写成类。2)将棋盘扩充成55。3)统计输赢结果并打印输出。4)选做:使游戏更生动。四、 各功能模块设计思路及实验步骤1、 游戏设计思路定义一个棋子类,包含共有成员函数和私有数据成员。在主函数中定义一个整型变量SpotsOnBoard,表示棋子总数,定义一个字符变量choice,并赋值为Y。定义类的对象a,b,代表下棋的双方,在定义的同时调用了构造函数,赋给棋子的类别,并将双方输,赢棋次数都置为0。由于在进行完一场棋之后要询问是否在下一盘棋,所以设置一个循环,当choice等于Y时,才可以下棋。首先,调用PrintInfo()函数,输出游戏规则,调用InitialBoard()函数初始化棋盘,调用PrintBoard()函数画棋盘。定义两个整型变量x,y用来输入棋子的行和列。由于棋盘是5*5,所以当棋子总数SpotsOnBoard=25时,才能下棋。做完这些之后,第一个玩家开始下棋,输入行列,调用IFError()函数判断输入的行列是否超出边界,调用PlayTurn()函数走一步棋,调用PrintBoard()函数画棋盘(每走一步棋,需要重画一次棋盘)。调用Judge()函数判断能否连成一条线,(1)若能连成一线,第一个玩家胜利,调用Win()函数记录胜利的次数,同时调用Lose()函数记录对方失败的次数。调用ChoiceOfChar()函数询问是否再玩一局,若不再玩,则播报战况,结束游戏。(2)若没有连成一线,SpotsOnBoard加1,用if语句判断SpotsOnBoard是否等于25,若等于25,调用Draw()函数,平局的次数加1,调用ChoiceOfChar()函数询问是否再玩一局,若不再玩,则播报战况,结束游戏。(3)否则,第二个玩家下棋(下棋的过程与第一个玩家相似)。2、 核心代码1)void CGobang:InitialBoard() /初始化棋盘for(int row=0;rownSize;row+) for(int column=0;column 5 | x 5 | y 1 |( != achBoardx - 1y - 1)cout对不起,您的输入有误,请重新输入!endl;coutx;cout y;achBoardx-1y-1=c;3)int CGobang:Judge(int x,int y,char c) /判断是否棋子连成一线,若是返回1 int count,a;for(a=0,count=0;(x-a=0)&(y-a=0)&(achBoardx-ay-a=c);a+) /从左斜上方向判断是否构成胜利条件if(+count=3)return 1;for(a=1;(x+a5)&(y+a=0)&(achBoardx-ay=c);a+) /从上向下方向判断是否构成胜利条件if(+count=3)return 1;for(a=1;(x+a=0)&(achBoardxy-a=c);a+) /从左至右方向判断是否构成胜利条件if(+count=3)return 1;for(a=1;(y+a=0)&(y+a5)&(achBoardx-ay+a=c);a+) /从右斜上方向判断是否构成胜利条件if(+count=3)return 1;for(a=1;(x+a=0)&(achBoardx+ay-a=c);a+)if(+count=3) return 1;return 0;4)void ChoiceOfChar(char& choice) / 询问用户是否再玩一局 cout endl; cout Press CAPITAL Y if you want to play again. endl; cout Otherwise, press any other letter key to exit the loop. choice;5)void PrintStats(int FirstPlayer, int SecondPlayer, int Draws) / 输出统计的胜负信息 cout The O player have won FirstPlayer times endl; cout The X player have won SecondPlayer times endl; cout There was Draws draws endl; cout Thanks for using my program endl;6) 分装成类class CGobang /定义一个操作类private:static char achBoard55; /棋盘char chSort;/棋子的类别int nLose; /输棋的次数int nWin;/赢棋的次数 static int nDraw;/平局次数static int nSize; /棋盘的尺寸 nSize X nSizepublic:CGobang(char chsort)/构造函数,决定一方棋子的类别int Judge(int x,int y,char);/判断是否连成一线,是返回1,否返回0 void Win(void); /赢棋void Lose(void);/输棋 static void Draw(void); /平局void PrintInfo(void); /打印总体情况static void PrintBoard(void);/打印棋盘static void InitialBoard(void);/初始化棋盘 void Xiaqi(int &x,int &y,char c); /判断输入数字是否超过边界或在已有棋子的地方再输入;五、 实验

温馨提示

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

评论

0/150

提交评论