《语言程序设计》课程设计报告五子棋Word格式.docx
- 文档编号:22960467
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:11
- 大小:16.46KB
《语言程序设计》课程设计报告五子棋Word格式.docx
《《语言程序设计》课程设计报告五子棋Word格式.docx》由会员分享,可在线阅读,更多相关《《语言程序设计》课程设计报告五子棋Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
in?
a?
Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。
?
五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;
它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;
它的棋文化源渊流长,具有东方的神秘和西方的直观;
既有“场”的概念,亦有“点”的连接。
它是中西文化的交流点,是古今哲理的结晶。
【设计思路】
第一步:
绘制棋谱
第二步:
对战双方落子
第三步:
判断是否有五子连珠
第四步:
重复第一、二、三步直至出现五子连珠
【设计过程】
通过构造函数实现棋盘,编写落子函数实现玩家落子,通过判断函数判断是否有五子连珠的结果。
【设计结果】
图1-1
初始画面
图1-2
双方落子
图1-3
白棋胜出
【设计总结】
本五子棋游戏是一种简单的小程序,没有图形界面以及复杂的人机、网络对战,但即便如此我们也可以在娱乐中感受到C++编程的奇妙之处。
附录:
#include<
iostream>
stdlib.h>
usingnamespacestd;
classMyGobang
{
public:
MyGobang();
voidprintBoard();
voidgetPointXY();
voidgetPointMN();
boolisFirstWin();
boolisSecondWin();
private:
intx,y,m,n,num_xy,num_mn;
charboard[20][20];
};
MyGobang:
:
MyGobang()//构造函数实现棋谱
num_xy=0;
num_mn=0;
for(inti=0;
i<
20;
i++)
for(intj=0;
j<
j++)
board[i][j]='
.'
;
}
voidMyGobang:
printBoard()//刷新棋谱
=20;
{
if(i<
10)cout<
<
"
"
elsecout<
i;
}
cout<
endl;
for(intj=1;
if(j<
10)
for(intk=0;
k<
k++)
board[j-1][k]<
else
j;
getPointXY()//第一人落子函数
请输入第"
num_xy+1<
步白旗X,Y的坐标(x,y在1和20之间):
cin>
>
x>
y;
while(x<
1||x>
20||y<
1||y>
20)
出界,请重新输入:
while(board[y-1][x-1]!
='
)
该位置已被占,重新输入:
board[y-1][x-1]='
o'
num_xy++;
boolMyGobang:
isFirstWin()//判断第一人是否赢
intnum1=1,num2=1,num3=1,num4=1;
inti,j;
//这里是判断X坐标向右的'
0'
连续数
for(i=x;
=x+3&
&
if(board[y-1][i]=='
)num1++;
elsebreak;
//这里是判断X坐标向左的'
for(i=x-2;
0<
=i&
i>
=x-5;
i--)
//这里是判断Y坐标向下的'
for(j=y;
20&
=y+3;
if(board[j][x-1]=='
)num2++;
//这里是判断Y坐标向上的'
for(j=y-2;
j>
=0&
=y-5;
j--)
//这里是判断右斜上'
for(i=x,j=y;
i++,j++)
if(board[j][i]=='
)num3++;
//这里是判断左斜下'
for(i=x-2,j=y-2;
=i-5&
=5;
i--,j--)
//这里是判断左斜上'
for(i=x-2,j=y;
=x-5&
i--,j++)
)num4++;
//这里是判断右斜下'
for(i=x,j=y-2;
i++,j--)
if(num1==5||num2==5||num3==5||num4==5)return1;
//这里总结X,Y,左斜,右斜的'
连续数,有等于五的就直接返回1否则返回0
elsereturn0;
voidMyGobang:
getPointMN()//第二人落子函数
num_mn+1<
步黑旗X,Y的坐标(x,y在1和20之间):
m>
n;
while(m<
1||m>
20||n<
1||n>
while(board[n-1][m-1]!
board[n-1][m-1]='
x'
num_mn++;
boolMyGobang:
isSecondWin()//第二人是否赢
for(i=m;
=m+3&
if(board[n-1][i]=='
for(i=m-2;
=m-5;
for(j=n;
=n+3;
if(board[j][m-1]=='
for(j=n-2;
=n-5;
for(i=m,j=n;
for(i=m-2,j=n-2;
for(i=m-2,j=n;
=m-5&
for(i=m,j=n-2;
intmain()
***************五子棋*****************"
MyGobanggobang;
gobang.printBoard();
//申明MYGobang类的一个对象
gobang.getPointXY();
//调用这个函数
//调用绘制棋盘
if(gobang.isFirstWin()!
=0)//调用第一人是否赢的函数
*************白棋胜利***************"
break;
gobang.getPointMN();
if(gobang.isSecondWin()!
=0)
*************黑棋胜利***************"
system("
pause"
);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课程设计 报告 五子棋