五子棋课程设计论文(附代码)

绝世美人儿
828次浏览
2021年01月18日 14:51
最佳经验
本文由作者推荐

护肤品排行榜前十名-小学四年级作文大全

2021年1月18日发(作者:方宗)
1


需求分析

1.1

课题背景和意义

五子棋一种两人对弈的纯策略型棋类游戏 ,由古代的传统黑白棋演化而来,
相传起源于四千多年前的尧帝时期,
比围棋的历史还要悠久,
可能早在
“尧
造围棋”之前,民间就已有五子棋游戏。迅速发展于日本,流行于欧美。 容
易上手,
老少皆宜,
而且趣味横生,
引人入胜;
不仅能增强思维能 提高智力,
而且富含哲理,
有助于修身养性。
有关早期五子棋的文史资料与围棋有相似
之处,
因为古代五子棋的棋具与围棋是完全相同的。
在上古的神话传说中有
“ 女娲造人,伏羲做棋”一说,
《增山海经》中记载:
“休舆之山有石焉,名
曰帝台之棋 ,五色而文状鹑卵。
”李善注引三国魏邯郸淳《艺经》中曰:
“棋
局,纵横各十七道, 合二百八十九道,白黑棋子,各一百五十枚”
。这段虽
没明讲是何种棋类,
但至少知道 远古就以漂亮的石头为棋子。
因而规则简单
的五子棋也可能出自当时,
并是用石子作棋 子。
亦有传说,
五子棋最初流行
于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后 代中遍及开来。

五子棋是一种益智的游戏,
他可以提高人们的反应能力。
尤 其是在开发人们
的智力方面,很受人们的欢迎。

《数据结构课程设计》是一门实践性 的计算机课程,为了学好这门课程,必
须在掌握理论知识的同时,加强上机实践。通过这次课程设计,要 求掌握较
大程序的设计方法,相应数据结构的选择应用、算法的设计及其实现和性能
分析等方面 中加深对课程基本内容的理解。同时,在设计方法以及上机操作
等基本技能和科学作风方面受到比较系统 和严格的训练。


1.2
、课题要求

1.2.1
、设计一个
20*20
大小的棋盘进行和电脑对战游戏

1.2.2
、实现电脑智能和玩家对战,能实现智能攻防,迅速对局势作出判断并下

.

1.3
、软件格式规定

1

1.3.1
、输入形式:玩家输入棋子要下位置的纵横坐标,棋子下到相应的位置
< br>1.3.2
、程序所能达到的的功能:实现
20

20
列的棋 盘,电脑能对局势作出判
断并正确下棋对玩家做出攻防

1.3.3
、程序能更新到当前局势

1.4
、设计目标

1.4.1
、软件名称:五子棋游戏

1.4.2
、制作平台及调试 工具:
Win32

Microsoft visual studio 2010
1.4.3
、运行环境:系统:
dos/winxp/win7
1.4.4
、性能特点:软件体积小,高效快捷,实用性好,兼容性好。


2
、设计概要:

2.1
、问题解决思路

2.1 .1

初始化模块:
即屏幕初始化,
显示
20*20
格的棋 盘。
系统默认玩家先下,
电脑后下

2.1.2
、棋盘模块:显示棋 盘和棋子,棋盘设计为
20*20
格的二维平面图,背景
颜色为蓝色,棋子为黑白色。

2.1.3

判断模块:
判断上下左右左上右上左下右下是否有五 个颜色相同的颜色,
如果有就游戏结束,显示胜利方,否则,游戏双方继续落子。而当棋盘已
满 ,即数组空间已满的时候,结束程序,显示和局。

2.2
、相关函数介绍说明

const char outstr[11][4]={}

//
定义组成棋盘的字符

void jushi()










//
判断局势的函数

void computer(int a[20][20])




//
电脑落子的函数

memset(cm,0,sizeof(cm));







//
清除旧棋盘的函数

int a[20][20]={}








//
组成棋盘的函数

int
judge(intx,inty,int
sum){}






//
判断胜负的函数

