俄罗斯方块的抽象原则 

2007-05-08 22:19 发布

1935 0 0
一个俄罗斯的抽象原则和流程。

我们把游戏中的空间定义为S;
S中的时间坐标定义为T
S中的总质量为M
游戏开始的初始质量为M0
S中的物质增量为`M

质量增加的规则定义为 I(T);

玩家对物质M的控制方法为P(M)。
对手对物质M的控制方法为O(M)(关卡,CPU,第二玩家,多人玩家)
S中物质运动规则为S(M)(游戏中的第三方,可以理解为宇宙意志或自然法则)
S中的物质消去规则为B,B是一个策略集B={b1,b2,b3.....}
S中的物质合理性检测为C,同样C也是一个策略集C={c1,c2,c3....}
S中的死亡判定为D,同样D也是一个策略集D={d1,d2,d3...
S世界的渲染方法为R(S)

游戏目的:
随着T的推进,M不断变化,玩家的任务是通过手中的方法P(M),利用B(M)和I(T)的规则对M进行调节,保证死亡检测D(P)为假,并想办法实现D(O)为真,击败对手。


游戏流程如下

初始化()
LOOP D(P) ;判断玩家是否死亡
P(M) ;玩家操作
C(M) ;合理性检测(否->撤消非法运动)
O(M) ;对手操作
C(M) ;合理性检测(否->撤消非法运动)
S(M) ;物体运动
C(M) ;合理性检测(否->撤消非法运动)
R(S) ;呈现游戏
LOOP B(M) ;物质消除
S(M) ;消除后的物体运动
C(M) ; 合理性检测(否->撤消非法运动)
R(S) ;呈现游戏
END LOOP
D(O) ;判断对手是否死亡(是->寻找新对手->没有找到新对手->END LOOP)
I(T) ;增加新物质
R(S) ;呈现游戏
END LOOP
玩家死亡,还继续吗?是->回到初始化

游戏结束


以标准俄罗斯方块为例来做说明

S为一个(10X25)的方块矩形空间
T仅在游戏暂停,关卡切换,玩家死亡时停止,此外为线性的自然时间
M为落下的方块+正在落下的方块`M
游戏开始时的M0为0或者一个不确定的方块数量
I(T)当没有正在落下的方块的时候,取出之前已经准备好的一个4方块单位的组合方块,并准备下一个组合方块

P(M)玩家操作的实际是一个物质增量`M
P本身是一个可选择的集合
p1 = 左移一格
p2 = 右移一格
p3 = 下移一格
p4 = 左旋转
p5 = 右旋转
p6 = 快速下降或直接摆放

O(M)对手操作
单机游戏中的对手只有关卡,而关卡本身没有任何操作,只有关卡描述(注意,关卡描述并不是O(M)的内容)
其中有:
speed 物体下落的速度
Mo 关卡本身需要增加的方块或清除M后重新初始化的Mo
target 需要消掉的层数或达到的积分
result 当前玩家已经达到的成果

S(M)物体运动也是一个集合
s1 正在下落的物体`M会按照关卡给出的速度值来进行下落,直到触底,则停止下落
s2 除此之外,当出现消层时,每一层都下落的层数=该层下方消失的层数。

C(M) 合理性检测,就是碰撞检测,这是整个游戏中最复杂的部分:(
c1 检查`M移动后是否超出左,右,下的边框范围,是否和已经落下的M出现重叠,如果超出则让`M回到操作之前的位置
c2 检查`M旋转后是否超出左,右,下的边框范围,是否和已经落下的M出现重叠,如果出现重叠,执行以下步骤
1.规定从左到右的方向为正方向,如果水平方向上超出n个单位,则让`M平移-n个单位,再进行判断,如果在水平方向上仍超出,则表明水平空间不允许方块旋转,方块回复到旋转前的状态
2.规定从上到下的方向为正方向,如果垂直方向上超出n个单位,则让`M平移-n个单位,再进行判断,如果在垂直方向上仍超出,则表明垂直空间不允许方块旋转,方块回复到旋转前的状态

B(M) 物质消除
检查`M是否为活动状态,如果不活动,将`M并入M,并对S进行检查,当一行上的所有位置都有方块,或一行上的方块数量为10的时候,消去此层。

D 死亡规则
D(P),如果`M已经超出边框的顶部,则判定为死亡
D(O),检查结果是否已经达到关卡目标,达到则判定为死亡

R(S)呈现游戏
画出边框,边框内的所有方块,下一个方块,关卡名,层数,积分,播放音效,音乐,消层,旋转的动画效果等等。。

将这个改编成类似心跳对战方块的游戏

S不变x2
T可以不变,也可以设定为随时间推移不断加快,增加对战刺激程度
M不变x2
I(T)当没有正在落下的方块的时候,取出之前已经准备好的一个2方块单位的组合方块,并准备下一个组合方块

P(M)玩家操作
在原来基础上再加一样东西
攻击模式,在消层时,给对手造成打击,下落方块或增加方块。对于不同的消层组合,给与不同的打击,可以设定为
p7 = 攻击模式1,
p8 = 攻击模式2,
p9 = 攻击模式3,
……
……

O(M)玩家的对手,设定和P(M)一模一样,攻击模式有所不同

S(M)
修改规则s2 当出现消层时,每一个方块下落的层数=该块下方消失的方块数。

C(M) 不变

B(M) 物质消除
修改规则:检测相同颜色的方块,在任意的方向上相连超过3个以上则消去这些方块

D 死亡规则
不变

R(S)呈现游戏
和以前一样,不过每样多了一份


改编成射击游戏

内容,在边框的顶部和底部各出现两部坦克(2x3矩阵大小),两部坦克只能平移并发送1x1大小的子弹,玩家需要操作底部的坦克击毁顶部的坦克

S玩家空间  
可以定得细一点的二维空间(三维也行)比如(100 x 75),这样子弹有足够的发射距离
T不变
M不变
初始M0,中间可以设计一些障碍物,或者其他运动车辆
I(T)可以随机的增加一些运送道具的车辆从边框外移动到边框内

P(M)玩家操作的是坦克MPT
重新定义P的列表
p1 = 左移一格
p2 = 右移一格
p3 = 开火
p4 = 使用道具

O(M)对手操作
同P(M)

S(M)物体运动
s1 子弹根据自身属性做轨迹运动
s2 运动车辆(包括对手坦克)根据自身定义的模式做水平方向上的运动,当运动车辆移出边框后,可以在边框另一边重新出现,但坦克不行。
s3 中间的车辆发生碰撞时,做1D碰撞运算,重新设定车辆速度
s4 子弹击中物体时,不做碰撞运算,根据子弹本身的属性,决定子弹是否穿透,被击中物体是否降速等。

C(M) 合理性检测
c1 坦克不能移动出左右边界外
c2 中间车辆发生重叠时,做s3处理

B(M) 物质消除
b1 子弹飞出边界后消失
b2 子弹击中目标后,计算伤害值,伤害值,目标生命值小于伤害值则消失,如果子弹不穿透,子弹消失。
b3 子弹击中道具后,道具消失,子弹发射者的道具列表中增加该道具

D 死亡规则
生命值<=0

R(S)呈现游戏
游戏背景图,坦克,车,障碍物,飞行的子弹,关卡名,积分,播放音效,音乐,动画效果等等。。

楼主新帖

TA的作品 TA的主页
B Color Smilies

你可能喜欢

俄罗斯方块的抽象原则 
联系
我们
快速回复 返回顶部 返回列表