基于c#的五子棋游戏的设计与实现Word文档下载推荐.docx
- 文档编号:15964067
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:28
- 大小:92.72KB
基于c#的五子棋游戏的设计与实现Word文档下载推荐.docx
《基于c#的五子棋游戏的设计与实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于c#的五子棋游戏的设计与实现Word文档下载推荐.docx(28页珍藏版)》请在冰豆网上搜索。
软件的总体架构如图2.1:
图2.1软件架构
3 五子棋设计说明
3.1 主要成员变量说明
1)选择游戏模式标志——m_renren
用来表示当前玩家选择游戏的情况,当m_renren为false时,表示人机对战;
为true时,表示人人对弈。
2)游戏开始标志——begin
用来判断当前游戏是否开始
3)音效标志——sound
在下棋过程中,判断是否需要声音,当sound为true时,表示玩家需要声音,否则的话,玩家不需要声音。
4)谁先下的标志——first
这个标志只对人机对弈时有效。
当first为true时,表示人先下,否则,电脑先下。
5)棋盘数据——points
points为棋盘情况数组,是用一个15*15的二维数组来表示的。
points[i,j]=2表示此处无子,points[i,j]=1表示此处为黑子points[i,j]=0表示此处为白子。
6)棋子颜色标志——qzcolor
用来表示当前棋子的颜色,qzcolor=1时表示黑棋,qzcolor=0时表示百棋。
7)棋子数据——qz
表示棋子所放的位子,是用一个15*15的PictureBox类型的二维数组来表示。
它还可以用来显示当前棋子的图片。
8)oldMovePoint
用来记录鼠标经过后点的位置。
9)backStack
用于悔棋的栈。
10)backTrackStack
用于回溯的栈
11)结局——result
用枚举类型来表示结局。
如:
publicenumresult:
int//结局
{
lose=-1,
equal,
win
}
3.2 回溯栈元素类——StackElement
成员变量:
1)qzColor棋子的颜色
2)bestFivePoints最好点的位置
3)pointsCount计算最好点的数目
4)pointNumber点的数目
5)Theresult结局
6)stepNumber预测的步数
3.3 棋子点属性类——qzdianshuxing
1)blackConnect黑棋子i个(包括活棋)的连接条数
2)blackActive黑活棋i个的连接条数
3)whiteConnect白棋子i个(包括活棋)的连接条数
4)whiteActive白活棋i个的连接条数
5)tempActive3活棋数为3的连接条数
3.4 主要成员函数说明
1)初始化棋盘——Initializeqp
初始化操作包括以下几个步骤:
●设置棋子所在的位置
●设置棋子的大小
●初始化棋子的背景颜色
●将棋子的sizemode设置为CenterImage
●将棋子的可见性设置为false
●将棋子添加到form上。
2)绘制棋盘——Form1_Paint
其主要是画出以40*40的大小为每一小格,代码如下:
for(i=0;
i<
15;
i++)
g.DrawLine(myPen,30+i*40,50,30+i*40,610);
g.DrawLine(myPen,30,50+i*40,590,50+i*40);
}
3)绘制光标——Form1_MouseMove
当鼠标在棋盘上移动时,当前的显示画红方框,过去的显示和背景一样颜色的方框。
当前的红方框代码如下:
if(10<
e.X&
&
10<
e.Y&
e.X<
ClientRectangle.Width&
e.Y<
ClientRectangle.Height)
x=((e.X-10)/40)*40+30;
y=((e.Y-10)/40)*40+50;
g.DrawLine(newpen,x-15,y-15,x-15,y-5);
g.DrawLine(newpen,x-15,y-15,x-5,y-15);
g.DrawLine(newpen,x+15,y-15,x+5,y-15);
g.DrawLine(newpen,x+15,y-15,x+15,y-5);
g.DrawLine(newpen,x-15,y+15,x-15,y+5);
g.DrawLine(newpen,x-15,y+15,x-5,y+15);
g.DrawLine(newpen,x+15,y+15,x+15,y+5);
g.DrawLine(newpen,x+15,y+15,x+5,y+15);
oldMovePoint.X=x;
oldMovePoint.Y=y;
过去的方框代码如下:
if(oldMovePoint.X!
=-1)
g.DrawLine(oldpen,oldMovePoint.X-15,oldMovePoint.Y-15,oldMovePoint.X-15,oldMovePoint.Y-5);
g.DrawLine(oldpen,oldMovePoint.X-15,oldMovePoint.Y-15,oldMovePoint.X-5,oldMovePoint.Y-15);
g.DrawLine(oldpen,oldMovePoint.X+15,oldMovePoint.Y-15,oldMovePoint.X+5,oldMovePoint.Y-15);
g.DrawLine(oldpen,oldMovePoint.X+15,oldMovePoint.Y-15,oldMovePoint.X+15,oldMovePoint.Y-5);
g.DrawLine(oldpen,oldMovePoint.X-15,oldMovePoint.Y+15,oldMovePoint.X-15,oldMovePoint.Y+5);
g.DrawLine(oldpen,oldMovePoint.X-15,oldMovePoint.Y+15,oldMovePoint.X-5,oldMovePoint.Y+15);
g.DrawLine(oldpen,oldMovePoint.X+15,oldMovePoint.Y+15,oldMovePoint.X+15,oldMovePoint.Y+5);
g.DrawLine(oldpen,oldMovePoint.X+15,oldMovePoint.Y+15,oldMovePoint.X+5,oldMovePoint.Y+15);
4)下棋子——putqz
下棋子有两种可能性,一是知道一个点的横纵坐标;
二是知道一个点。
下面我就说一说知道x,y坐标的情况,第二种情况只要调用第一种情况就行了。
假如下的是一个黑棋子,将qz的背景图设置为blackstone,并将此处标记为已下黑棋,并将此棋子标记为最后落子指示。
如果悔棋的栈不为空,将其弹出栈,并将qz的图像设置为什么都没有,再将其压入栈。
同理,白旗也跟这一样做。
代码如下:
if(qzcolor==1)
qz[x,y].BackgroundImage=global:
:
五子棋.Properties.Resources.blackstone;
points[x,y]=1;
qz[x,y].Image=global:
五子棋.Properties.Resources.lastblackstone;
if(backStack.Count>
0)
temp=(Point)backStack.Pop();
qz[temp.X,temp.Y].Image=global:
五子棋.Properties.Resources.nullll;
backStack.Push(temp);
else
五子棋.Properties.Resources.whitestone;
points[x,y]=0;
五子棋.Properties.Resources.lastwhitestone;
最后将其可见性设置为true。
5)开始函数——start
当棋局开始时,就应将棋盘初始化,使棋盘上没有棋子。
如果有悔棋,就要将悔棋栈清空。
代码如下:
if(!
begin)
begin=true;
for(x=0;
x<
x++)
for(y=0;
y<
y++)
qz[x,y].Visible=false;
points[x,y]=2;
while(backStack.Count>
backStack.Pop();
3.5 实现人机对弈的主要函数
6)察看两点之间的棋子数函数——ConnectqpCount
这个函数主要求两点之间可能形成五连子的qzcolor色棋的连子数(包括活期)。
首先,求出两点之间总共的棋子数,并判断棋子所在哪个方向。
沿着这个方向每个点的坐标,并察看这几个点中有没有反色的棋子。
如果有,棋子数设为0,否则的话,棋子数自加1。
intx,y,i,j,length,xPlus=0,yPlus=0,sum,maxSum=0;
length=Math.Max(Math.Abs(point1.X-point2.X),Math.Abs(point1.Y-point2.Y))+1;
if(point1.X!
=point2.X)xPlus=1;
if(point1.Y!
=point2.Y)yPlus=(poi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 c# 五子棋 游戏 设计 实现