首页 俄罗斯方块报告

俄罗斯方块报告

举报
开通vip

俄罗斯方块报告Microsoft 西安邮电大学 名称:简易俄罗斯方块 小组成员:张航、王贞、魏琦 辅导教师:王文浪 时间:2013年7月28日-----2013年8月5日 1、​ 游戏设计背景 俄罗斯方块游戏属于经典小游戏,游戏规则简单,又不乏趣味,是老少均喜欢的一款小游戏。它是由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名 。 用C语言来编写俄罗斯方块这个游戏有较大优势:C语言具有各种各样的数据类型,并引入了指针概念,使得程序效率更高;C语言还包含很广泛的运算符;另外C语言具有强大的图形功能,支持多种显示器和驱动器,而且计算功能...

俄罗斯方块报告
Microsoft 西安邮电大学 名称:简易俄罗斯方块 小组成员:张航、王贞、魏琦 辅导教师:王文浪 时间:2013年7月28日-----2013年8月5日 1、​ 游戏 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 背景 俄罗斯方块游戏属于经典小游戏,游戏规则简单,又不乏趣味,是老少均喜欢的一款小游戏。它是由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名 。 用C语言来编写俄罗斯方块这个游戏有较大优势:C语言具有各种各样的数据类型,并引入了指针概念,使得程序效率更高;C语言还包含很广泛的运算符;另外C语言具有强大的图形功能,支持多种显示器和驱动器,而且计算功能、逻辑判断能力也比较强大 俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分 2、​ 游戏设计目的 1、熟悉Turbo C环境的基本操作和使用技巧,以及熟悉《graphics.h》头文件中所包含的函数 2、提高编程能力 3、掌握数据结构的核心思想,熟练使用结构体、数组,掌握俄罗斯方块开发的基本原理,提高动手操作能力 三、游戏基本构思 支持键盘操作,并要求7种不同类型的方块的旋转变换,同时,界面预览区上随机显示下一个游戏方块,根据相应按键进行堆积,如果每层达到饱和状态自动消行,显示当前的游戏分数,并有帮助功能 1、​ 游戏设计初期主要有以下问题: 怎样存储游戏整个板面以及方块形状? 怎样控制方块的移动? 怎样控制时间间隔(游戏中控制方块下落)? 怎样判断某一行已经到底?到左右两边?即如何判断移动时的边界控制? 怎样判断某一行已经填满并且如何消行? 怎样判断游戏结束? 2、 问题描述 本次游戏设计主要是俄罗斯方块的形状和旋转,在设计中,构造了一个4*4的小方块,由这些小方块组成新的形状,每2到4个一起就能组成一组图形,总共有19种。在预览区随机产生图形,将产生的图形复制到游戏区中并用鼠标控制方块的位置,不断堆积,判断满行后自动消行,并且使其上面的方块列数不变,行数相应的下落。 4、​ 游戏说明 UP:旋转 DOWN :下移 RIGHT:右移 LEFT:左移 每消一行加十分,游戏可以强制结束,也可以在游戏某一个方块碰顶之后结束 五、游戏功能需求 俄罗斯方方块游戏的设计主要步骤分为以下几步: 1、​ 游戏界面的设计 2、​ 游戏方块的形状 3、​ 游戏的旋转 4、​ 游戏方块的运行情况(左移、右移、下移) 5、​ 游戏方块的自动消行 6、​ 游戏方块的得分计算 六、 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图 1、模块图如下: 2、游戏设计主要流程图如下: 否 否 是 否 是 否 是 5、​ 各模块的算法分析 数据结构设计: Struct NODE { int state; int color; }game_regin[NUM1+4][NUM2+4]; NODE结构体 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示游戏底板中每个小方块所具有的属性。其中state表示小方块当前状态,只有0与1两个值,1表示此小方块已被占用,0表示未被占用。color表示小方块的颜色,NUM2为游戏底板上垂直的方向上小方块的个数,NUM1为游戏底板上水平的方向上小方块的个数。 struct SHAPE { char box[2]; int color; /*每个方块的颜色*/ int next; /*下个方块的编号*/ }block[BOXNUM]; SHAPE结构体表示某个游戏方块具有的属性。其中,char box[2]表示用2个字节来表示这个游戏方块的形状。每4位来表示一个游戏方块的一行。Color表示每个游戏方块的颜色,next表示下个游戏方块的编号,在旋转时需要用到此编号。 如下:用{0x44,0x60,GREEN,1}存储如下方块: 以此类推,存储全部19种方块 1、游戏方块预览模块 游戏的下一个方块将在4*4预览区中显示出来,定义了19种方块,初始化时每个结构体中保存它按逆时针方向旋转之后下一个游戏方块的编号,在预览区中使用rand()%19;随机产生编号为0~18的方块。 此模块的主要代码如下: void current_block(int n) { update_block(cur_x,cur_y,n,DISP); cur_n=rand()%19; update_block(cur_x,cur_y,cur_n,DISP); } void update_block(int x0,int y0,int num,int TYPE) { int color; switch(TYPE) { case DISP: color=shape[num].color; setcolor(WHITE); draw_block(x0,y0,num,color); break; case HIDE: color=BLACK; setcolor(BLACK); draw_block(x0,y0,num,color); break; } } void draw_block(int x0,int y0,int num,int color) { int i,j,value; int x=x0,y=y0; setfillstyle(SOLID_FILL,color); for(i=0;i<2;i++) { value=128; for(j=0;j<8;j++) { if(j%4==0 && j!=0) { x=x0; y=y+SIDE+1; } if(shape[num].box[i] && value) { bar3d(x,y,x+SIDE-2,y+SIDE-2,DEPTH,1); } value=value/2; x=x+SIDE+1; } x=x0; y=y+SIDE+1; } 1} 2游戏方块控制模块 此模块是整个代码的核心,更是俄罗斯方块游戏设计的难点和重点,我们设计的整体思路就是在判断不越界并且游戏底板没有被占用即为0的情况下,先清除移动前的方块,然后在移动后的位置上重新画方块。 旋转时,要保证不越界,并且每次旋转时在其所在的4*4方块中都没有被占用,否则不能旋转,利用当前数据结构中的next值为下一个方块编号。 以左移和旋转函数为例: (判断是否可以左移) int is_move_left(int x0,int y0) { int m,n; int x=x0,y=y0; int flag; int i,j; int value1=128,value2=8,value; for(m=0;m<4;m++) { for(n=0;n<4;n++) { if(n==0||n==2) value=value1; /*128 is 10000000 128/2 is 01000000*/ else value=value2; /*8 is 1000*/ if(n==0||n==1) flag=block[cur_n].box[0]&value; else flag=block[cur_n].box[1]&value; count_ij_by_xy(x,y,&i,&j); if( game_region[i][j-1].state==1&&flag!=0) return FALSE; y+=SIDE+1; } value1/=2; value2/=2; y=y0; x=x+SIDE+1; } return TRUE; } (判断是否可以旋转) int is_move_involve(int x0,int y0) { int i,j,c,value; int x=x0,y=y0; int m,n,flag=0; for(m=0;m<2;m++) { value=128; for(n=0;n<8;n++) { if(n%4==0&&n!=0) { x=x0; y+=SIDE+1; } flag=block[block[cur_n].next].box[m]&value; count_ij_by_xy(x,y,&i,&j); if( game_region[i][j].state==1&&flag!=0) return FALSE; value/=2; x+=SIDE+1; } x=x0; y+=SIDE+1; } return TRUE; } 3游戏方块显示更新模块 当游戏方块左右移动、下落、旋转时,要清除先前的游戏方块,用新坐标重绘游戏方块。当消除满行时,要重绘游戏底板的当前状态。 清除方块的过程为:用先画轮廓再填充的方式,使用背景色填充小方块,然后使用前景色画一个游戏底板中的小方块。循环此过程,变化当前坐标,填充及画出共19个这样的小方块。这样在游戏底板中,清除了此游戏方块。 以左移函数为例如下: (左移函数) void move_left(int x0,int y0) { if(is_move_left(x0,y0)) { update_block(x0,y0,cur_n,CLEAN); cur_x=x0-SIDE-1; update_block(cur_x,cur_y,cur_n,DISP); } } 4游戏帮助模块 在屏幕的左半下方区域,显示游戏的帮助提示 5游戏的分数更新功能 判断满行,每次满行后消除这一行,游戏的当前分数加十分并显示出来 6游戏的计时模块 使用time();函数,,自由下落时,每次延迟一秒下落; 6、​ 运行效果 7、​  总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 九、源代码
本文档为【俄罗斯方块报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_340128
暂无简介~
格式:doc
大小:120KB
软件:Word
页数:13
分类:工学
上传时间:2014-03-19
浏览量:91