五子棋C++实验报告Word格式文档下载.docx

上传人:b****5 文档编号:21130367 上传时间:2023-01-27 格式:DOCX 页数:18 大小:21.63KB
下载 相关 举报
五子棋C++实验报告Word格式文档下载.docx_第1页
第1页 / 共18页
五子棋C++实验报告Word格式文档下载.docx_第2页
第2页 / 共18页
五子棋C++实验报告Word格式文档下载.docx_第3页
第3页 / 共18页
五子棋C++实验报告Word格式文档下载.docx_第4页
第4页 / 共18页
五子棋C++实验报告Word格式文档下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

五子棋C++实验报告Word格式文档下载.docx

《五子棋C++实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《五子棋C++实验报告Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。

五子棋C++实验报告Word格式文档下载.docx

该游戏基于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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1