c++课程设计五子棋游戏文档格式.docx
- 文档编号:16643598
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:26
- 大小:377.35KB
c++课程设计五子棋游戏文档格式.docx
《c++课程设计五子棋游戏文档格式.docx》由会员分享,可在线阅读,更多相关《c++课程设计五子棋游戏文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
//黑棋出子函数
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]='
.'
;
}
}
3.2.2功能模块
(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)黑白棋输赢的判断,判断当前棋盘的形势是哪一方获胜。
五子棋的胜负,在于判断棋盘上是否有一个点,从这个点开始的右、下、右下、左下四个方向是否有连续的五个同色棋子出现,如图:
图3判断胜负方向
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:
*************欢迎使用*******************"
std:
______________________________________________"
|╋?
╋?
|"
●?
○e╋?
○e○e╋?
|---------------------------------------------"
进入按任意键"
fivea;
//定义一个类的对象
inttemp;
a.menu();
这是本游戏的棋盘,请按坐标输入棋子"
a.showqipan();
//通过对象调用功能函数
确认请按1,退出请按其他键"
temp;
if(temp!
=1)//游戏开始退出控制
exit
(1);
if(temp==1)
游戏开始:
for(inti=0;
{
a.getpointxy();
a.print();
if(a.IsxyWin())
白棋胜"
游戏结束\n"
a.getpointmn();
if(a.IsmnWin())
黑棋胜"
4.运行结果与分析
(1)此界面为欢迎界面,按任意键进入游戏。
图4游戏界面
(2)此界面表示进入棋盘界面,确认按1开始玩游戏,其他键退出。
图5棋盘界面
(3)此界面表示游戏开始。
图6游戏开始界面
(4)此界面表示输入横纵坐标完成落子。
图7输入白棋坐标
(5)此界面表示在同一地方下棋的情况。
图8所下位置重复
(6)此界面为游戏结束界面,显示胜出方并显示游戏结束字样。
图9游戏结束界面
5.心得体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程。
随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C++语言又是最常见,功能最强大的一种高级语言,因此做好C++语言课程设计是十分必要的。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,把前面所学过的知识又重新温故了一遍。
6.参考文献
[1]朱晴婷,黄海鹰,陈莲君.VisualC++程序设计—基础与实例分析[M].北京:
清华大学出版社,2008.2:
101-244
[2]刘瑞新.VisualC++6.0开发技巧与实例教程.[M].北京:
机械工业出版社,2006.10:
214-299
[3]黄维通.VisualC++面向对象与可视化程序设计(第2版).[M].北京:
清华大学出版社,2007.8:
70-95
[4]郑阿奇.VisualC++教程[M].北京:
清华大学出版社,2005.4:
132-150
[5]夏崇镨,任海军,余建.VisualC++课程设计案例精编[M].北京:
清华大学出版社,2008.11:
112-130
附录:
#include<
iostream>
usingnamespacestd;
five(intX=0,intY=0,intM=0,intN=0,intNum_xy=0,intNum_mn=0)//构造函数初始化
{x=X;
voidgetpointxy();
//白棋子计数
voidgetpointmn();
//黑棋出子计数
voidshowqipan();
voidprint();
//输出下棋盘界面
boolIsxyWin();
boolIsmnWin();
voidmenu();
getpointxy()//判断白棋出子情况对其计数
请分别输入"
白棋的横坐标和纵坐标:
if(!
输错误请重新输入:
getpointxy();
elseif(qipan[y-1][x-1]!
请下的位置已经有棋子请重新输入:
elseif(num_xy+num_mn>
棋盘已满,平局"
exit(0);
else
{qipan[y-1][x-1]='
num_xy++;
步黑棋的横坐标和纵Y坐标:
getpointmn();
elseif(qipan[n-1][m-1]!
所下的位置已经有棋子,请重新输入"
棋?
盘¨
¬
已°
?
满¨
²
,ê
平?
局?
!
{qipan[n-1][m-1]='
num_mn++;
menu()//进入菜单Ì
界面
{char*q=newchar[9];
{if(p<
p++;
{if(i>
{q++;
if(q<
1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 课程设计 五子棋 游戏