- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
俄罗斯方块C语言程序设计汇报
C语言课程设计报告
俄罗斯方块程序设计报告
问题描述
俄罗斯方块(Tetris, 俄文:Тетрис)是一款电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。I、俄罗斯方块游戏需要解决的问题包括:
⑴、随机产生方块并自动下移
⑵、用Esc键退出游戏
⑶、用 键变体
⑷、用 键和 键左右移动方块
⑸、用空格键使游戏暂停
⑹、能正确判断满行并消行、计分、定级别
⑺、设定游戏为不同级别,级别越高难度越大
II、俄罗斯方块游戏需要设计的功能函数包括:
⑴、声明俄罗斯方块的结构体
⑵、函数原型声明
⑶、制作游戏窗口
⑷、制作俄罗斯方块
⑸、判断是否可动
⑹、随机产生俄罗斯方块类型的序号
⑺、打印俄罗斯方块
⑻、清除俄罗斯方块的痕迹
⑼、判断是否满行并删除满行的俄罗斯方块
三、程序设计
1、程序总体结构设计
(1)、游戏方块预览功能。在游戏过程中,游戏界面右侧会有预览区。由于在此游戏中存在多种不同的游戏方块,所以在游戏方块预览区域中显示随机生成的游戏方块有利于游戏玩家控制游戏的策略。
(2)、游戏方块控制功能。通过各种条件的判断,实现对游戏方块的左移、右移、自由下落、旋转功能,以及行满消除行的功能。
(3)、游戏数据显示功能。在游戏玩家进行游戏过程中,需要按照一定的游戏规则给玩家计算游戏分数。例如,消除一行加100分,游戏分数达到一定数量之后,需要给游戏者进行等级的上升,每上升一个等级,游戏方块的下落速度将加快,游戏的难度将增加。以上游戏数据均会在游戏界面右侧显示以提示玩家。
(4)、游戏信息提示功能。玩家进入游戏后,将有对本游戏如何操作的友情提示。
(5)、游戏结束退出功能。判断游戏结束条件,通过Esc键进行退出。
否
是
游戏执行主流程图
2、界面设计
分为左右两个部分:
*左边为游戏面板
*右边有三部分:游戏数据提示框、下一个方块提示框和功能提示框
3、重要功能函数设计
1)、声明俄罗斯方块的结构体
struct Tetris
{
int x; //中心方块的x轴坐标
int y; //中心方块的y轴坐标
int flag; //标记方块类型的序号
int next; //下一个俄罗斯方块类型的序号
int speed; //俄罗斯方块移动的速度
int count; //产生俄罗斯方块的个数
int score; //游戏的分数
int level; //游戏的等级
};
2)、函数原型声明
//光标移到指定位置
void gotoxy(HANDLE hOut, int x, int y);
//制作游戏窗口
void make_frame();
//随机产生方块类型的序号
void get_flag(struct Tetris *);
//制作俄罗斯方块
void make_tetris(struct Tetris *);
//打印俄罗斯方块
void print_tetris(HANDLE hOut,struct Tetris *);
//清除俄罗斯方块的痕迹
void clear_tetris(HANDLE hOut,struct Tetris *);
//判断是否能移动,返回值为1,能移动,否则,不动
int if_moveable(struct Tetris *);
//判断是否满行,并删除满行的俄罗斯方块
void del_full(HANDLE hOut,struct Tetris *);
//开始游戏
void start_game();
3)、制作游戏窗口
void make_frame()
{
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); //定义显示器句柄变量
gotoxy(hOut,FrameX+Frame_width-5,FrameY-2); //打印游戏名称
printf(俄罗斯方块);
gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+7); //打印选择菜单
printf(**********下一个方块:);
gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+13);
printf(**********);
gotoxy(hOut,FrameX+2*Frame_widt
文档评论(0)