精品五子棋人人对战c++五子棋毕业论文报告.docx

上传人:b****6 文档编号:12592695 上传时间:2023-06-06 格式:DOCX 页数:30 大小:176.09KB
下载 相关 举报
精品五子棋人人对战c++五子棋毕业论文报告.docx_第1页
第1页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第2页
第2页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第3页
第3页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第4页
第4页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第5页
第5页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第6页
第6页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第7页
第7页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第8页
第8页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第9页
第9页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第10页
第10页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第11页
第11页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第12页
第12页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第13页
第13页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第14页
第14页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第15页
第15页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第16页
第16页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第17页
第17页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第18页
第18页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第19页
第19页 / 共30页
精品五子棋人人对战c++五子棋毕业论文报告.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

精品五子棋人人对战c++五子棋毕业论文报告.docx

《精品五子棋人人对战c++五子棋毕业论文报告.docx》由会员分享,可在线阅读,更多相关《精品五子棋人人对战c++五子棋毕业论文报告.docx(30页珍藏版)》请在冰点文库上搜索。

精品五子棋人人对战c++五子棋毕业论文报告.docx

精品五子棋人人对战c++五子棋毕业论文报告

 

VC课程设计报告

学院:

理学院

专业班级:

信息与计算科学班

学生姓名:

*****

学生学号:

12345

指导教师:

###

提交时间:

2013年07月02日

成绩:

设计题目:

五子棋人人对战

 

目录

第1章引言4

第2章任务概述4

2.1问题概述4

2.1.1问题重述4

2.1.2设计目的4

2.2需求分析4

2.2.1基本要求4

2.2.2游戏功能介绍4

第3章概要设计4

3.1功能设计4

3.2程序结构4

3.3基本流程4

第4章程序实现4

4.1主要变量及函数的说明4

4.1.1主要变量4

4.1.2主要函数4

4.2主要功能的实现4

4.2.1类声明4

4.2.2棋盘初始化4

4.2.3开始下棋4

4.2.4判断下棋合法4

4.2.4判断输赢4

第5章结果与总结4

5.1运行结果截图4

5.2总结4

参考文献:

4

第1章引言

通过一学期的课程学习,对和Visual2010C++编程环境有了一定程度的了解。

根据课程要求,利用两周时间对所学知识加以巩固学习,用c++编译小游戏,初步了解程序设计与软件实现的思想。

该设计通过对“五子棋人人对战”游戏的编写对所学知识复习巩固。

程序设计过程中,先对问题进行了全面分析,将“五子棋人人对战”划分成几个子问题后,逐步细化,最终归结成一个个函数的实现。

第2章任务概述

2.1问题概述

2.1.1问题重述

设计一个五子棋,能实现人人对战。

(棋盘大小为13X13)

2.1.2设计目的

独立地利用所学的C++程序设计和VisaulC++6.0编程环境编写程序。

2.2需求分析

2.2.1基本要求

明确五子棋游戏的游戏规则,编写程序实现其功能。

2.2.2游戏功能介绍

为了更好地实现游戏,首先必须明确“五子棋”的游戏规则。

大体的规则可描述如下:

(1)进入主界面后,选择开始游戏。

(2)开始游戏后,一方开始下棋。

(3)再由另一方下棋

(4)判断输赢。

(5)玩家选择结束游戏时,结束游戏。

第3章概要设计

3.1功能设计

程序主要实现的功能如下所述:

(1)启动程序,出现主界面。

(2)显示棋盘。

(3)选择开始游戏。

(4)有一方开始下棋,并判断下棋是否合理。

(5)判断输赢。

(6)有另一方开始下棋,并判断下棋是否合理。

(7)判断输赢。

(8)选择是否继续。

(9)游戏结束后,退出游戏。

3.2程序结构

程序的结构如下图所示:

图3.2程序结构

3.3基本流程

根据游戏规则及其结构图,画出如下程序基本流程图:

图3.3基本流程

第4章程序实现

4.1主要变量及函数的说明

4.1.1主要变量

