俄罗斯方块的实现思路
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
俄罗斯方块的实现思路
目录
1. 底部堆砌的方块的表示 (2)
2. 7种方块及其旋转的表示 (2)
3. 当前工作区的绘制 (6)
4. 实现步骤 (6)
2014年12月29日
1.底部堆砌的方块的表示
底部堆砌的方块用一个二维数组workRegion[20][10]表示:
workRegion [i][j] == 0表示该位置没有方块;
workRegion[i][j] == 1..7分别表示该位置被I、T、L、J、O、S、Z这7种图形所占据。
每次绘制屏幕时都要对二维数组workRegion中的每个元素进行访问,根据workRegion[i][j]的取值来决定相应位置是否需要绘制方块,以及绘制方块的颜色。
2.7种方块及其旋转的表示
总共有7种方块,每种方块根据其旋转情况有4种状态,每种方块的每种状态
可以用一个4*4的二维数组来表示。因此可以用一个4维数组来表示所有方块及
还需再定义两个全局变量type和state,分别表示当前屏幕中的方块类型(7种中的一种)及其状态(4种旋转状态中的一种)。
1)随机产生一个方块时,仅需:
type = rand() % 7;
2)实现方块旋转时,仅需:
state = (state + 1) % 4;
3)当前方块的信息可以用二维数组bricks[type][state]表示
3.当前工作区的绘制
workRegion[20][10]存储了底部堆砌的所有方块,
bricks[type][state]存储了当前屏幕中正在下落的方块,
还需要两个变量posX, posY来表示当前屏幕中正在下落的方块的位置。
绘制屏幕时,先根据workRegion[20][10]绘制底部堆砌的所有方块,然后根据bricks[type][state], posX, posY绘制出正在下落的方块。
其它的所有操作都是对workRegion, type, state, posX, posY等变量进行修改。当然,还需要用一些变量来表示玩家当前得分以及游戏是否结束等信息。
4.实现步骤
1) 能在游戏窗格中随机产生7种不同方块并缓慢下落
2) 实现方块的左右移动、旋转、加速落下、直接下落到底部
3) 实现触底,即方块下落过程中能停靠在正确位置
4) 实现消行功能
5) 正确显示玩家得分
6) 游戏能正确开始、暂停、退出