您的当前位置:首页正文

俄罗斯方块规则简述

2023-02-15 来源:步旅网
 〈俄罗斯方块规则简述〉 游戏元素: [元素] 方块

[规格] 5×5像素 [颜色] 黑色

[状态] 透明,不透明 [核心规则]

元素: Fangkuai_bitmap(方块美术图文件名) 规格: 5×5像素 黑色

变量: alpa(alpa=1为透明,alpa=0为不透明)

场景构成:

[形状] 长方形,长>宽

[规格] 由M×N个元素方块构成,M表示长,N表示宽,一个方块大小为一个计量单位 比如:18×12 表示长度为18个方块大小,宽度为12个方块大小。 [颜色] 透明

[状态] 所有方块alpa=1 [核心规则]

构成元素: M×N个Fangkuai_bitmap 方块识别: 引入数组ALL[X,Y]来对每一个方块在场景中的位置做唯一的标记,X的数值

对应M的数值,Y的数值对应N的数值。

例如:18×12大小的场景,由18×12个方块组成,那么用ALL[X,Y]来标记方块

Y标记 X标记 这样,坐标[1,1]就表示图中黑色的方块, 坐标[18,12]就表示图中红色的方块 依次类推。

变量赋值: alpa=1(默认初始状态)

1 / 10

积木生成: [元素] 方块

[规格] 由4个方块按照一定规则组合而成 ,如图: 共计19件

[颜色]黑色 [状态]不透明 [核心规则]

积木是通过场景中以下坐标标记的方块的alpa值来生成的: [1,Y\\2-1] [1,Y\\2] [1,Y\\2+1] [2,Y\\2-1] [2,Y\\2] [2,Y\\2+1] [3,Y\\2-1] [3,Y\\2] [3,Y\\2+1]

生成积木的时候,更改相应的方块变量值 ,其变量alpa=0 以下坐标标记的方块为需要更改alpa值的方块: (参考场景构成的[方块识别] )

积木代号:A_1

积木代号:A_2

积木代号:B_1

积木代号:B_2

2 / 10

积木代号:C_1

积木代号:C_2

积木代号:C _3

积木代号:C_4

积木代号:D_1

积木代号:D_2

积木代号:D_3

积木代号:D_4

积木代号:E_1

积木代号:F_1

积木代号:F_2

积木代号:G_1

积木代号:G_2

积木代号:G_3

积木代号:G_4

碰撞检测规则:

[碰撞规则]

(在方块下落之前,我们要先进行碰撞检测。一判定是否满足下落的条件。) 当构成积木的方块有一个方块最先与场景中其他积木方块有垂直方向接触时,或者与场景底部有接触时,为成功碰撞,

3 / 10

否则为碰撞检测失败。

当构成积木的方块有一个方块最先与场景中其他积木方块有水平方向接触时,为成功碰撞

否则为碰撞检测失败。 [检测方法]

( 积木下落过程中,构成积木的方块的坐标是随时在变动着,也代表着场景中方块alpa值的变动)

构成积木的方块坐标[X,Y],检测[X+1,Y]=1时候成立,为碰撞检测失败

检测[X,Y+1]=1时候成立,为碰撞检测失败 检测[X,Y-1]=1时候成立,为碰撞检测失败

检测[X+1,Y]=1时候不成立,即[X+1,Y]=0,为成功碰撞。 检测[X,Y+1]=1时候不成立,即[X,Y+1]=0,为成功碰撞 检测[X,Y-1]=1时候不成立,即[X,Y-1]=0,为成功碰撞 当X+1>M时,或则Y+1>N或则Y-1<=0时 ,不需要进行检测,默认为成功碰撞

积木变形:

[操作按键] A_1:变形键

[变形规则] 一个积木只有几个有限的可变型状,当把其他的型状变完后,再变的话就

又会回到原来的形状。

积木变形是一个循环的过程。

4 / 10

[核心规则]

(积木在场景中显示出来是因为指定的方块透明度=0,而透明度=1的方块是看不见颜色的,也就是用黑色方块来显示出积木的形状)

(具体变换,那就是根据方块标记的唯一坐标来给指定的方块透明度进行赋值的过程了)

因为篇幅问题所以就只列出一部分来说明: 。

注意:*[X,Y]=1/0 表示该坐标的方块alpa值 alpa=1/0。

*参考积木的代号

*积木的变形规则可以根据积木的标记来判断变形后的alpa值

A: A_1 A_2

A_2 A_1 变形前/变形后 输入变形命令 变形后/变形前 [1,N\\2 ]=0 [1,N\\2 ]=1 [2,N\\2 ]=0 [2,N\\2 ]=0 [2,N\\2 ]=1 [2,N\\2+1]=0 [2,N\\2+1]=0 [2,N\\2+1]=1 [3,N\\2 ]=0 [3,N\\2+1]=0 [3,N\\2+1]=1 [3,N\\2-1]=0

优化:

变形前/变形后 输入变形命令 变形后/变形前 [1,N\\2 ]=0 [1,N\\2 ]=1 [2,N\\2 ]=0 [2,N\\2 ]=0 [2,N\\2+1]=0 [2,N\\2+1]=0 [3,N\\2 ]=0 [3,N\\2+1]=0 [3,N\\2+1]=1 [3,N\\2-1]=0

B:

B_1 B_2

C_1 C_2 C_3 C_4 C:

C_1 C_2 C_3

变形前/变形后 输入变形命令 变形后/变形前 输入变形命令 变形前/变形后 [1,N\\2 ]=0 [1,N\\2 ]=1 [2,N\\2 ]=0 [2,N\\2 ]=1 [1,N\\2-1]=0 [2,N\\2 ]=0 [2,N\\2 ]=1 [2,N\\2-1]=0 [2,N\\2-1]=1 [1,N\\2 ]=0 [3,N\\2 ]=0 [3,N\\2 ]=1 [2,N\\2+1]=0 [2,N\\2+1]=1 [2,N\\2 ]=0 [3,N\\2+1]=0 [3,N\\2+1]=1 [3,N\\2-1]=0 [3,N\\2-1]=1 [3,N\\2 ]=0 优化:

变形前/变形后 输入变形命令 变形后/变形前 输入变形命令 变形前/变形后

5 / 10

[1,N\\2 ]=0 [1,N\\2 ]=1 [2,N\\2 ]=0 [1,N\\2-1]=0 [2,N\\2 ]=0 [2,N\\2-1]=0 [2,N\\2-1]=1 [1,N\\2 ]=0 [3,N\\2 ]=0 [3,N\\2 ]=1 [2,N\\2+1]=0 [2,N\\2+1]=1 [2,N\\2 ]=0 [3,N\\2+1]=0 [3,N\\2+1]=1 [3,N\\2-1]=0 [3,N\\2-1]=1 [3,N\\2 ]=0

C_4 C_1 输入变形命令 变形前/变形后 输入变形命令 变形前/变形后 [1,N\\2-1] =1 [2,N\\2+1] =0 [2,N\\2+1]=1 [1,N\\2 ]=0 [1,N\\2 ] =1 [3,N\\2-1] =0 [3,N\\2-1]=1 [2,N\\2 ]=0 [2,N\\2 ] =1 3,N\\2 ] =0 [3,N\\2 ]=1 [3,N\\2 ]=0 [3,N\\2 ] =1 [3,N\\2+1] =0 [3,N\\2+1]=1 [3,N\\2+1]=0 优化:

输入变形命令 变形前/变形后 输入变形命令 变形前/变形后 [1,N\\2-1] =1 [2,N\\2+1] =0 [2,N\\2+1]=1 [1,N\\2 ]=0 [1,N\\2 ] =1 [3,N\\2-1] =0 [3,N\\2-1]=1 [2,N\\2 ]=0 [2,N\\2 ] =1 [3,N\\2 ] =0 [3,N\\2 ]=0 [3,N\\2+1] =0 [3,N\\2+1]=0

D:

E:

F:

G:

移动规则:

[操作按键] B_1:左移动键

B_2:右移动键 B_3:下落键 [移动规则]

左平移: 积木延水平方向左移一个方块大小的位置

6 / 10

E_1 D_1 D_2 C_3 C_4 F_1 F_2 G_1 G_2 G_3 G_4 右平移: 积木延水平方向右移一个方块大小的位置 垂直下落: 积木延垂直方向迅速下落

[核心规则]

第一次平移:

移动后坐标

构成积木的方块系统初始化坐标 [X1,Y1]=0 [X1,Y1]=1 [X1,Y1-1]=0

[X2,Y2]=0 ->左平移命令->[X2,Y2]=1 [X2,Y2-1]=0 [X3,Y3]=0 碰撞检测失败 [X3,Y3]=1 [X3,Y3-1]=0 [X4,Y4]=0 [X4,Y4]=1 , [X4,Y4-1]=0 平移后的坐标再默认赋给初始坐标

移动后坐标 构成积木的方块系统初始化坐标[X1,Y1]=0 [X1,Y1]=1 [X1,Y1+1]=0

[X2,Y2]=0 ->右平移命令->[X2,Y2]=1 [X2,Y2+1]=0 [X3,Y3]=0 碰撞检测失败 [X3,Y3]=1 [X3,Y3+1]=0 [X4,Y4]=0 [X4,Y4]=1 ,[X4,Y4+1] =0 平移后的坐标再默认赋给初始坐标

第二次平移:

移动后坐标

构成积木的方块默认初始坐标 [X1,Y1]=0 [X1,Y1]=1 [X1,Y1-1]=0

[X2,Y2]=0 ->左平移命令-> [X2,Y2]=1 [X2,Y2-1]=0 [X3,Y3]=0 碰撞检测失败 [X3,Y3]=1 [X3,Y3-1]=0 [X4,Y4]=0 [X4,Y4]=1 ,[X4,Y4-1]=0 平移后的坐标再默认赋给初始坐标

移动后坐标 构成积木的方块默认初始坐标 [X1,Y1]=0 [X1,Y1]=1 [X1,Y1+1]=0

