- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++课程设计报告
任课教师 时间 2014//5
实验题目 三子连珠游戏 评定难易级别 B级
实验报告成绩
题目名称:三子连珠游戏
难度等级:B级
程序功能介绍
该程序是TICTACTOE游戏,棋盘为3×3,3个棋
子连起来即为赢。输入参数时,若输入的数字超出边界或在已有的地方再输入,则提示出错,要求重新输入。
课程设计要求:
将程序改写成类。
将棋盘扩充成4×4。
统计输赢结果并打印输出。
选做:使游戏更生动。(输赢条件相同)。
程序设计思想
设计一个玩家下棋的操作类,里面封装了棋盘﹑棋子类别和输赢次数等成员数据,操作类的函数包括有初始化棋盘﹑下棋﹑判断输赢等。定义一个类的对象,在调用类中函数时直接使用对象名加函数名即可。将两个玩家定义为两个数组用于区分他们的信息,分别用‘O’和‘X’代表两个玩家所用棋子,然后分别对两个玩家通过已定义的类的对象调用类中的函数,完成下棋过程。
进一步改进程序:
程序中用if else if格式的语句来判断玩家的输赢,当棋盘增大时,三子连珠的各种可能性成倍增加,使得语句非常繁琐,所以将其改为for语句的循环结构进行判断,当棋盘增大时,只需更改循环条件结束的参数即可,可灵活使用于各种尺寸的棋盘。
为防止用户误操作,特别是在姓名的输入时的失误,可以采用cin.getline函数读入在判断确认。
在完成第一步的基础上可将三子连珠扩充为标准的五子棋。
六.源程序结构流程框图与说明
七.基本数据结构
在头文件之后定义了一个名为CGobang的类:
class CGobang
{
private:
char board[4][4];//用数组来定义一个4*4的棋盘
public:
void Rules();//打印菜单总体情况,说明游戏规则和方法,无返回值
void Dayinqp();//打印棋盘,无返回值
void Xiaqi(char*,int ,int ,char);//下棋,无返回值
int Huosheng(int,int,char);//判断那个选手赢,返回值为一整形数
void Choice(char );//是否再玩,无返回值
void Chongzhi();//重置棋盘,无返回值
};
在这个类中,定义了一个未经说明的数组被默认为私有成员,即char board[4][4],用它来存储玩家在下棋的过程中所输入的棋子的坐标,并以此来区分表示不同的两个玩家。另外,这个类中还说明了五个没有返回值的函数以及一个返回值为整形数的函数,对它们的定义将出现在主函数完成之后,所以本着“先定义,后调用”的原则,在类中的说明相当于自定义函数中的函数说明,这样可以使在主函数调用类中的公有函数时变得更加明了清晰。
八.程序设计思想
1.建立基本的棋子类
class CGobang
{
char board[4][4];
public:
void Rules();
void Dayinqp();
void Xiaqi(char*,int ,int ,char);
int Huosheng(int,int,char);
void Choice(char );
void Chongzhi();
};
2.在类外建立成员
①.建立Rules函数,描述游戏规则
void CGobang::Rules()
{
cout 欢迎使用三子连珠游戏 endl;
cout 第一位玩家的棋子用o表示,第二位玩家的棋子用X表示 endl;
cout 该哪一位玩家时从键盘输入棋子的行和列 endl;
cout endl;
}
②设置棋盘规模
void CGobang::Dayinqp()
{
cout endl;
cout 1 2 3 4 endl;
cout 1 board[0][0] | board[0][1] | board[0][2] | board[0][3] endl;
cout ---|---|---|--- endl;;
cout 2 board[1][0] | board[1][1] | board[1][2] | board[1][3] endl;
cout ---|---|---|--- endl;
cout 3 board[2][0] | board[2][1] | board[2][2] | board[2][3] endl;
cout ---|---|---|--- endl;
cout 4 board[3][0] |
文档评论(0)