作者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