c语言俄罗斯方块游戏程序设计报告

上传人:s9****2 文档编号:496411647 上传时间:2023-04-01 格式:DOC 页数:36 大小:551KB
返回 下载 相关 举报
c语言俄罗斯方块游戏程序设计报告_第1页
第1页 / 共36页
c语言俄罗斯方块游戏程序设计报告_第2页
第2页 / 共36页
c语言俄罗斯方块游戏程序设计报告_第3页
第3页 / 共36页
c语言俄罗斯方块游戏程序设计报告_第4页
第4页 / 共36页
c语言俄罗斯方块游戏程序设计报告_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《c语言俄罗斯方块游戏程序设计报告》由会员分享,可在线阅读,更多相关《c语言俄罗斯方块游戏程序设计报告(36页珍藏版)》请在金锄头文库上搜索。

1、C语言课程设计报告主标题:c语言课程设计副标题:俄罗斯方块游戏界面设计姓 名:卢文俊指导教师: 刘慧院 系:信息工程学院专 业:计算机科学与技术班 级:11计本(二)班小组成员: 卢文俊,齐伟,陈龙提交日期: 2012-6-7俄罗斯方块程序设计报告问题描述:要求支持键盘操作和7种不同类型方块的旋转变换,并且界面上显示下一个 方块的提示以及当前的玩家的得分,随着游戏的进行,等级越高,游戏难度越大, 即方块的下落速度越快,相应的等级,等级越高,消去一行所得到的分数越高, 为玩家提供了不同的选择。二、功能分析:俄罗斯方块游戏需要解决的问题包括:按任意键开始游戏,随机产生方块并自动下移 用*sc键退出

2、游戏。用键变换方块用丁键和L 键左右移动方块用键使方块加速下移用空格键使方块直接下移能正确判断满行并消行、计分、定级别能正确计时设定游戏为不同级别,级别越高难度越大重点:*游戏面包的数据结构:二维数组*7种形状方块的数据结构:结构体保存每种形状方块的坐标、颜色三、程序设计:1 程序总体设计结构:首先初始化进入图形模式,进入欢迎界面,玩家按俄罗斯方块程序设计报告2019-3-23任意进入主菜单界面,按键进入游戏界面,键然后设置新的时钟中断。开始游戏 后,进入该程序最核心的部分一一处理和实现进行过程中的各种事件和函数。 在 处理中判断游戏是否结束,如果没有结束,则重新开始游戏,否则结束游戏。详解如

3、下:(1)、游戏方块预览功能。在游戏过程中,当在游戏底板中出现一个游戏方 块时,必须在游戏方块预览区域中出现下一个游戏方块,这样有利于游戏玩 家控制游戏的策略。由于在此游戏中存在 19种不同的游戏方块,所以在游 戏方块预览区域中需要显示随机生成的游戏方块。(2)、游戏方块控制功能。通过各种条件的判断,实现对游戏方块的左移、右移、快速下移、自由下落、旋转功能,以及行满消除行的功能。俄罗斯方块游戏初始化图形模式(欢迎界面)进入菜单选项开始游戏mi.1;二二=二二二二游戏执行主流程图(3)、游戏显示更新功能。在判断键值时,有左移VK_LEFT、右移VK_RIGHT、 下移VK_DOWN、变形旋转VK

4、_UP、退出VK_ESC键值的判断。当游戏方块左 右移动、下落、旋转时,要清除先前的游戏方块,用新坐标重绘游戏方块。当消俄罗斯方块程序设计报告 2019-3-23除满行时,要重绘游戏底板的当前状态。(4)、游戏速度分数更新功能。在游戏玩家进行游戏过程中,需要按照一定的 游戏规则给玩家计算游戏分数。比如,消除一行加 10分。当游戏分数达到一定 数量之后,需要给游戏者进行等级的上升,每上升一个等级,游戏方块的下落速 度将加快,游戏的难度将增加。(5)、游戏帮助功能。玩家进入游戏后,将有对本游戏如何操作的友情提示。主函数:void mai n()In itializeGraph();SetTimer

5、(newtimer); /*设置新的时钟中断*/ while(1)StartGame();Process In Game();if(GameOver()break;bOver = FALSE;KillTimer();closegraph();2、界面设计分为左右两个部分:*左边为游戏面板11计本(2)班卢文俊右边有三部分:下一个形状提示框、速度框和计分框3、重要数据的数据结构设计1)定义方块形状:定义如下的结构体来表示每一个形状:struct blockint arrXY8;int n Color;int nN ext;; /*保存某一形状信息的结构体*/Struct SHAPE shap e

