- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
三子连珠游戏设计
【摘要】
模仿五子棋的形式,编写有一方三子或五子连成一线即获胜的程序,具体要求:
玩家可以设置棋盘的大小,即在游戏开始时输入一变量n(n=3~9),使棋盘的大小为n×n。
本程序用if-else选择语句来判断获胜者,如果棋盘变大这将非常频繁,现要求将这一功能用循环语句实现,且适用于任意大小的棋盘。
加入可以悔棋的功能,要求任意方可以在对方下棋后悔改一步,即将对方当前步和本方上一步删除,本方重新下棋。
关键词:三子连珠 小游戏 VC++程序
目录
TOC \o 1-3 \h \z \u 程序功能简介 3
课程设计要求 3
程序设计思想 4
原程序各个功能说明 4
课程设计要求的实现 6
主要源程序及注释 8
1.主函数 8
2.胜负条件的判定 10
设计过程中的疑难及解答方案和设计的不足 11
◎设计过程中的疑难及解答方案 11
◎设计的不足 12
总结 12
附1:程序运行界面(棋盘4*4的三子连珠游戏) 13
程序功能简介
该程序是TICTACTOE游戏,棋盘为3*3,3个棋子连起来即为赢。输入参数时,若输入的数字超过边界或在已有棋子的地方再输入,则提示出错,要求重新输入。
课程设计要求
1. 将程序改写成类。
2. 将棋盘扩充成4*4。
3. 统计输赢结果并打印输出。
4. 选做:使游戏更生动。(输赢条件相同)
评定难易程度:B
程序设计思想
设计一个玩家下棋的操作类,里面封装了棋盘﹑棋子类别和输赢次数等成员数据。
操作类的函数包括有初始化棋盘﹑下棋﹑判断输赢等。定义一个类的对象,在调用类中函数时直接使用对象名加函数名即可。
将两个玩家定义为两个数组用于区分他们的信息,分别用‘O’和‘X’代表两个玩家所用棋子,然后分别对两个玩家通过已定义的类的对象调用类中的函数,完成下棋过程。
进一步改进程序:
程序中用if else if格式的语句来判断玩家的输赢,当棋盘增大时,三子连珠的各种可能性成倍增加,使得语句非常繁琐,所以将其改为for语句的循环结构进行判断,当棋盘增大时,只需更改循环条件结束的参数即可,可灵活使用于各种尺寸的棋盘。
为防止用户误操作,特别是在姓名的输入时的失误,可以采用cin.getline函数读入在判断确认。
在完成第一步的基础上可将三子连珠扩充为标准的五子棋。
原程序各个功能说明
原程序的结构
输出菜单及提示信息
输出菜单及提示信息
输入姓名
由“O”先手下棋
结束
输出最终结果
询问是否继续下棋
“O”输入棋子所在的行列
判断胜负﹑和棋条件
输出结果
“X”输入棋子所在的行列
不符合
错误
正确
错误
正确
符合
Y
N
类的说明
类是对一组具有相同属性、相同行为的对象的抽象的描述,不占用内存空间。可以把类看作“理论上”的对象,也就是说,它为对象提供蓝图,但在内存中并不存在。从这个蓝图可以创建任何数量的对象。从累创建的所有对象都有相同的成员:属性、行为或方法。这些对象才是具体的独立的个体,占用存储空间,因此,对象又称作类的实例。
下面以具体程序说明。
在头文件之后定义了一个名为CGobang的类:
class CGobang
{
char board[4][4];//用数组来定义一个4*4的棋盘
public:
void Guize();//打印菜单总体情况,说明游戏规则和方法,无返回值
void Dayinqp();//打印棋盘,无返回值
void Xiaqi(char*,int ,int ,char);//下棋,无返回值
int Huosheng(int,int,char);//判断那个选手赢,返回值为一整形数
void Choice(char );//是否再玩,无返回值
void Chongzhi();//重置棋盘,无返回值
};
在这个类中,定义了一个未经说明的数组被默认为私有成员,即char board[4][4],用它来存储玩家在下棋的过程中所输入的棋子的坐标,并以此来区分表示不同的两个玩家。另外,这个类中还说明了五个没有返回值的函数以及一个返回值为整形数的函数,对它们的定义将出现在主函数完成之后,所以本着“先定义,后调用”的原则,在类中的说明相当于自定义函数中的函数说明,这样可以使在主函数调用类中的公有函数时变得更加明了清晰。
在这个函数中,对类的对象的定义出现在了主函数第一行,即:
CGobang s;//定义类的一个对象s
对这个对象的定义的目的是,在下面不同玩家的下其中的不同操作中,可以直接通过这个对象来分别调用类中的任意公有成员函数,这样就避免了通过类名来调用函数时可能出现的冗长
原创力文档


文档评论(0)