游戏开发之〈俄罗斯方块规则简述〉
发布时间:2024-11-04
发布时间:2024-11-04
这是用DirectX做的俄罗斯方块游戏全过程,希望对喜欢游戏开发的朋友有用!
〈俄罗斯方块规则简述〉 游戏元素: [元素] 方块
[规格] 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]来标记方块
变量赋值: alpa=1(默认初始状态)
这是用DirectX做的俄罗斯方块游戏全过程,希望对喜欢游戏开发的朋友有用!
积木生成: [元素] 方块
[规格] 由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
这是用DirectX做的俄罗斯方块游戏全过程,希望对喜欢游戏开发的朋友有用!
积木代号: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
碰撞检测规则:
[碰撞规则]
(在方块下落之前,我们要先进行碰撞检测。一判定是否满足下落的条件。) 当构成积木的方块有一个方块最先与场景中其他积木方块有垂直方向接触时,或者与场景底部有接触时,为成功碰撞,
这是用DirectX做的俄罗斯方块游戏全过程,希望对喜欢游戏开发的朋友有用!
否则为碰撞检测失败。
当构成积木的方块有一个方块最先与场景中其他积木方块有水平方向接触时,为成功碰撞
否则为碰撞检测失败。 [检测方法]
( 积木下落过程中,构成积木的方块的坐标是随时在变动着,也代表着场景中方块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:变形键
[变形规则] 一个积木只有几个有限的可变型状,当把其他的型状变完后,再变的话就
又会回到原来的形状。
积木变形是一个循环的过程。
这是用DirectX做的俄罗斯方块游戏全过程,希望对喜欢游戏开发的朋友有用!
[核心规则]
(积木在场景中显示出来是因为指定的方块透明度=0,而透明度=1的方块是看不见颜色的,也就是用黑色方块来显示出积木的形状)
(具体变换,那就是根据方块标记的唯一坐标来给指定的方块透明度进行赋值的过程了)
因为篇幅问题所以就只列出一部分来说明: 。
注意:*[X,Y]=1/0 表示该坐标的方块alpa值 alpa=1/0。
*参考积木的代号
*
alpa值
A:
变形前/变形后
输入变形命令 变形后/变形前 [1,N\2 ]=0
[1,
N\2 ]=1
[2,N\2
]=0
[2,N\2 ,N\2 [2,N\2+1]=0 [2,, [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:
C:
变形前/变形后 输入变形命令 变形后/变形前 输入变形命令 变形前/变形后 [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 优化:
变形前/变形后 输入变形命令 变形后/变形前 输入变形命令 变形前/变形后
这是用DirectX做的俄罗斯方块游戏全过程,希望对喜欢游戏开发的朋友有用!
[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
输入变形命令 变形前/变形后 输入变形命令 变形前/变形后 [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:下落键 [移动规则]
左平移: 积木延水平方向左移一个方块大小的位置
这是用DirectX做的俄罗斯方块游戏全过程,希望对喜欢游戏开发的朋友有用!
右平移: 积木延水平方向右移一个方块大小的位置 垂直下落: 积木延垂直方向迅速下落
[核心规则]
第一次平移:
移动后坐标
构成积木的方块系统初始化坐标 [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
这是用DirectX做的俄罗斯方块游戏全过程,希望对喜欢游戏开发的朋友有用!
[X3,Y3]=0 成功碰撞 [X3,Y3]=0 [X4,Y4]=0 [X4,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层
这是用DirectX做的俄罗斯方块游戏全过程,希望对喜欢游戏开发的朋友有用!
(因为不知道具体的数据,所以以?代替)
依据关卡对应的速度: 速度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
这是用DirectX做的俄罗斯方块游戏全过程,希望对喜欢游戏开发的朋友有用!
失败流程: 满足失败条件
则所有方块透明度=1
特定坐标的方块透明度=0,显示出“OVER”字样。 回到游戏开始画面。
上一篇:桥梁工程第一章课件