游戏程序设计实验设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
游戏课程设计报告
题目:超级黑白棋
班级: 11数媒
姓名:徐继涛
学号:110804035
2014年 1 月 6日
目录
一、目的与要求……………………………………………………………………….
二、游戏设计方案……………………………………………………………………
三、游戏开发平台构建……………………………………………………
四、项目设计……………………………………………………………………….
五、游戏创新描述……………………………………………………………………
六、调试运行与分析…………………………………………………………
七、程序清单………………………………………………………………………. 参考文献…………………………………………………………………………...
一、游戏设计目的及要求
通过游戏程序设计,提高编程兴趣与编程思路,巩固C++语言中所学的知识,合理的运用资料,实现理论与实际相结合。
黑白棋,又叫反棋、奥赛罗棋、苹果棋或翻转棋。黑白棋在西方和日本很流行。游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。它的游戏规则简单,因此上手很容易,但是它的变化又非常复杂。有一种说法是:只需要几分钟学会它,却需要一生的时间去精通它。
(1).收集资料,分析课题,分解问题,形成总体设计思路;(2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;
(3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;
(4).完成课程设计报告,并进行答辩
(5).黑白棋的棋盘是一个有8*8方格的棋盘。下棋时将棋下在空格中间,而不是像围棋一样下在交叉点上。开始时在棋盘正中有两白两黑四个棋子交叉放置。游戏结束时输出得分。画出模块枝干图与每个模块的程序流程图。修改某些代码,改变其外观及功能。
(6).游戏操作应尽量简单。界面美观,让人看了觉得舒服。
二、游戏设计方案
2.1、算法设计:玩游戏过程采用递归算法,控制循环过程,可使游戏重复玩,判断迷宫游戏结束的算法是通过判断人有没有到达终点。使坐标向前移动采用算法,通过递归算法将人物的每一节依次向前移动。横坐标与纵坐标依次向前赋值,从而达到使人物前移的目的。
2.2、数据结构
下棋步法信息分别用两个结构体存储与表示。将人物的横坐标X、纵坐标Y和判断是否要出现下棋的位置分别作为人物的结构体的成员。坐标的横坐标数组,纵坐标数组,坐标的节数N,坐标的移动方向DIRECTION、坐标的生命分别作为坐标的结构体的成员。结构体内每个成员的存储类型均为整型。
简要说明:图形驱动即完成初始化图形系统功能;开始画面模块的主要作用是根据设置绘制出窗口;玩游戏的过程是游戏此游戏程序的核心,又可细分为好多小的功能模块;其中,显示人物模块仅完成显示人物功能;坐标前移模块即通过递归算法实现坐标的向某方向移动;判坐标死模块的功能是通过判断是否无棋可下,迟到棋盘来判断步法有没有死亡。
三、游戏开发平台构建
3.1、平台构建
模块应具有高内聚性,低耦合性。这样,程序运行才更稳定,效率更高。
据功能将贪吃坐标游戏划分成四个大模块,九个小模块。每个模块均具有自己的功能,而且,比较容易画出各个模块的流程图。
3.2、构建结构图
四、项目设计
贪吃坐标游戏体系机构,给出总体的模块结构图,确定程序的主要函数及之间的调用关系,同时设计坐标与游戏者等等的具体的数据结构。
4.1模块划分
➢主控模板
◆主控模块是由main函数实现,主要用来依次调用各个下层
的模块,从而控制完成整个程序的功能。
➢画面主界面模块
◆画出一个封闭的墙。
➢游戏过程模块
◆该模块是整个程序的核心,它完成整个游戏过程,用函数
来实现,每次坐标移动的时候,从最后一节开始到第二节,
将前一节的坐标赋给后一节的坐标,移动后把最后的一节
用背景色覆盖,然后坐标头按方向键更改位置,要确保人
物出现在10的倍数位置上,判断坐标是否迟到人物的是坐
标头坐标和人物坐标是否相同。
➢游戏结束处理模块
◆游戏结束的时候,读取出记录。
4.2棋盘与坐标的数据结构
表示人物与坐标的数据结构设计,用坐标函数
Xstruct SPoint
{
int x;
int y;
};表示,则矩形块用函数画出来,在开始前,开始时在棋盘正中有两白两黑四个棋子交叉放置,黑棋总是先下子。放置棋子后,设置坐标的一节身体为一个矩形块,用坐标来表示,由于在游戏的过程中坐标的身体不断的增长,需要用数组来存放每节的坐标,利用derection()分别表示坐标的右、左、上、下的方向。
//节点图像显示运动状态(方向)
enum
BitmapState{M_NONE,M_UP_UP,M_DOWN_DOWN,M_LEFT_LEFT,M_RIGHT_RIGHT, M_UP_LEFT,M_UP_RIGHT,M_LEFT_UP,M_LEFT_DOWN,
M_RIGHT_UP,M_RIGHT_DOWN,M_DOWN_RIGHT,M_DOWN_LEFT};
//节点运动状态(方向)
enum MoveState{S_NONE,S_UP,S_DOWN,S_LEFT,S_RIGHT};
//坐标位置结构
struct SPoint
{
int x;
int y;
};