五子棋C++实验报告Word格式文档下载.docx
- 文档编号:21130367
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:18
- 大小:21.63KB
五子棋C++实验报告Word格式文档下载.docx
《五子棋C++实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《五子棋C++实验报告Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
该游戏基于DOS实现,其功能可概括为:
一:
玩家可以设定游戏的玩法,即在游戏开始时输入变量,决定选用三子棋或者四子棋;
二:
玩家可以设置期盼的大小,即在游戏开始时输入一变量n(n=3~9),使棋盘的大小为n*n。
;
三:
加入可以悔棋功能,要求任意方可以在对方下去后修改一步,即将对方当前步和本方上一步删除,本方重新下棋。
四:
下棋方法使用输入棋盘坐标,棋盘在每次下棋后刷新屏幕。
1.3运行环境
软件:
运行在Windows软件环境下;
硬件:
具有网络连接设备的PC机或笔记本电脑;
最低配置:
要求内存大于128M,硬盘大于1G。
本系统的设计是在Windows7RTM7600.16385(X86)中文旗舰版操作系统环境下,使用MicrosoftVisualC++6.0中文版开发成功的。
由于VisualC++6.0在不牺牲灵活性、性能和控制力度的同时,给C++带来更高水平的生产效率。
除了IntelliSenseTechnology(智能感应技术)和EditandContinue(即编即调)等显著缩短开发时间的新特性外,VisualC++6.0还为Web开发和企业开发提供更良好的支持。
面向对象的程序设计
MicrosoftVisualC++6.0支持面向对象的程序设计,但它与一般的面向对象的程序设计语言(C++)不完全相同。
在一般的面向对象程序设计语言中,对象由程序代码和数据组成,是抽象的概念;
而MicrosoftVisualC++6.0则是应用面向对象的程序设计方法,把程序和数据封装起来作为一个对象,并为每个对象赋予应有的属性,使对象成为实在的东西。
在设计对象时,不必编写建立和描述每个对象的程序代码,而是用工具画在界面上,MicrosoftVisualC++6.0自动生成对象的程序代码并封装起来。
每个对象以图形方式显示在界面上,都是可视的。
二、程序分析
2.1函数分析
主函数:
voidmain()连珠游戏主界面,显示两个选项:
A:
三子棋、B:
四子棋;
采用
do(){
}while()语句实现;
类:
在public中包含一个构造函数,两个输出棋盘函数分别为print1()、print2(),一个三子棋游戏的函数(Three()),一个四子棋游戏的函数(Four()),同时还有游戏四个判断胜利的函数、悔棋函数,和获取游戏结果的函数;
头文件:
将类定义在名为Game一个头文件中,同时对类中的各个函数定义、初始化。
2.2程序流程图
三、技术路线
3.1总体方案
3.1.1采用的软件及开发平台
在Windows7的环境下,采用的是Microsoft公司的VisualC++作为开发平台。
利用面向对象的思想实现一个连珠游戏系统,具体使用了:
体现OOP的抽象、封装、多态3种关键技术,构造了基于Game的游戏系统,从而实现游戏的各种功能。
3.1.2总体方案
先设计一个基本构架,然后往函数中逐步添加相应的子函数,一步步完善功能;
3.2详细设计
1.设置一个类Game();
2.我们可以在此基础之上为类添加相应功能函数,如judge1()、regret()等函数;
3.Three()或者Four()函数调用相应的功能函数,来实现游戏的对局;
4.主函数中启用输入选项,若是选择三子棋,则调用Game类中Three()函数;
如果选择四子棋,则调用Game类中Four()函数;
5.进入相应的游戏玩法,可以查看对应的游戏帮助;
6.游戏中途,可以选择悔棋,悔棋时,只要输入玩家想要悔棋的坐标即可;
7.游戏结束后,统计游戏结果,并输出。
类说明:
classGame{
public:
Game(intM);
voidprint1();
输出棋盘
(1)
voidprint2();
输出棋盘
(2)
voidThree();
三子棋双人对战
voidFour();
四子棋双人对战
intjudge1(int,int);
判断三子棋中玩家1胜利
intjudge2(int,int);
判断三子棋中玩家2胜利
intjudge3(int,int);
判断四子棋中玩家1胜利
intjudge4(int,int);
判断四子棋中玩家2胜利
voidregret(int,int);
悔棋
staticintGetX(){获取X的值
returnX;
}
staticintGetY(){获取Y的值
returnY;
private:
intN;
staticintX;
记录玩家一赢的次数
staticintY;
记录玩家二赢的次数
chargame[10][10];
};
intGame:
:
X=0;
Y=0;
其中,“Game”类直接定义在“Game.StroustrupC++程序设计语言,高等教育出版社
李春葆等数据结构教程(第三版),清华大学出版社
万常选舒蔚等C语言与程序设计方法,科学出版社
张军等VisualC++实例精通,机械工业出版社
王艳萍Windows程序设计,人民邮电出版社
附录
源程序代码
类的定义:
四子棋双人对战
intGetFull(int,int);
判断棋盘是否布满棋子
staticintGetX(){
staticintGetY(){
静态变量的初始化:
“Game.X;
voidGame:
print1(){输出棋盘
(1)
inti,j;
cout<
<
"
"
;
for(i=1;
i<
N+1;
i++)
i;
endl;
for(i=0;
N;
i++){
for(j=0;
j<
=N;
j++){
if(j==0)
cout<
i+1<
else
."
}
cout<
}
print2(){输出棋盘
(2)
j++){
elseif(game[i][j]=='
O'
O"
X'
X"
regret(inta,intb){悔棋
game[a][b]='
0'
judge1(inta,intb){三子棋中判断玩家1胜利
if((game[a][b-1]=='
&
game[a][b+1]=='
)||(game[a][b-1]=='
game[a][b-2]=='
)||(game[a][b+1]=='
game[a][b+2]=='
))
return1;
判断该行是否满足条件
elseif((game[a+1][b]=='
game[a-1][b]=='
)||(game[a+1][b]=='
game[a+2][b]=='
)||(game[a-1][b]=='
game[a-2][b]=='
判断某该列是否满足条件
elseif((game[a+1][b+1]=='
game[a-1][b-1]=='
)||(game[a+1][b+1]=='
game[a+2][b+2]=='
)||(game[a-2][b-2]=='
判断该正斜列是否满足条件
elseif((game[a+1][b-1]=='
game[a-1][b+1]=='
)||(game[a+1][b-1]=='
game[a+2][b-2]=='
)||(game[a-2][b+2]=='
))
判断该反斜列是否满足条件
else
return0;
judge2(inta,intb){三子棋中判断玩家2胜利
Three(){三子棋
intf=0;
判断玩家
intp1,p2;
下棋坐标
print1();
for(;
){
if(f==0){
请玩家一输入下棋坐标(玩家二要悔棋请输入两个0)"
cin>
>
p1>
p2;
if(p1==0&
p2==0){
请输入要悔棋的坐标"
cin>
if(game[p1][p2]!
='
){
cout<
输入有误"
continue;
}
regret(p1,p2);
}
elseif(game[p1][p2]!
continue;
elseif(p1>
=1&
p1<
=9&
p2>
p2<
=9){
game[p1][p2]='
system("
cls"
);
else{
输入坐标有误,请重输入"
if(judge1(p1,p2)==1){
print2();
玩家一胜利!
endl<
X++;
break;
print2();
f=1;
elseif(f==1){
请玩家二输入下棋坐标(玩家一要悔棋请输入两个0)"
p2==0){
输入坐标有误,请重输"
if(judge2(p1,p2)==1){
玩家二胜利!
Y++;
f=0;
else
输入有误,请重输"
judge3(inta,intb){四子棋中玩家一胜利判断条件
if(((game[a][b-3]=='
)&
(game[a][b-2]=='
(game[a][b-1]=='
))||((game[a][b-1]=='
(game[a][b+1]=='
(game[a][b+2]=='
))||
((game[a][b+3]=='
))||((game[a][b-2]=='
)))
return1;
判断某一行存在4子练成一条线
elseif(((game[a-3][b]=='
(game[a-2][b]=='
(game[a-1][b]=='
))||((game[a-1][b]=='
(game[a+1][b]=='
(game[a+2][b]=='
((game[a-1][b-1]=='
(game[a+1][b+1]=='
(game[a+2][b+2]=='
))||((game[a+1][b+1]=='
(game[a+3][b+3]=='
)))
判断某一列存在4子练成一条线
elseif(((game[a-3][b-3]=='
(game[a-2][b-2]=='
(game[a-1][b-1]=='
((game[a][b+3]=='
判断正斜列存在4子练成一条线
elseif(((game[a-1][b+1]=='
(game[a-2][b+2]=='
(game[a-3][b+3]=='
))||((game[a+1][b-1]=='
(game[a-1][b+1]=='
((game[a+2][b-2]=='
(game[a+1][b-1]=='
))||((game[a+3][b-3]=='
(game[a+2][b-2]=='
判断反斜列存在4子练成一条线
return0;
judge4(inta,intb){四子棋中玩家二胜利判断条件
if(((game[a][b-3]=='
elseif(((game[a-3][b]=='
elseif(((game[a-3][b-3]=='
X
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋 C+ 实验 报告