charboard[14][14];//棋盘大小

intx;//下棋的横坐标

inty;//下棋的列坐标

intcount;//下棋的个数

inta;//交换下棋

4.1.2主要函数

voidMainForm();

//显示主菜单

voidPlayEplain();

//游戏说明

voidPrintBoard();

//打印初始棋盘

voidInitialBoard();

//初始化棋盘

voidPlayChess();

//开始下棋

wuziqi();

//初始化a和count,a是交换下棋,count记录棋盘是否下满

intCheckWin(intx,inty)

;//判断赢棋

4.2主要功能的实现

4.2.1类声明

classwuziqi

{

public:

voidMainForm();//显示主菜单

voidPlayEplain();//游戏说明

voidPrintBoard();//打印初始棋盘

voidInitialBoard();//初始化棋盘

voidPlayChess();//开始下棋

wuziqi();//初始化a和count,a是交换下棋,count记录棋盘是否下满

private:

intCheckWin(intx,inty);//判断赢棋

charboard[13][13];

intx;//下棋的横坐标

inty;//下棋的列坐标

intcount;//计数判断是否满

inta;//判断谁落子

};

4.2.2棋盘初始化

Voidwuziqi:

:

InitialBoard()//初始化棋盘,将所用的位置设置为空格

for(i=1;i

{

for(i=1;i

{将所有下棋的格线设为空格}

}

Voidwuziqi:

:

PrintBoard()///打印棋盘

利用制表符打印棋盘(┏┳┓┣╋┫┛┻┗)

4.2.3开始下棋

voidPlayChess();//开始下棋

由a的值决定下棋方

If(a==0)

一方下棋

Else

另一方下棋

用坐标决定下棋位置

4.2.4判断下棋合法

如果输入是否越界

{

如果board[x][y]=='空格'就可以下棋

{

board[x][y]设为○}

如果board[x][y]是否已经有棋子

{

输出"输入错误,此位置已经有棋子了,请重新输入!

"<

continue;返回去继续输入。

}

}

如果输入是否越界

{

cout<<"输入位置超出范围,请重新输入!

"<

PrintBoard();打印棋盘

返回重新输入

}

4.2.5判断输赢

intCheckWin(intx,inty);//判断赢棋

当一方有五个棋子连成线时赢,用-1和1判断输赢,当棋盘满是为平局。

第5章结果与总结

5.1运行结果截图

1..启动画面

图5-1启动画面

2.游戏说明

图5.2游戏说明

3.退出游戏

图5.3退出游戏

4进入游戏

图5-4进入游戏

5.输入越界

图5-5输入超出范围

6。

已有棋子

图5-6已有棋子

7.游戏进行

图5-7游戏进行

8.判断输赢

图5-8判断输赢

5.2总结

编辑小游戏这在以前我都以为是遥不可及,但现在通过这次五子棋的设计我明白了,并不是如此,通过课程设计,我们对《C++程序设计》这门课程有了更深一步的了解。

它是计算机程序设计的重要技术。

同时也使我知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。

因为我们学习知识就是为了实践。

而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。

另外,在课程设计期间,让自己的思维变得活跃,也会看懂,学明白程序问题,总之,受益匪浅。

参考文献:

C++程序设计(第8版)(美)WalterSavitch清华大学出版社

附录:

#include

#include//setw(3)

usingnamespacestd;

constintMAX=13;

classwuziqi

{

public:

voidMainForm();//显示主菜单

voidPlayEplain();//游戏说明

voidPrintBoard();//打印初始棋盘

voidInitialBoard();//初始化棋盘

voidPlayChess();//开始下棋

wuziqi();//初始化a和count,a是交换下棋,count记录棋盘是否下满

private:

intCheckWin(intx,inty);//判断赢棋

charboard[13][13];

intx;//下棋的横坐标

inty;//下棋的列坐标

intcount;//计数判断是否满

inta;//判断谁落子

};

//////////////////////////////////////

wuziqi:

:

wuziqi():

a(0)//将a初始化为0

{

}

//////////////////////////////////////////////////////

voidwuziqi:

:

PlayChess()

{

count=0;

for(;;)//交换下棋

{

//玩家○输入

if(a==0)//先下棋

{

cout<<"请玩家○输入下棋位置!

"<

cout<<"请输入行坐标:

";

cin>>x;

cout<<"请输入列坐标:

";

cin>>y;

system("cls");//清屏

if((x>0&&x<=MAX)&&(y>0&&y<=MAX))//判断请输入是否越界

{

if(board[x][y]=='')//如果board[x][y]==''就可以下棋

{

board[x][y]='O';

//PrintBoard1();

PrintBoard();

count++;

}

else//如果board[x][y]是否已经有棋子

{

system("cls");

cout<<"玩家○输入错误,此位置已经有棋子了,请重新输入!

"<

//PrintBoard1();

PrintBoard();

continue;

}

}

else

{

system("cls");

cout<<"玩家○输入位置超出范围,请重新输入!

"<

//PrintBoard1();

PrintBoard();

continue;

}

if(CheckWin(x,y)==1)//判断输赢

{

cout<<"恭喜玩家○获得胜利!

"<

break;

};

if(count==MAX*MAX)//判断是否下满

{

cout<<"平局!

"<

break;

}

a=1;

}

//玩家●输入和玩家○输入一样

elseif(a==1)

{

cout<<"请玩家●输入下棋位置!

"<

cout<<"请输入行坐标:

";

cin>>x;

cout<<"请输入列坐标:

";

cin>>y;

system("cls");

if((x>0&&x<=MAX)&&(y>0&&y<=MAX))

{

if(board[x][y]=='')

{

board[x][y]='X';

PrintBoard();

count++;

}

else

{

system("cls");

cout<<"玩家●输入错误,此位置已经有棋子了,请重新输入"<

PrintBoard();

continue;

}

}

else

{

system("cls");

cout<<"玩家●输入位置超出范围,请重新输入!

"<

PrintBoard();

continue;

}

if(CheckWin(x,y)==-1)

{

cout<<"恭喜玩家●获得胜利!

"<

break;

};

if(count==MAX*MAX)

{

cout<<"平局!

"<

break;

}

a=0;

}

}

}

////////////////////////////////////////////////////////////////////////////////////

voidwuziqi:

:

InitialBoard()//初始化棋盘,将所用的位置设置为“”

{

for(inti=0;i<14;i++)

{

for(intj=0;j<14;j++)

{

board[i][j]='';

}

}

}

voidwuziqi:

:

PrintBoard()///打印棋盘

{

cout<

cout<<"*-*-*-*-*-*-*-*-*-*-*-*-*-*五子棋棋盘*-*-*-*-*-*-*-*-*-*-*-*-*"<

inti,j;

cout<<"";

for(i=1;i<=MAX;i++)

{

cout<

(2)<

}

cout<

for(i=1;i

{

for(j=1;j

{

if(board[i][j]=='O')

{

if(j==1)

{

cout<

}

else

cout<<"○";

}

elseif(board[i][j]=='X')

if(j==1)

{

cout<

}

else

cout<<"●";

else

{

if((i==1)&&(j==1))

{

cout<

}

elseif((i==MAX)&&(j==1))

{

cout<

}

elseif((i==1)&&(j==MAX))

{

cout<<"┓";

}

elseif((i==MAX)&&(j==MAX))

{

cout<<"┛";

}

elseif((i==1)&&((j>0)&&(j

{

cout<<"┯";

}

elseif(((i>1)&&(i

{

cout<

}

elseif((i==MAX)&&((j>1)&&(j

{

cout<<"┷";

}

elseif((j==MAX)&&((i>1)&&(i

{

cout<<"┨";}

else

{

cout<<"┼";

}

}

}

cout<

}

}

///////////////////////最开始时的棋盘///////////////////

/*voidwuziqi:

:

PrintBoard()

{

cout<

cout<<"*-*-*-*-*-*-*-*-*-*-*-*-*-*五子棋棋盘*-*-*-*-*-*-*-*-*-*-*-*-*"<

inti,j,k;

system("color0A");

cout<<"";

for(k=0;k<=MAX;k++)

cout<

cout<

cout<<"┏━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┓"<

for(i=1;i

{

cout<<""<

for(j=1;j<=MAX;j++)

{

board[i][j]='';

cout<<"┃"<

}

cout<<"┃"<

cout<<"┣━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━┫"<

}

cout<<""<

for(j=1;j<=MAX;j++)

{

board[i][j]='';

cout<<"┃"<

}

cout<<"┃"<

cout<<"┗━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┛"<

}

////////////////////////////////////////////////////////////////////////////////

/*voidwuziqi:

:

PrintBoard1()

{

cout<

cout<<"*-*-*-*-*-*-*-*-*-*-*-*-*-*五子棋棋盘*-*-*-*-*-*-*-*-*-*-*-*-*"<

inti,j,k;

system("color0A");

cout<<"";

for(k=0;k<=MAX;k++)

cout<

cout<

cout<<"┏━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┓"<

for(i=1;i

{

cout<<""<

for(j=1;j<=MAX;j++)

{

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

cout<<"┃"<

}

cout<<"┃"<

cout<<"┣━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━┫"<

}

cout<<""<

for(j=1;j<=MAX;j++)

{

board[i][j]='';

cout<<"┃"<

}

cout<<"┃"<

cout<<"┗━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┛"<

}*/

///////////////////////////////////

voidwuziqi:

:

MainForm()

{

cout<<"*-*-*-*-*-*-*-*-*-*〇欢迎来到五子棋游戏〇*-*-*-*-*-*-*-*-*-*"<

cout<<"*-*-*-*-*-*-*-*-*-*-*人人对弈五子棋游戏*-*-*-*-*-*-*-*-*-*-*"<

cout<<"1.游戏说明"<

cout<<"2.开始游戏"<

cout<<"3.退出游戏"<

cout<<"*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<

cout<<"请输入你的选择:

";

}

/////////////////////////////////////////////////////////////////////////////////////

voidwuziqi:

:

PlayEplain()

{

cout<<"*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*--*-*-*-*-*-*-*-*-*-*-*"<

cout<<"*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*--*-*-*-*-*-*-*-*-*-*-*"<

cout<<"*-*游戏说明:

*-*"<

cout<<"*-*1.第一个玩家用O第二个玩家用X;*-*"<

cout<<"*-*2.请根据提示输入所要走的行和列;*-*"<

cout<<"*-*3.谁先连成五个子谁胜利。

*-*"<

cout<<"*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*--*-*-*-*-*-*-*-*-*-*-*"<

cout<<"*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*--*-*-*-*-*-*-*-*-*-*-*"<

}

/////////////////////////////////////////////////////////////////////////////////////

intwuziqi:

:

CheckWin(intx,inty)//判断玩家胜利,从board[x][y]开始进行八个方向判断是否连成五个棋子

{

if((board[x][y-4]=='O'&&board[x][y-3]=='O'&&board[x][y-2]=='O'&&board[x][y-1]=='O'&&board[x][y]=='O')

||(board[x][y-3]=='O'&&board[x][y-2]=='O'&&board[x][y-1]=='O'&&board[x][y]=='O'&&board[x][y+1]=='O')

||(board[x][y-2]=='O'&&board[x][y-1]=='O'&&board[x][y]=='O'&&board[x][y+1]=='O'&&board[x][y+2]=='O')

||(board[x][y-1]=='O'&&board[x][y]=='O'&&board[x][y+1]=='O'&&board[x][y+2]=='O'&&board[x][y+3]=='O')

||(board[x][y]=='O'&&board[x][y+1]=='O'&&board[x][y+2]=='O'&&board[x][y+3]=='O'&&board[x][y+4]=='O'))

return1;

elseif((board[x-4][y]=='O'&&board[x-3][y]=='O'&&board[x-2][y

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2