俄罗斯方块编程课程设计报告

上传人:公**** 文档编号:511628707 上传时间:2023-10-04 格式:DOC 页数:24 大小:97KB
返回 下载 相关 举报
俄罗斯方块编程课程设计报告_第1页
第1页 / 共24页
俄罗斯方块编程课程设计报告_第2页
第2页 / 共24页
俄罗斯方块编程课程设计报告_第3页
第3页 / 共24页
俄罗斯方块编程课程设计报告_第4页
第4页 / 共24页
俄罗斯方块编程课程设计报告_第5页
第5页 / 共24页
点击查看更多>>
资源描述

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

1、.课程设计报告题 目:俄罗斯方块设计设 计 者:* *专业班级:* *学 号:* *指导教师:* *所属系部:* * * *年* *月* *日、目录目录2一设计的目的和要求3二设计内容3三设计任务3四游戏基本规则3五总体设计4六详细设计与程序实现4七.主要处理流程8八.游戏设计源程序10九.截图30十心得体会31十一参考文献31一设计的目的和要求加深对C语言课程所学知识的理解,进一步巩固C语言语法规则。学会编制结构清晰、风格良好、数据结构适当的语言程序,从而具备解决综合性实际问题的能力。二设计内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算

2、、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。三设计任务1.游戏欢迎界面。2.游戏执行功能,包括计算得分。3.游戏结束界面。四游戏基本规则 游戏共由7种不同形状的方块组成,游戏开始以后随机产生一个方块由屏幕的顶端开始向下落下,落到低端则固定到桌面,并开始下一个方块。在游戏窗口的左边作为游戏的桌面,用宽度10和高度20的表格表示。游戏桌面的右边靠上显示得分,最下边显示游戏帮助。如果固定到游戏桌面的方块超出了顶端游戏结束。方块固定以后如果桌面上已经

3、固定了的方块满一行,则消除一行并将消除行之上的部分向下移动,消除一行得1分。基本操作如下: (1) 方块落下的过程中可以用左右方向键移动方块的位置。(2) 上方向键用来旋转方块,即所谓的变形。(3) 下方向键用来加速方块下落。(4) 游戏中按下回车键暂停游戏。再次按回车键继续游戏。五总体设计 游戏以Windows窗口的形式运行。窗口的左边作为游戏的桌面,桌面的大小是10X20个单位。随机出现一个方块从游戏桌面的上方开始向下移动,并随机生产一个向下方块显示到桌面的右边。方块的颜色分为7种。在显示下一个方块的上面显示玩家得分,下面显示游戏帮助。当方块不能向下移动的时候,将方块固定到桌面上,固定的方

4、法是将方块的每个部分所在的坐标的桌面数值设置为1.固定以后,判断桌面数值的每一行,如果一行的数值全部都是1的话,就将桌面上的这一行数值删除,并将这一行上面所有行向下移动一行。删除一行的同时,玩家的得分加1。上述操作完成以后,将下一个方块从桌面的顶部开始下落,重新生成下一个方块。在固定方块到桌面的时候,还要判断方块的最顶端部分是否超出桌面范围,并以此作为游戏结束的依据。六详细设计与程序实现一.方块设计 游戏的核心和重点在于7种方块的设计,这7种方块的形状分别为Z形、S形、线形、T形、方形、L形和反L形、其数据结构分别用相对坐标表示如下:0,-1,0,0,-1,0,-1,10,-1,0,0,1,0

5、,1,10,-1,0,0,0,1,0,2-1,0,0,0,1,0,0,10,0,1,0,0,1,1,1-1,-1,0,-1,0,0,0,11,-1,0,-1,0,0,0,1 因为屏幕的左上角为原点,向右为x轴增加的方向,向下为y轴增加的方向,将上述坐标对号入座即可得到向对应的方块形状。二.方块形状Z形方块Z形方块对号入座如下图所示:0,-1,0,0,-1,0,-1,1 Z形方块坐标图S型方块S形方块对号入座如下图所示:0,-1,0,0,1,0,1,1 S形方块坐标图 线形方块 线形方块对号入座如图所示:0,-1,0,0,0,1,0,2线形方块坐标图T型方块T型方块对号入座如图所示:-1,0,0

