返回列表 回复 发帖
本帖最后由 sokoban 于 2011-10-18 02:08 编辑

已经躺在床上了,想起hanano puzzle的关卡格式,便爬起来研究了一下。

关卡存放在data文件夹,从01到50,其实要玩后面的关卡,只需把文件重命名就行了。如把47改为01,把01改为47。

每个关卡的文件大小都是564个字节(Bytes)。关卡的长宽都是14x10,每个格子用4个字节表示,所以一共是14x10x4=560个字节。还有4个字节放在文件开头。我想了好久,基本可以认定是对关卡难度的估计。这个值的大小从3到12不等,数值越大关卡越难。如第1关=3,第20关=9,第21关=3,第47关=11,等等。当然对关卡难度的估计因人而异,作者本身的估计也不一定十分准确。我一度认为这个值可能是定义墙体颜色或者背景图案,因为我们注意到墙体颜色和动态背景是在变的,经过观察和试验被否定了。这头4个字节随意改变好像都不会影响游戏。

我有时间再把所有关卡元素对应的数字整理出来。

如:墙体是 0x0A  =0x0000000A (四个字节)
空位是 0x00
黄色向上开花的石头是 0x79
蓝色向上开花的石头是 0x6F
等等
若有大于1x1的石头,如1x2, 1x3 之类的,只标记最左上角的格子,其余的格子对应0x00.
总结完了,如下:

体是 0x0A  =0x0000000A (四个字节)
空位是 0x00

红色的花  0xC8
蓝色的花  0xD2
黄色的花  0xDC

红色向左开花的石头  0x64
红色向上开花的石头  0x65
红色向右开花的石头  0x66
红色向下开花的石头  0x67

蓝色向左开花的石头 0x6E
蓝色向上开花的石头 0x6F
蓝色向右开花的石头 0x70
蓝色向下开花的石头 0x71

黄色向左开花的石头 0x78
黄色向上开花的石头 0x79
黄色向右开花的石头 0x7A
黄色向下开花的石头 0x7B

1x1          0x32
2x2          0x36
3x2          0x39
3x3          0x3B

2x1(横)      0x3E
3x1(横)      0x3F
4x1(横)      0x40
5x1(横)      0x41
6x1
7x1(横)      0x43
8x1(横)      0x44

1x2(竖)      0x48
1x3(竖)      0x49
1x4(竖)      0x4A
是不是搞清楚了以后可以编关?
zhouxh 发表于 2011-10-18 12:20
是的,关卡编辑器比较容易写,一天之内应该就能弄好,我有空时可能会写一个关卡编辑器。
但是要玩自己编的关卡,就只能用覆盖原来关卡的方法。
43关能否给点提示,感觉也很难啊。
(1)  如果有个关卡文件名为51 (或更大), 它会认识吗?
(2)  那些关卡元素对应的数字, 没有看到的是否有其它意义?
         如:0x33, 0x34, 0x35, 0x45, 0x46...类推。
anian 发表于 2011-10-18 12:13
(1)好像不能识别51或更大的关卡

(2)0x33居然是横的2x1,0x34是竖的1x2,还以为程序会崩溃呢。。。
横三个的要掉在右边
zhouxh 发表于 2011-10-18 17:49
43关终于过了,过了之后觉得不怎么难,就是一直没有想到。
这个游戏确实不错,第八关卡了许久
puzzle 发表于 2011-10-22 12:37
我尝试分析一下这个游戏为什么好,呵呵。

首先,规则简单,有趣。在如此简单的规则下,关卡设计得十分巧妙,有难度。作者为关卡设计一定是花了很多时间。

其次,程序编写的很完善。特别是鼠标操作的方式,程序能直接识别鼠标指向的地方能进行何种操作。这个判别我觉得还是要费点劲才能写得好,因为情况很多(石头大小不同,水平高度不同,等等)。如果程序作者偷点懒的话,他完全可以采取另外一种更容易实现(从编程角度)的人机互动模式:就是游戏者先用鼠标点中一个石块,再用键盘来左右移动选择的石块。如果是先告诉我游戏规则,让我去写一个程序,那么结果就很有可能是后面这种鼠标加键盘的混合操作模式。所以说我觉得作者在人机交互的设计上还是下了很大的功夫。

其他的还有很多细节,都体现了作者的用心。如不断变化的关卡选择界面,把关卡的总数设置成了一个悬念。

综上所述,这个游戏在各方面都堪称完美。
第十关实在是过不去了,哪位能给点提示
puzzle 发表于 2011-10-23 18:37
两个蓝色石头要(基本)同时开花。
本帖最后由 sokoban 于 2011-10-23 20:29 编辑

同时开花的方法不对,左边上面还有两个1x2和2x1的石头没有用到。

红色石头不应该掉下去。
红色开花把蓝色推过去的
返回列表