作者jijuan (鸡卷)
看板GameDesign
标题[请益] 类似动物管理员的游戏(二)
时间Thu Apr 23 15:32:32 2009
上次关於检查是有任三个以上方块相连的问题,
大致上已经ok了。
目前小弟又遇到其它的问题,
想再次请教大家。
假设目前的size为5*5,
我的做法是一个5*5阵列为载入图片的物件,
另一个5*5的阵列储存图片的对应值。
图片的key值
○ = 1
◇ = 2
□ = 3
△ = 4
☆ = 5
P1:
○◇□△△ 1 2 3 4 4
△□☆☆○ 4 3 5 5 1
○△◇□☆ 1 4 2 3 5
○△△○△ 1 4 4 1 4
☆○○☆☆ 5 1 1 5 5
交换{5,0}跟{5,1}两个方块後
○◇□△△ 1 2 3 4 4
△□☆☆○ 4 3 5 5 1
○△◇□☆ 1 4 2 3 5
○△△○△ 1 4 4 1 4
○☆○☆☆ 1 5 1 5 5
上面的方块要落下,并补上新的方块
○◇□△△ 1 2 3 4 4
△□☆☆○ 4 3 5 5 1
↓△◇□☆ X 4 2 3 5
↓△△○△ X 4 4 1 4
↓☆○☆☆ X 5 1 5 5
完成後
○◇□△△ 1 2 3 4 4
○□☆☆○ 1 3 5 5 1
☆△◇□☆ 5 4 2 3 5
○△△○△ 1 4 4 1 4
△☆○☆☆ 4 5 1 5 5
因为要做出方块落下的效果
所以目前的做法是要重设方块的座标
不过这样会造成阵列索引的错乱
如上例第一行的情况来讲
初始 完成後
[0,0] [2,0]
[1,0] [3,0]
[2,0] [4,0]
[3,0] [0,0]
[4,0] [1,0]
如此当每次使用for回圈检查时
便会造成错误
[2,0][0,1][0,2][0,3][0,4]
[3,0][1,1][1,2][1,3][1,4]
[4,0][2,1][2,2][2,3][2,4]
[0,0][3,1][3,2][3,3][3,4]
[1,0][4,1][4,2][4,3][4,4]
如要检查[2,0][0,1][0,2]三者的是否可以消去时
当i=0, j=0时实际上检查的并不是[2,0]
若各行的方块被消去多去时
此情况便会越来越复杂
我有想过用转换的方法
记住每一行下降了几阶(0~7)
初始level = 0
若此次下降了三阶则level = 3
则当i=0, j=0时就能得知其真实的位置是[2,0]这个物件
不过後来考虑到并非都是最下面的方块消去以及左右两个方块可以互换的情况下
此方法也会变得相当复杂
不知道各位前辈对处理方块消去时
方块落下以及其值的处理
是否能提共一些建议呢
--
海纳百川,有容乃大。
壁立千仞,无欲则刚。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.249.2.10
1F:推 NDark:也许你用阵列的移动就不是个好方法 04/23 17:47
2F:→ NDark:阵列的变化应该只有内容值的变化 04/23 17:48
3F:→ NDark:你只有五种图案,为何要宣告5x5在入图片的物件这点要想一下 04/23 17:48
4F:→ NDark: 载 04/23 17:48
5F:→ jijuan:阵列要移动是因为要让方块做出往下落的效果,若不改变y值 04/23 18:30
6F:→ jijuan:我目前想不到其它方法可以做出落下的效果,如果可以,我也 04/23 18:30
7F:→ jijuan:希望保持阵列的一致性,毕竟这样在用for loop处理起来简单 04/23 18:31
8F:→ jijuan:多了 04/23 18:31
9F:推 NDark:做两份方块就解决了.一份负责落下->落下後就还原. 04/23 21:25
10F:→ NDark:另一份负责显示不动的.或落完的 04/23 21:25
11F:→ softwind:侦测到要剥落下动画 lock键盘 拨完 再release 04/24 22:59
12F:→ softwind: 拨 04/24 23:00
13F:→ softwind:不好意思 问一下 消去的规则是? 直线3个以上相连吗? 04/25 01:38
14F:→ softwind:那 第3个後的第4个方块 有90度转弯 可以一起消掉吗? 04/25 01:38
15F:推 cowbaying:请问是什麽语言开发? 04/25 12:03
16F:→ jijuan:规则是「同一条直线3个相连以上方块」可以消除 04/27 10:19
17F:→ jijuan:语言是C/C++ 04/27 10:19
18F:推 cowbaying:个人建议用物件去搜索 这样会简单很多 由上到下 04/28 17:45