《C++语言程序设计》课程设计报告--五子棋

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++语言程序设计

课程设计报告

课程:C++语言程序设计题目:五子棋

年级:

专业:

学号:

姓名:

指导教师:

江苏师范大学数学与统计学院

【摘要】

五子棋是我国古代的、传统的黑白棋种之一。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。本游戏是以C++语言作为开发工具,运行环境Visual C++ 6.0,通过构造函数绘制棋谱,以及落子函数、判断函数,实现双人对弈的功能。

【关键词】五子棋、游戏、人人对战、C++

【引言】

五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。

五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。

本游戏是以C++语言作为开发工具,运行环境Visual C++ 6.0,通过构造函数绘制棋谱,以及落子函数、判断函数,实现双人对弈的功能。

【设计思路】

第一步:绘制棋谱

第二步:对战双方落子

第三步:判断是否有五子连珠

第四步:重复第一、二、三步直至出现五子连珠

【设计过程】

通过构造函数实现棋盘,编写落子函数实现玩家落子,通过判断函数判断是否有五子连珠的结果。

【设计结果】

图1-1

初始画面

图1-2 双方落子

图1-3 白棋胜出

【设计总结】

本五子棋游戏是一种简单的小程序,没有图形界面以及复杂的人机、网络对战,但即便如此我们也可以在娱乐中感受到C++编程的奇妙之处。

附录:

#include

#include

using namespace std;

class MyGobang

{

public: MyGobang();

void printBoard();

void getPointXY();

void getPointMN();

bool isFirstWin();

bool isSecondWin();

private: int x,y,m,n,num_xy,num_mn;

char board[20][20];

};

MyGobang::MyGobang()//构造函数实现棋谱

{

num_xy=0;

num_mn=0;

for(int i=0;i<20;i++)

for(int j=0;j<20;j++)

board[i][j]='.';

}

void MyGobang::printBoard()//刷新棋谱

{

for(int i=0;i<=20;i++)

{

if(i<10) cout<

else cout<

}

cout<

for(int j=1;j<=20;j++)

{

if(j<10)

{

cout<

for(int k=0;k<20;k++)

cout<

cout<

}

else

{

cout<

for(int k=0;k<20;k++)

cout<

cout<

}

}

}

void MyGobang::getPointXY()//第一人落子函数

{

cout<<"请输入第"<

cin>>x>>y;

cout<

while(x<1||x>20||y<1||y>20)

{

cout<<"出界,请重新输入:";

cin>>x>>y;

cout<

}

while(board[y-1][x-1]!='.')

{

cout<<"该位置已被占,重新输入:";

cin>>x>>y; cout<

while(x<1||x>20||y<1||y>20)

{

cout<<"出界,请重新输入:";

cin>>x>>y; cout<

}

}

board[y-1][x-1]='o';

num_xy++;

}

bool MyGobang::isFirstWin()//判断第一人是否赢

{

int num1=1,num2=1,num3=1,num4=1;

int i,j;

//这里是判断X坐标向右的'0'连续数

for(i=x;i<=x+3&&i<20;i++)

{

if(board[y-1][i]=='o') num1++;

else break;

}

//这里是判断X坐标向左的'0'连续数

for(i=x-2;0<=i&&i>=x-5;i--)

{

if(board[y-1][i]=='o') num1++;

else break;

}

//这里是判断Y坐标向下的'0'连续数

for(j=y;j<20&&j<=y+3;j++)

{

if(board[j][x-1]=='o') num2++;

else break;

}

//这里是判断Y坐标向上的'0'连续数

for(j=y-2;j>=0&&j>=y-5;j--)

{

if(board[j][x-1]=='o') num2++;

else break;

}

//这里是判断右斜上'0'连续数

for(i=x,j=y;i<20&&j<20&&i<=x+3&&j<=y+3;i++,j++) {

if(board[j][i]=='o') num3++;

else break;

}

//这里是判断左斜下'0'连续数

相关文档
最新文档