基于EasyX的俄罗斯方块游戏的设计和分析.doc

上传人:scccc 文档编号:12060466 上传时间:2021-12-01 格式:DOC 页数:5 大小:22.50KB
返回 下载 相关 举报
基于EasyX的俄罗斯方块游戏的设计和分析.doc_第1页
第1页 / 共5页
基于EasyX的俄罗斯方块游戏的设计和分析.doc_第2页
第2页 / 共5页
基于EasyX的俄罗斯方块游戏的设计和分析.doc_第3页
第3页 / 共5页
基于EasyX的俄罗斯方块游戏的设计和分析.doc_第4页
第4页 / 共5页
基于EasyX的俄罗斯方块游戏的设计和分析.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于EasyX的俄罗斯方块游戏的设计和分析.doc》由会员分享,可在线阅读,更多相关《基于EasyX的俄罗斯方块游戏的设计和分析.doc(5页珍藏版)》请在三一文库上搜索。

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 ; i<16; i+, temp<<=1 ) if (0x8000&temp ) x=_block.x+i%4; y=_b

6、lock.y+i/4 ;if (x14|y>19|y<0 ) return false ;if (y<20&&g_worldyx ) return false ;3) 方块停止下落、删除整行。 方块停止下落表明方块已经下落到底部,或者方块将要 发生重叠。停止下落后就要使相应的方块内彩色单元格的位 置坐标(x, y)标注在二维数组 g_worldyx中,即令 g_worldyx=1 。当方块停止后就要检测是否有整行的发生, 这里用一个循环来检测是否有一行的 g_worldyx 的值全部 为 1 ,如果全是 1,就需要删除这一行。删除的这一行的 g_worldyx

7、 的值全部标为 0。然后把删除行的上面的的 g_worldyx 的值全部下移一行直到某一行的 g_worldyx 全为0;同时用getimage ()和putimage ()两个函数进行 存储图形和输出存储的图形。4) 更新、新方块显示算法。 当删除一行时,根据游戏的功能需求,需要更新分数和 等级,这时可以用 sprintf ()和outtextxy ()更新分数和等 级。当一个方块生成以后,需要在游戏方块预览区域中随机 生成下一个方块,用rand ()函数生成 g_nextblock.num和g_nextblock.change。然后通过画图函数在预览区域中画出下 一个方块。4 俄罗斯方块的实现5 结论 本文以俄罗斯方块的程序编写为例,详细分析了游戏的 设计思路和有关算法,为 C 语言初学者学习游戏开发提供了 借鉴作用。参考文献1 谭浩强.c程序设计M.3版.北京:清华大学出版社, 2009.2 王文举.c#语言开发俄罗斯方块游戏J.电脑编程与维 护, 2013( 3).

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1