c++五子棋课程设计报告Word格式.docx

上传人:b****7 文档编号:22384631 上传时间:2023-02-03 格式:DOCX 页数:29 大小:220.52KB
下载 相关 举报
c++五子棋课程设计报告Word格式.docx_第1页
第1页 / 共29页
c++五子棋课程设计报告Word格式.docx_第2页
第2页 / 共29页
c++五子棋课程设计报告Word格式.docx_第3页
第3页 / 共29页
c++五子棋课程设计报告Word格式.docx_第4页
第4页 / 共29页
c++五子棋课程设计报告Word格式.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

c++五子棋课程设计报告Word格式.docx

《c++五子棋课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《c++五子棋课程设计报告Word格式.docx(29页珍藏版)》请在冰豆网上搜索。

c++五子棋课程设计报告Word格式.docx

评定日期:

目录

1.设计目的.................................................................4

2.设计要求................................................................4

3.设计方案................................................................4

4.设计内容................................................................7

4.1系统的主要结构和类结构..................................................7

4.2

(2)五子棋类的结构.......................................................7

4.3⑶系统工作流程介绍....................................................7

4.4⑷类的介绍.............................................................8

4.5(5)各个模块的介绍......................................................8

4.6(6)程序运行图示........................................................14

5.总结.....................................................................16

参考文献...................................................................17

1.设计目的

(1)加深我对面向对象程序基本的理解和掌握。

(2)熟练掌握基本流程图的绘制。

(3)熟练visio的一些操作方法。

(4)能够在调试程序中快速发现并排除程序中的错误。

(5)提高面向对象程序语言解决实际中的问题的能力。

2.设计要求

五子棋是玩家在游戏棋盘上逐个输入黑子或白子的坐标,因此游戏要求在DOS界面生成一个可供操作的棋盘。

通过输入坐标完成对应落子情况,在输入过程中判断落子是否正确、是否有一方胜利等情况。

编写代码可以在VC6.0下编译通过。

游戏要能实现五子棋游戏的简单操作。

程序中要体现面向对象思想。

3.设计方案

(必须包含系统功能说明、用例图和类图)

一、用例图

落子

基于用户的用例图

步数用例图

系统用例图

1)输出棋盘界面菜单及图像2)开始进入控制3)黑白棋正确输入格式控制4)判断黑白输赢控制5)正确计数对羿步数及下一步所要走的棋盘界面

二、类图

4.设计内容

⑴本系统的主要结构和类结构

1)五子棋功能实现的主要结构函数

voidgetpointxy();

//白棋出子函数

voidgetpointmn();

//黑棋出子函数

voidshowqipan();

//实现20行20列正方形界面输出

voidprint();

//输出下一棋盘界面及计数

boolIsxyWin();

//白棋获胜

boolIsmnWin();

//黑棋获胜

voidmenu();

//显示开始菜单界面

(2)五子棋类的结构

classfive

{

intx,y,m,n,num_xy,num_mn;

charqipan[20][20];

//定义20行20列的数组

public:

five(intX=0,intY=0,intM=0,intN=0,intNum_xy=0,intNum_mn=0)//构造函数初始化

x=X;

y=Y;

m=M;

n=N;

num_xy=Num_xy;

num_mn=Num_mn;

for(inti=0;

i<

20;

i++)//输出20行20列的棋盘界面

{

for(intj=0;

j<

j++)

qipan[i][j]='

.'

;

}

}

⑶系统工作流程介绍。

⑷类的介绍:

该类完成了对输入棋子坐标的初始化,通过for循环实现了一个20行20列的坐标,在公有成员中定义了相应的功能函数

//白棋出子及计数

//黑棋出子及计数

//输出下一棋盘界面

(5)各个模块的介绍:

1)类的实现:

包括对数据成员的赋值和成员函数的初始化还有通过for循环实现对20行20列坐标的定义:

源代码如下

{x=X;

y=Y;

{for(intj=0;

j++)qipan[i][j]='

};

2)白棋和黑棋落子情况的判断的实现,源代码如下:

voidfive:

:

getpointxy()//判断白棋出子情况及对其计数

