- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计报告模板及评分标准
课程设计报告模板:
封面(见最后一页)
一、问题描述
二、功能分析
三、程序设计
1.程序总体结构
2.界面设计
3.重要数据的数据结构设计
4.函数设计
5.源代码
四、程序设计难点及其解决方法
五、不足之处
六、人员分工说明
实例:俄罗斯方块
一、问题描述:要求支持键盘操作和7种不同类型方块的旋转变换,并且界面上显示下一个方块的提示以及当前的玩家得分
二、功能分析:
俄罗斯方块游戏需要解决的问题包括:
( 1)整个游戏界面的图形显示;
(2)各种方块形状的表示;
(3)如何控制方块的移动、旋转和下落速度;
(4)如何判断方块是否到底;
(5)如何判断一行是否填满以及如何消去填满的行;
(6)如何判断游戏的结束及如何终止游戏;
(7)游戏难度的设计和得分规则
重点:
游戏面板的数据结构 :二维数组
种形状方块的数据结构 :结构体保存每种形状方块的坐标、颜色
三、程序设计:
程序总体结构:首先初始化进入图形模式,然后设置新的时钟中断。开始游戏后,进入该程序最核心部分——处理和实现进行过程中的各种事件和函数。在处理过程中判断游戏是否结束,如没有结束,则重新开始游戏,否则结束游戏。
主函数为:
void main()
{
InitializeGraph();
SetTimer(newtimer); /*设置新的时钟中断*/
while(1) {
StartGame();
ProcessInGame();
if(bOver) break;
}
KillTimer();
closegraph();
}
界面设计
分为左右两个部分:
左边为游戏面板
右边有三个框:下一形状提示框、速度框和记分框
重要数据的数据结构设计
1)定义方块形状:
定义如下的结构体来表示每一个形状:
struct block{
int arrXY[8];
int nColor;
int nNext;
};
可用4*4的格子显示7种形状,并用4个数对来表示: arrXY [0]、arrXY [1]表示第一个数对,arrXY [2]、arrXY [3]表示第二个数对 …。
例如, (-2,0)、(-1,0)、(0,0)、(1,0) 表示下面的方块
每一种形状都可以进行旋转,旋转后的变形体同样可用结构体block表示。
所有的7种形状和它们的旋转体(共19个)可保存在一个全局数组arrayBlock中。
Block中的nNext就是当前形状逆时针旋转后的下一个形状在该全局数组中的索引。
第一个形状和它的旋转体在arrayBlock中的表示
□□□□ □□□□ □□□□ □□□□
□■□□ □□□□ □■■□ □□□□
□■□□ □□■□ □□■□ ■■■□
□■■□ ■■■□ □□■□ ■□□□
BLOCK arrayBlock[19]={
/*x1,y1,x2,y2,x3,y3,x4,y4, color, next,第一种形状*/
{ 0,-2, 0,-1, 0, 0, 1, 0, CYAN, 1}, /*第一种形状,对应图3-12的第一个*/
{-1, 0, 0, 0, 1,-1, 1, 0, CYAN, 2}, /*一种旋转体,对应图3-12的第二个*/
{ 0,-2, 1,-2, 1,-1, 1, 0, CYAN, 3}, /*另一种旋转体,对应图3-12的第三个*/
{-1,-1,-1, 0, 0,-1, 1,-1, CYAN, 0}, /*第三种旋转体,对应图3-12的第四个*/
…….
}
2)定义游戏的主界面:宽10、高20的游戏板
数据结构:全局数组Gameboard[12][22], 1表示已有方块,0表示这个位置空着。在10*20基础上各加2行、2列为了便于判断形状在移动时是否到边、到底。
整个屏幕的坐标系原先为640*480。在此游戏中,将16个像素定义为一个方格的边长,所以坐标系转变成为了40*30(640/16=40,480/16=30)。
4.函数设计
本程序由1个.h文件和4个.c文件,共20个函数组成;
函数相互关系见下图
1)Time.c
文件名
函数原型
函数功能
函数处理描述
Timer.c
Void interrupt (*oldtimer)(void)
指向原来时钟中断处理过程入口的中断处理函数指针(句柄)
Void interrup
文档评论(0)