资源描述:
《基于c#的五子棋游戏的设计与实现_毕业设计论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、郑州科技学院课程设计论文基于C#的五子棋游戏的设计与实现1 引言11.1 五子棋介绍12 软件架构23 五子棋设计说明23.1 主要成员变量说明23.2 回溯栈元素类——StackElement33.3 棋子点属性类——qzdianshuxing33.4 主要成员函数说明43.5 实现人机对弈的主要函数73.6 实现菜单功能的函数273.6 程序运行界面304 心得体会311 引言1.1 五子棋介绍五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”
2、(FiveinaRow的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。人机对战人人对战主界面游戏控制游戏模式重新开始退出声音控制悔棋开始2 软
3、件架构软件的总体架构如图2.1:32图2.1软件架构3 五子棋设计说明3.1 主要成员变量说明1)选择游戏模式标志——m_renren用来表示当前玩家选择游戏的情况,当m_renren为false时,表示人机对战;为true时,表示人人对弈。2)游戏开始标志——begin用来判断当前游戏是否开始3)音效标志——sound在下棋过程中,判断是否需要声音,当sound为true时,表示玩家需要声音,否则的话,玩家不需要声音。4)谁先下的标志——first这个标志只对人机对弈时有效。当first为true时,表示人先下,否则,电脑先下
4、。5)棋盘数据——pointspoints为棋盘情况数组,是用一个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)ba
5、ckStack用于悔棋的栈。10)backTrackStack32用于回溯的栈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成
6、员变量:1)blackConnect黑棋子i个(包括活棋)的连接条数2)blackActive黑活棋i个的连接条数3)whiteConnect白棋子i个(包括活棋)的连接条数4)whiteActive白活棋i个的连接条数5)tempActive3活棋数为3的连接条数3.4 主要成员函数说明1)初始化棋盘——Initializeqp初始化操作包括以下几个步骤:l设置棋子所在的位置l设置棋子的大小l初始化棋子的背景颜色l将棋子的sizemode设置为CenterImagel将棋子的可见性设置为falsel将棋子添加到form上。2)
7、绘制棋盘——Form1_Paint32其主要是画出以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);}1)绘制光标——Form1_MouseMove当鼠标在棋盘上移动时,当前的显示画红方框,过去的显示和背景一样颜色的方框。当前的红方框代码如下:if(108、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-