system
(
2f







//
控制棋盘颜色的函数

system (
2

2.3
、主程序流程及函数调用说明





Main
()
























1
3

初始化,欢迎界面,棋盘

调用函数,判断所下棋的位置
是否合法




更新棋盘,记录最新局势

调用函数,电脑判断棋手局势,
做出反映

直到有一方胜利,
显示胜利提示,
并结束

2.4

各函数调用情况

2.4.1

utst r[]
数组
,
以调用
inta[][]
数组,组成棋盘界面及相关的 界面操作方法。

2.4.2

memset()
函数,以调用xiazi
数组函数,对下棋位置做出判断,看此位置
是否合法,更新棋盘。
< br>2.4.3

mputer
()函数,调用
a
数组,电脑根据 棋手下的棋做出判断并做出回
应。

2.4.4
、一步棋都要更新棋盘,所以 都要调用到
outstr[]
数组
,

inta[]
然后调 用
computer
()函数,电脑做出下棋判断。

3
、详细设计

3.1
、棋盘的实现,用
for
循 环实现列号的输出,过定义
outstr[][]
数组,调用
inta
数组, 实现棋盘的显示。通过循环调用
int a[][]
数组,输出相应的字符,实



while























3.2
、智 能对玩家所下的棋子做出判断,并智能地做出反应,实现攻防,与玩家
对战。

4


3.3
、循环调用
outstr[][]
数组和
int a
数组,更新棋盘,显示最新局势。

3.4

int
judge(intx,inty,int
sum)
判断胜负的函数。运用
for
结构和
if
结构实现判
断,或横、或竖、或斜,有相同的五个颜色的 棋子就胜利。


3.5
、有一方胜利或棋盘满子,游戏结束,显示相关和局或胜利信息。

4
、调试分析




5


1
、调试过程情况表

序号



1
时间

2013-4-15
出现问题

在做棋盘时,
没考虑到下子后棋
盘的显示问题



2
2013-4-17
在输入列号时显示错误,
数字占
用棋盘位置



3
2013-4-18
没考虑到两个子下到同一个位
置的情况




4

2013-4-20
没考虑到棋盘下满棋子,
而没有
分胜负的情况

增加了下棋函数的功能,
让它进
行判断有没棋子

用函数判断到棋盘蛮子就和局,
游戏结束

解决问题

定义了一个数组储存字符,
然后
调用它

把数字
9
以后的用函数转为字母

5
、用户使用说明

5.1
、运行
Debug
文件 夹里的五子棋应用程序,显示棋盘界面。

5.2
、按照提示输入棋盘的纵横坐标,纵横坐标间要有空格,然后按回车键。
5.3

五颗棋连成一线,
横着,
竖着,
斜着都可以,
谁先下到五颗棋,
谁就胜利。

5.4
、棋盘满棋子,算和局。

6
、测试结果

6.1.1
、打开游戏界面,按提示输入横纵坐标:



2
6

6.1.2
、如果输入不存在的坐标,则会提示重新输入:



3


6.2
、如果你输入的位置已有子,则提示重新输入:



4
7

6.3
、输入错误的信息时,如
we 4rtr




5
6.4
、电脑会根据玩家所下的棋做出判断,下
好每一步棋。



6

8

6.5
、只要有实力,玩家也能够打败电脑的。



7




参考文献

[1]
廉师友编著 ,
C++
面向对象程序设计简明教程,
西安电子科技大学出版社,
1998
[2]
李师贤等编著,面向对象程序设计基础,高等教育出版社,
1998
[3]
谭浩强编著,
C++
程序设计,清华大学出版社,
2004

附录

#include
#include
using namespace std;
const char outstr[11][4]={




















int cm[20][20],xiazi[20][20];
9

intc,d;
void jushi() //
这是判断落子重要性的函数

{ int x,y,i,m,n,lianzi1=0,lianzi2=0,life=0;
memset(cm,0,sizeof(cm));
for(x=0;x<=19;x++)

for(y=0;y<=19;y++)

{


if(xiazi[x][y]==0)

{


for(m=-1;m<=1;m++)

for(n=-1;n<=1;n++)

{


if(m!=0 || n!=0)

{






for(i=1;i<=4;i++)
{
if(
x+i*m>=0
&&x+i*m<=19
&&y+i*n>=0
&&y+i*n<=19
&&xiazi[x+i*m][y+i*n]==1 )

{lianzi1++;}

else if(xiazi[x+i*m][y+i*n]==0)

{life++; break;}

else

{break;}}

for(i=-1;i>=-4;i--)

{

if(
x+i*m>=0
&&x+i*m<=19
&&y+i*n>=0
&&y+i*n<=19
&&xiazi[x+i*m][y+i*n]==1
)

{lianzi1++;}

else if(xiazi[x+i*m][y+i*n]==0)

{life++; break;}
10

护肤品排行榜前十名-小学四年级作文大全


护肤品排行榜前十名-小学四年级作文大全


护肤品排行榜前十名-小学四年级作文大全


护肤品排行榜前十名-小学四年级作文大全


护肤品排行榜前十名-小学四年级作文大全


护肤品排行榜前十名-小学四年级作文大全


护肤品排行榜前十名-小学四年级作文大全


护肤品排行榜前十名-小学四年级作文大全