{std:

cout<

<

"

请分别输入第"

num_xy+1<

步白棋○的横坐标和纵坐标:

std:

cin>

>

y>

x;

if(!

(1<

=x&

&

x<

=20&

1<

=y&

y<

=20))

{std:

cout<

"

输入错误,请重新输入:

endl;

getpointxy();

elseif(qipan[y-1][x-1]!

='

请所下的位置已经有棋子,请重新输入:

<

endl;

getpointxy();

elseif(num_xy+num_mn>

=400)

棋盘已满,平局!

endl;

exit(0);

else

{qipan[y-1][x-1]='

O'

num_xy++;

}

getpointmn()//判断黑棋出子情况及对其计数

num_mn+1<

步黑棋●的横坐标和纵坐标:

n>

m;

=m&

m<

=n&

n<

getpointmn();

elseif(qipan[n-1][m-1]!

='

{qipan[n-1][m-1]='

*'

num_mn++;

}

3)菜单界面模块

menu()//进入菜单界面

{char*q=newchar[9];

cin>

q;

if(strcmp(q,"

c"

))

five:

showqipan();

4)输出模块

showqipan()//输出20行20列的坐标数值

{intp=0,q=0;

=20;

i++)

{if(p<

10)

{std:

p<

'

'

else

std:

p;

p++;

cout<

for(i=0;

{if(i>

=0)

{q++;

if(q<

10)std:

q<

elsestd:

q;

}

j<

j++)std:

qipan[i][j]<

;

std:

print()

{std:

elsestd:

5)黑白棋输赢的判断,其源代码如下:

boolfive:

IsxyWin()//白棋获胜实现函数

{intnum1=1,num2=1,num3=1,num4=1;

for(inti=x;

x+5&

x+5<

20;

i++)

{if(qipan[y-1][i]!

)break;

if(qipan[y-1][i]=='

)num1++;

for(i=x-2;

i>

=0;

i--)

if(qipan[y-1][i]=='

for(i=y;

y+5;

{if(qipan[i][x-1]!

if(qipan[i][x-1]=='

)num2++;

for(i=y-2;

{if(qipan[i][x-1]!

5&

x+i<

20&

y+i<

20;

i++)

{if(qipan[y+i][x+i]!

if(qipan[y+i][x+i]=='

)num3++;

x-i-2>

=0&

y-i-2>

5;

i++)

{if(qipan[y-i-2][x-i-2]!

if(qipan[y-i-2][x-i-2]=='

x+i<

20&

y-i-2>

=0&

i++)

{if(qipan[y-i-2][x+i]!

if(qipan[y-i-2][x+i]=='

)num4++;

y+i<

x-i-2>

{if(qipan[y+i][x-i-2]!

if(qipan[y+i][x-i-2]=='

if(num1>

=5||num2>

=5||num3>

=5||num4>

=5)return1;

elsereturn0;

黑棋获胜情况与白棋类似

6)主函数模块

voidmain()

{std:

*************欢迎使用*^_^*`~******************"

______________________________________________"

|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"

|╋╋╋╋●╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"

|╋╋╋╋╋╋○╋╋╋╋╋○╋╋╋╋╋╋╋╋╋|"

|╋╋╋╋╋╋╋╋●╋╋╋╋╋╋╋╋╋╋╋╋╋|"

|╋╋╋╋●╋╋╋╋╋●○╋╋╋╋╋╋╋╋╋╋|"

|╋╋╋╋╋╋╋╋○○╋○╋╋╋╋╋╋╋╋╋╋|"

|╋╋╋╋╋╋●╋╋╋╋●╋╋╋╋╋╋╋╋╋╋|"

|---------------------------------------------"

进入按任意键"

fivea;

//定义一个类的对象

inttemp;

a.menu();

这是本游戏的棋盘,请按坐标输入棋子:

a.showqipan();

//通过对象调用功能函数

确认请按1,退出请按其他键:

temp;

if(temp!

=1)//游戏开始及退出控制

exit

(1);

if(temp==1)

{std:

游戏开始:

for(inti=0;

{

a.getpointxy();

a.print();

if(a.IsxyWin())

{

std:

白棋胜!

break;

}

a.getpointmn();

if(a.IsmnWin())

黑棋胜!

}

}

游戏结束\n"

(6)程序运行图示:

进入游戏界面

棋盘界面

通过输入横纵坐标完成落子

下在同一个地方的情况

获胜情况

5.总结

1)通过此次课程设计,让我产生对益智游戏编程的兴趣,尤其是当我真正把那程序运行出来时,那种兴奋劲,无法比拟。

2)在这次课设的过程中当然也让我学到了很多东西,让我学到了很多课外的相关C++高层次的东西,当然其中也复习到了C++知识,尤其是通过类的运用,更让我体会面向对象在编程的过程中的作用。

3)由于能力所限,所以该五子棋个相关功能还比较少,代码还过于冗长,我相信接下去只要我继续努力,一定可以克服次问题。

参考文献

[1]廉师友编著,C++面向对象程序设计简明教程,西安电子科技大学出版社,1998

[2]李师贤等编著,面向对象程序设计基础,高等教育出版社,1998

[3]谭浩强编著,C++程序设计,清华大学出版社,2004

附加源代码

#include<

iostream>

usingnamespacestd;

five

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

当前位置:首页 > 高等教育 > 经济学

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

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