6、sMAX_BOX=口口口口 口口口口口口口口口口口口0x88,0xc0,CYAN,1,0xe8,0x0,CYAN,2,0xc4,0x40,CYAN,3,0x2e,0x0,CYAN,0,口口口口口口口口口口口口口口口口0x44, OxcO, MAGENTA, 5,t俄罗斯方块程序设计报告2019-3-230x8e,0x0,MAGENTA,6,0xc8,0x80,MAGENTA,7,0xe2,0x0,MAGENTA,4,口口口口口口口口0x8c,0x40,YELLOW, 9,0x6c,0x0,YELLOW, 8,口口口口口口口口0x4c,0x80,BROWN,11,0xc6,0x0,BROWN,1

7、0,口口口口口口口口口口口口口口口口0x4e,0x0,WHITE,13,0x8c,0x80,WHITE,14,0xe4,0x0,WHITE,15,0x4c,0x40,WHITE,12,11计本(2)班卢文俊口口口口0x88, 0x88,RED,17,OxfO, 0x0,RED,16,口口口口0xcc, 0x0, BLUE,18),2)、定义游戏的主界面:宽10、高20的游戏板1、数据结构:全局数组 Gameboard1222,1表示已有的方块,0表示这个位置空着。在10*20基础上各自加2行、2列为了便于判断形状在移动时是否到 边、到底。整个屏幕的坐标系原先为640*480。在此游戏中,将16

8、个像素定义为一个方格的边长,所以坐标系转变成为了40*30(640/16=40,480/10=30)。2、 玩家进行游戏时,需要对游戏界面进行初始化工作。此代码被main()函数 调用。主要进行的工作如下:(1) 循环调用line()函数绘制当前游戏板。(2) 调用nScore()函数显示初始的成绩,初始成绩为 0。(3) 调用npeed()函数显示初始的速度(等级),初始速度1。*注:x,y为左上角坐标* * m,n 对应于 Vertical_boxs,Horizontal_boxs* * 分别表示纵横方向上方块的个数(以方块为单位)* BOARD_LEFT_X ,BOARD_LEFT_Y*

9、11计本(2)班卢文俊俄罗斯方块程序设计报告 2019-3-234、函数设计1、 本程序有主函数和个函数组成:本程序总共由24个函数组成。2、函数相互作用关系见下图初始化模式进入欢迎界win()游戏介绍help ()初始化图形模式In itializeqraph()设置新的时钟中断Han dleUp(i nt *,i nt *x, i nt *y)KillLi ne(i nt)Han dleDow n(i nt,i nt*x, i nt *y)Interrupt ()开始游戏StartGame ()处理在游戏中的 各种事件Process In Game()SetTimer(* (void)In

10、 itializeGameboard()(*I ntProc) (void)Han dleLeft(i nt ,int *x, i nt *y)IsCo nflict(i nt,i nt, int)Han dleRight(i nt,i nt *x, i nt *y)DrawSquare( in t,i nt)DrawBlock(i nt,i nt丿,in t,i nt)IsL in eFull(i nt)KillLi ne(i nt)lsGameOver()恢复原来的时钟中断KillTimer()关闭图形模型俄罗斯方块程序设计报告 2019-3-23四、函数功能的描述:五、函数原型函数功能函

11、数处理描述void in terrupt n ewtimer(void)新的时钟中断处理函数调用(*oldtimer)()函数语句柄,计时器自动加1void SetTimer(voidin terrupt(*I ntProc)(void)指向原来时 钟中断处理 过程入口的 中断处理函 数(句柄)void KillTimer()恢复原有的时钟中断处理过程调用setvect()恢复原有的时钟中断处理过程void In itializeGraph()初始化图形模式1、调用 initgraph()切换到图形模式2、初始化若发生错误,则返回错误密码voidIn itializeGameboard()初始

12、化游戏面板以及下一形状提示 框、计分框和1、调用bar()recta ngle()等库函数绘图函数绘制游戏界面2、调用难度框outtextxy()函数显示文字void DrawSquare(i nt x, inty)在坐标(x,y)处画方块调用库函数bar()绘制方块void DrawBlock(i ntBlock In dex, int sx, intsy,i nt color)在坐标(sx,sy)处绘制颜色为color的形状调用 DrawSqueare()函数绘制形状int IsCo nflict(i ntBlock In dex, int x, int y)判断形状是否存在于坐标(x,y )处无冲突返回0,有冲突返回1void Han dleLeft(i ntBlockI ndex,i nt *x, int *y)按下左方向键时的处理函数调用IsConflic()函数判断形状是否可以左移,void Han dleRight(i ntBlockI ndex,i nt *x, int *y)按下右方向键时的处理函数调用IsConflic()函数判断形状是否可以右移,void Han dleUp(i nt*Block In dex,i nt *x, int*y)按下上方向 键(旋转键) 时的处理函 数调用IsConflic()函数判断形状是否可以旋转,int Han dleDow

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号