基于EasyX的俄罗斯方块游戏的设计和分析_第1页
基于EasyX的俄罗斯方块游戏的设计和分析_第2页
基于EasyX的俄罗斯方块游戏的设计和分析_第3页
基于EasyX的俄罗斯方块游戏的设计和分析_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于EasyX的俄罗斯方块游戏的设计和分析摘 要 本文是基于EasyX的图形库,运用 C语言在VC+ 6.0的平台上开发出来的一款俄罗斯方块游戏。关键词EasyX俄罗斯方块游戏;VC中图分类号 TP3 文献标识码 A 文章编号 1674-6708 (2015)150-0137-01EasyX是针对C+啲图形库,可以帮助c语言初学者者快 速的上手图形和游戏编程,不需要注册窗口类,建消息循环 等,在使用上和 Turbo C没有很大的区别,但是它增加了鼠 标、批量绘图、读取图片(点阵或矢量)等功能。1 游戏功能描述 编写一个成功的俄罗斯方块游戏,主要考虑实现以下几个功能:游戏方块的预览功能;游戏方块

2、的控制功能;游戏 分数、等级更新功能;游戏操作提示功能。2 游戏设计思路1)程序进入主函数后首先进行初始化,在初始化中通 过 initgraph ()函数进入图形模式,用setorigin ()函数设置原点,用rectangle ()函数画游戏的游戏区和预览区两个 区域,再通过 outtextxy ()函数输出游戏桌面的有关提示以 及成绩和等级。2)本游戏的游戏区域被划分为20*15 个单元方格,定义了一个二维数组g_world2015 ,数组的下标就是每个单元方格左上方 的坐标,通过数组存放的信息来标志单元方格的有关信息, 用 1 表示单元方格被方块占用, 0 表示未被占用。3)每个游戏方块

3、是通过 4*4 的矩阵单元方格来定义的, 以下为要设计主要的方块。当单元方格被占用时用 1 表示,未被占用的则用 0表示, 以第二个L型方块为例,这个方块可以用0100,0100,0110 , 0000来表示,用十六进制表示为0x4460。用循环语句检测这个十六进制的每一位,当为 1 是就调用 setfillcolor ()、 setlinecolor ()、 fillrectangle ()三个函数来给相应的单元格 填充颜色。4)游戏方块的结构体变量的定义:struct Blockinfochar num; char x, y; char change;g_curblock , g_next

4、block ; / 当前和下一个方块struct BLOCKWORD dir4 ; / 方块的四个旋转状态COLORREF colo;rg_block7= 0x0F00 , 0x4444 , 0x0F00, 0x4444 , RED,/ I 型; / 定义的 7 种方块形状3 游戏用到的有关算法1) 方块变换。方块变换包括左右移动、下落、旋转、沉底,首先要用 检测算法检测变换后将要生成的下一个方块是否符合游戏 规则,如果符合就先删除原先的方块,再画出下一个方块。2) 检测算法。方块变换时,用检测算法检测是否出边界,是否有重叠 现象发生,边界包括上下左右边界,根据方格的左上坐标是 否超出设定的边

5、界来确定是否出界。重叠则根据在游戏区域 内的方块所对应的二维数组的值是否全是 0 标识,如果存在 某个二维数组的值不为 0,则表示发生重叠, 那么就返回 false, 禁止方块变换,否则返回 true ,允许方块变换。以下是检测 算法的程序。int check_block (Blockinfo _block )WORD temp=g_block_block.num.dir_block.change ; char x, y;for (int i=0 ; i16; i+, temp19|y0 ) return false ;if (y20&g_worldyx ) return false ;3)

6、方块停止下落、删除整行。 方块停止下落表明方块已经下落到底部,或者方块将要 发生重叠。停止下落后就要使相应的方块内彩色单元格的位 置坐标(x, y)标注在二维数组 g_worldyx中,即令 g_worldyx=1 。当方块停止后就要检测是否有整行的发生, 这里用一个循环来检测是否有一行的 g_worldyx 的值全部 为 1 ,如果全是 1,就需要删除这一行。删除的这一行的 g_worldyx 的值全部标为 0。然后把删除行的上面的的 g_worldyx 的值全部下移一行直到某一行的 g_worldyx 全为0;同时用getimage ()和putimage ()两个函数进行 存储图形和输出存储的图形。4) 更新、新方块显示算法。 当删除一行时,根据游戏的功能需求,需要更新分数和 等级,这时可以用 sprintf ()和outtextxy ()更新分数和等 级。当一个方块生成以后,需要在游戏方块预览区域中随机 生成下一个方块,用rand ()函数生成 g_nextblock.num和g_nextblock.change。然后通过画图函数在预览区域中画出下 一个方块。4 俄罗斯方块的实现5 结论 本文以俄罗斯方块的程序编写为例,详细分析了游戏的 设计思路

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论