6、,0,1,0,0,1 T型方块坐标图方形方方形方块对号入座如图所示:0,0,1,0,0,1,1,1方形方块坐标图L形方块LL型方块对号入座如图所示:-1,-1,0,-1,0,0,0,1L型方块坐标图反L形方块反L形方块对号入座如图所示:1,-1,0,-1,0,0,0,1 L形方块坐标图在方块相对坐标基础上加上x和y的偏移量,就可以在屏幕的不同位置得到相应的反面方块。完成方块的向左,向右及向下移动。将方块的相对坐标旋转90度得到的新坐标就算变形后的坐标。顺时针操作的公式是:x=-yy=x逆时针旋转操作的公式是:x=yy=x其中,x和y代表旋转前方块的相对坐标,x和y代表旋转后方块的相对坐标。 唯

7、一例外的是方形方块,在旋转处理的时候不做处理。七.主要处理流程 游戏的主要流程图如下: 左键 上键下键当前方块能够左移向左移动当前方块当前方块能够右移向右移动当前方块当前方块能够旋转当前方块能够下移旋转当前方块向下移动当前方块右键否八.游戏设计源程序/zhangdi*include*include*include*includetetris.h*define APP_NAME TETRIS*define APP_TITLE Tetris Game*define GAMEOVER GAME OVER*define SHAPE_COUNT 7*define BLOCK_COUNT 4*define

8、 MAX_SPEED 5*define COLUMS 10*define ROWS 20*define RED RGB(255,0,0)*define YELLOW RGB(255,255,0)*define GRAY RGB(128,128,128)*define BLACK RGB(0,0,0)*define WHITE RGB(255,255,255)*define STONE RGB(192,192,192)*define CHARS_IN_LINE 14*define SCORE SCORE %4d/全局变量定义char score_charCHARS_IN_LINE=0;char*

9、press_enter=Press Enter key.;/帮助提示信息char*help=Press space or up key to transform shape.,Press left or right key to move shape.,Press down key to speed up.,Press enter key to pause game.,Enjoy it. :-), 0;/枚举游戏的状态enum game_state game_start, game_run, game_pause, game_overstate= game_start;/定义方块的颜色COLO

10、RREF shape_color= RGB(255,0,0), RGB(0,255,0), RGB(0,0,255), RGB(255,255,0), RGB(0,255,255), RGB(255,0,255), RGB(255,255,255);/定义方块的种类型int shape_coordinateSHAPE_COUNTBLOCK_COUNT2=0,-1,0,0,-1,0,-1,1,0,-1,0,0,1,0,1,1,0,-1,0,0,0,1,0,2,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,-1,-1,0,-1,0,0,0,1,1,-1,0,-1,0,0,0,1

11、;int score=0;/得分shape next=0;/下一个方块shape current=0;/当前方块int current_coordinate42=0;/当前方块的每一部分坐标int tableROWSCOLUMS=0;/游戏桌面int shapex=0;/当前方块的x坐标int shapey=0;/当前方块的y坐标int speed=0;/方块下移速度clock_t start=0;/每一帧开始时间clock_t finish=0;/每一帧结束时间/*windows 绘图用变量*/HWND gameWND; /*window 窗口句柄*/HBITMAP memBM; /*内存位

12、图*/HBITMAP memBMOld; /*内存原始位图*/HDC memDC; /*内存DC*/RECT clientRC; /*客户端矩形区域*/HBRUSH blackBrush; /*黑色画笔*/HBRUSH stoneBrush; /*深灰色画笔*/HBRUSH shapeBrushSHAPE_COUNT; /*方块画笔,种方块,每种一个*/HPEN grayPen; /*灰色画笔*/HFONT bigFont; /*大字体,用来显示游戏名字和Game Over*/HFONT smallFont; /*小字体用来显示帮助信息等*/*主要处理函数*/int maxX() /*取最大坐标,函数名称:maxX;函数功能:取得当前方块的最大x坐标*/int i=0; /*取最大坐标,函数名称:maxX;函数功能:取得当前方块的最大x坐标*/int x=current_coordinatei0; /*取最大坐标,函数名称:maxX;函数功能:取得当前方块的最大x坐标*/int m

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

当前位置:首页 > 高等教育 > 研究生课件

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