[X2,Y2]=0 ->右平移命令->[X2,Y2]=1 [X2,Y2+1]=0 [X3,Y3]=0 碰撞检测失败 [X3,Y3]=1 [X3,Y3+1]=0 [X4,Y4]=0 [X4,Y4]=1 ,[X4,Y4+1]=0 平移后的坐标再默认赋给初始坐标

移动后坐标 构成积木的方块默认初始坐标 [X1,Y1]=0 [X1,Y1]=0

[X2,Y2]=0 ->左平移命令-> [X2,Y2]=0 [X3,Y3]=0 成功碰撞 [X3,Y3]=0 [X4,Y4]=0 [X4,Y4]=0 平移后的坐标再默认赋给初始坐标

移动后坐标 构成积木的方块默认初始坐标 [X1,Y1]=0 [X1,Y1]=0

[X2,Y2]=0 ->右平移命令->[X2,Y2]=0

7 / 10

[X3,Y3]=0 成功碰撞 [X3,Y3]=0 [X4,Y4]=0 [X4,Y4]=0 依次类推。

垂直下落: 将下落后的坐标 初始坐标 下落一层后坐标 再定为初始坐 [X1,Y1]=0 [X1,Y1]=1 [X1+1,Y1]=0 标,循环 垂直下落命令 [X2,Y2]=0 [X2,Y2]=1 [X2+1,Y2]=0 [X3,Y3]=0 [X3,Y3]=1 [X3+1,Y3]=0 [X4,Y4]=0 [X4,Y4]=1 [X4+1,Y4]=0 (失败) 碰撞检测

消除规则:

[操作按键] 无(系统自动完成) [消除规则]

(以X轴来分层,一个方块大小为一层。) 条件:在同一层中被添满方块时触发

结果:该层方块被消除,在该层上方的方块下落一层。 [积分规则]

一次消除一层: 获得10积分 一次消除二层: 获得30积分 一次消除三层: 获得50积分 一次消除四层: 获得70积分 [核心规则]

条件: x×y大小场景,根据X=1++,X<=x的方法检测方块坐标[X,Y] ,检测[X,Y|(Y=1++,Y<=y)]=0是否成立,成立则触发

结果:[X,Y|(Y=1++,Y<=y)]=1,

再将[X-1,Y|(Y=1++,Y<=y)] 的值赋值给[X,Y|(Y=1++,Y<=y)], 再将[X-2,Y|(Y=1++,Y<=y)] 的值赋值给[X-1,Y|(Y=1++,Y<=y)] 依次类推。

积分:定义一个变量@=0

一个积木出现到下个积木出现的中间阶段,满足一次条件时变量@=@+1,然后根据@的值来判定积分获得的加值。

积木下落速度规则:

[操作按键] 无(系统自动完成) [速度规则]

条件: 碰撞检测失败 下落轨迹: 垂直下落,

速度设置: 系统默认的初始速度为:速度0= 2 秒1层

8 / 10

(因为不知道具体的数据,所以以?代替)

依据关卡对应的速度: 速度1= ?秒1层

速度2= ?秒1层 速度3= ?秒1层 速度4= ?秒1层 速度5= ?秒1层 速度6= ?秒1层 速度7= ?秒1层 速度8= ?秒1层 速度9= ?秒1层 [核心规则]

构成积木的方块坐标[X,Y]。

初始坐标 下落后积木方块的坐标 [X1,Y1]=0 [X1,Y1]=1 [X1+1,Y1]=0 速度设定的时间间隔->[X2,Y2]=0 -> [X2,Y2]=1 [X2+1,Y2]=0 [X3,Y3]=0 [X3,Y3]=1 [X3+1,Y3]=0 [X4,Y4]=0 [X4,Y4]=1,[X4+1,Y4]=0

下落后的坐标再默认赋给初始坐标 胜利与失败: [胜利条件]

通过所有关卡后还没有失败

关卡1 过关要求:达到1000积分 关卡2 过关要求:达到2000积分 关卡3 过关要求:达到3000积分 关卡4 过关要求:达到4000积分 关卡5 过关要求:达到5000积分 关卡6 过关要求:达到6000积分 关卡7 过关要求:达到7000积分 关卡8 过关要求;达到8000积分 关卡9 过关要求:达到9000积分

[失败条件]

(游戏规则)当积木堆积的最高处达到场景的最高处时,宣告游戏失败并结束游戏。

[失败流程] 满足失败条件

则清空场景黑色方块 显示出“OVER”字样。 回到游戏开始画面。

[核心规则]

失败条件:当数组ALL[X,Y]中[1,*]标记的方块中有一个方块的透明度=0

9 / 10

失败流程: 满足失败条件

则所有方块透明度=1

特定坐标的方块透明度=0,显示出“OVER”字样。 回到游戏开始画面。

规则流程图: 场景生成规则 积木生成规则 碰撞检测规则 检测成功 消除规则 检测失败 (在速度设置中满足时间间隔条件) (玩家操作输入) 下落规则 移动规则 胜利与失败规则

10 / 10

因篇幅问题不能全部显示,请点此查看更多更全内容