ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:55.68KB ,
资源ID:22231778      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22231778.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(俄罗斯方块编程课程设计报告Word文档格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

俄罗斯方块编程课程设计报告Word文档格式.docx

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

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

3、1,0,0,1,0,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 因为屏幕的左上角为原点,向右为*轴增加的方向,向下为y轴增加的方向,将上述坐标对号入座即可得到向对应的方块形状。二.方块形状Z形方块Z形方块对号入座如下图所示: Z形方块坐标图S型方块S形方块对号入座如下图所示: S形方块坐标图 线形方块 线形方块对号入座如图所示:线形方块坐标图T型方块T型方块对号入座如图所示:-1,0,0,0,1,0,0,1 T型方块坐标图方形方方形方块对号入座如图所示:方形方块坐标图

4、L形方块LL型方块对号入座如图所示:L型方块坐标图反L形方块反L形方块对号入座如图所示: L形方块坐标图在方块相对坐标基础上加上*和y的偏移量,就可以在屏幕的不同位置得到相应的反面方块。完成方块的向左,向右及向下移动。将方块的相对坐标旋转90度得到的新坐标就算变形后的坐标。顺时针操作的公式是:*=-yy=*逆时针旋转操作的公式是:*=y其中,*和y代表旋转前方块的相对坐标,*和y代表旋转后方块的相对坐标。 唯一例外的是方形方块,在旋转处理的时候不做处理。七.主要处理流程 游戏的主要流程图如下:八.游戏设计源程序/zhangdi#includetime.hstdio.h#includetetri

5、s.h#define APP_NAME TETRIS#define APP_TITLE Tetris Game#define GAMEOVER GAME OVER#define SHAPE_COUNT 7#define BLOCK_COUNT 4#define MA*_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(25

6、5,255,255)#define STONE RGB(192,192,192)#define CHARS_IN_LINE 14#define SCORE SCORE %4d/全局变量定义char score_charCHARS_IN_LINE=0;char*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 t

7、o pause game.Enjoy it. :-) 0;/枚举游戏的状态enum game_state game_start, game_run, game_pause, game_overstate= game_start;/定义方块的颜色COLORREF 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_COUN

8、T2= 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,1int score=0;/得分shape ne*t=0;/下一个方块shape current=0;/当前方块int current_coordinate42=0;/当前方块的每一部分坐标int tableROWSCOLUMS=0;/游戏桌面int shape*=0;/当前方块的*坐标int shapey=0;/当前方块的y坐标int

9、 speed=0;/方块下移速度clock_t start=0;/每一帧开始时间clock_t finish=0;/每一帧结束时间/*windows 绘图用变量*/HWND gameWND; /*window 窗口句柄*/HBITMAP memBM; /*内存位图*/HBITMAP memBMOld; /*内存原始位图*/HDC memDC; /*内存DC*/RECT clientRC; /*客户端矩形区域*/HBRUSH blackBrush; /*黑色画笔*/HBRUSH stoneBrush; /*深灰色画笔*/HBRUSH shapeBrushSHAPE_COUNT; /*方块画笔,种

10、方块,每种一个*/HPEN grayPen; /*灰色画笔*/HFONT bigFont; /*大字体,用来显示游戏名字和Game Over*/HFONT smallFont; /*小字体用来显示帮助信息等*/*主要处理函数*/int ma*() /*取最大坐标,函数名称:ma*;函数功能:取得当前方块的最大*坐标*/int i=0; /*取最大坐标,函数名称:int *=current_coordinatei0;int m=*;for (i=1; iBLOCK_COUNT;i+) /*取最大坐标,函数名称: *=current_coordinatei0;if (m*) /*取最小坐标,函数名

11、称:/*逆时针旋转方块*/void turn_left() /*函数名称:turn_left ;将当前方块逆时针旋转度*/ /*函数名称:int *,y;for (i=0;i4;i+) /*函数名称: y=current_coordinatei1; current_coordinatei0=y; current_coordinatei1=-*;/*顺时针旋转方块*/void turn_right() /*函数名称:turn_right ;将当前方块顺时针旋转度*/ current_coordinatei0=-y; current_coordinatei1=*; /*检查方块是否越界*/int

12、out_of_table() /*函数名称:out_of_table;检查当前方块是否超出桌面范围*/ *=shape*+current_coordinatei0; y=shapey+current_coordinatei1;if (*(COLUMS-1)|y(ROWS-1) /*函数名称:return 1;if (tabley*) /*函数名称:return 0;/*旋转方块*/void transform() /*函数名称:transform; 函数功能:旋转当前方块*/if (current=SquareShape) /*函数名称:return; turn_right();if (out

13、_of_table() /*函数名称: turn_left();/*判断方块能否向左移动*/int leftable() /*函数名称:leftable;判断当前方块能否向左移动,能移动返回,否则返回*/=0|tabley*-1=1) /*函数名称:/*判断方块能否向右移动*/int rightable() /*函数名称:rightable;判断当前方块能否向右移动,能移动返回,否则返回*/if (*=(COLUMS-1)|tabley*+1=1) /*函数名称:/*判断方块能否向下移动*/int downable() /*函数名称:downable;判断当前方块能否向下移动,能移动返回,否则

14、返回*/if (y=(ROWS-1)|tabley+1*=1) /*函数名称:/*向左移动当前方块*/void move_left() /*函数名称:move_left;向左移动当前方块*/if (leftable() /*函数名称: shape*-;/*向右移动当前方块*/void move_right() /*函数名称:move_right;向右移动方块*/if (rightable() /*函数名称: shape*+;/*向下移动当前方块*/void move_down() /*函数名称:move_down;向下移动当前方块*/if (downable() /*函数名称: shapey+;elseif (add_to_table() /*函数名称: remove_full(); ne*t_shape(); state=game_over;/*将当前方块固定到桌面上*/int add_to_table() /*函数名称:add_to_table;将当前方块固定到桌面上,若返回,表示游戏结束*/add_t

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1