课。程。设。
计。报。
告。姓名:蒋博威。
班级:信息与计算科学09-1班。
学号:20096347
题目:简易五子棋游戏。
一、 课程设计目的:
综合运用编程语言以及数据结构的相关知识进行实际训练,培养及提高编程能力。
二、 课题要求:
设计程序实现一个人人对弈的简单五子棋游戏。游戏规则如下:在19×19的围棋棋盘的交叉点上,对弈双方轮流放子,最先在棋盘上摆成(按水平、垂直或对角线方向)连续放五个子的一方为胜方。
1、 五子棋游戏的基本功能:该功能为程序设计的最基本功能,程序有服务器端和客户端。但服务器端运行时会自动侦察是否有客户端运行,并自动接入开始游戏,当用户棋子五子连成一线时即胜出。
2、 游戏界面分析:良好的游戏界面对使用者来说是非常重要的。本程序设计的游戏拥有良好、美观的界面,和实际五子棋界面相似,给体验着予真实感。
同时游戏还设有提示图标(包括开始、悔棋、音效、结束等控制图标)。
是否。三、游戏程序说明:
主要成员变量说明。
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
用枚举类型来表示结局。如:
public enum result : int//结局。
回溯栈元素类——stackelement
成员变量:1) qzcolor 棋子的颜色。
2) bestfivepoints 最好点的位置。
3) pointscount 计算最好点的数目。
4)pointnumber 点的数目。
5)theresult 结局。
6)stepnumber **的步数。
棋子点属性类——qzdianshuxing
成员变量:1)blackconnect 黑棋子i个(包括活棋)的连接条数。
2)blackactive 黑活棋i个的连接条数。
3)whiteconnect 白棋子i个(包括活棋)的连接条数。
4)whiteactive 白活棋i个的连接条数。
5)tempactive3 活棋数为3的连接条数。
主要成员函数说明。
1) 初始化棋盘——initializeqp
初始化操作包括以下几个步骤:
设置棋子所在的位置。
设置棋子的大小。
初始化棋子的背景颜色。
将棋子的sizemode设置为 centerimage
将棋子的可见性设置为false
将棋子添加到form上。
2) 绘制棋盘——form1_paint
其主要是画出以40*40的大小为每一小格,**如下:
for (i = 0; i < 15; i++)
30 + i * 40, 50, 30 + i * 40, 610);
30, 50 + i * 40, 590, 50 + i * 40);
3) 绘制光标——form1_mousemove
当鼠标在棋盘上移动时,当前的显示画红方框,过去的显示和背景一样颜色的方框。
当前的红方框**如下:
if (10 < 10< &
x = 10) /40) *40 + 30;
y = 10) /40) *40 + 50;
x - 15, y - 15, x - 15, y - 5);
x - 15, y - 15, x - 5, y - 15);
x + 15, y - 15, x + 5, y - 15);
x + 15, y - 15, x + 15, y -5);
x - 15, y + 15, x - 15, y + 5);
x - 15, y + 15, x - 5, y + 15);
x + 15, y + 15, x + 15, y + 5);
x + 15, y + 15, x + 5, y + 15);
= x;= y;
过去的方框**如下:
if ( 1)
4) 下棋子——putqz
下棋子有两种可能性,一是知道一个点的横纵坐标;二是知道一个点。
下面我就说一说知道x,y坐标的情况,第二种情况只要调用第一种情况就行了。
假如下的是一个黑棋子,将qz的背景图设置为blackstone,并将此处标记为已下黑棋,并将此棋子标记为最后落子指示。如果悔棋的栈不为空,将其弹出栈,并将qz的图像设置为什么都没有,再将其压入栈。同理,白旗也跟这一样做。
**如下:
if (qzcolor==1)
课程设计报告格式 课程设计
洛阳理工学院。课程设计说明书。课程名称。设计课题。专业。班级。学号。姓名。完成日期2014年12月26日。问题描述 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的内容要求。基本要求 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的基本要求。测试数据 小四宋体,行间距单倍行距,每...
课程设计总结,课程设计报告
课程设计总结,课程设计报告。3.尝试应用项目管理软件进行项目进程的规划管理 绘制甘特图,不作硬性要求 二 选题说明。人事管理是企业信息管理的重要部分,面对大量的人事工资信息,财务部门采用人力处理将浪费大量的时间 人力和物力,且数据的准确性低。因此,开发一个界面友好,易于操作的人事工资管理软件进行自动...
课程设计 课程设计报告格式
学校名。课程设计报告。课程名称 c语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...