簡單述三消遊戲邏輯

2021-10-19 15:18:45 字數 2175 閱讀 8305

講述三消遊戲邏輯:

專案簡介:支援六種元素,以及障礙元素,行,列,彩虹特殊道具

核心就是填充演算法和乙個匹配演算法:

填充:本文採用分步填充(即一次只向下移動乙個單位)

public

bool

fill()

else

//斜向填充

else if (!sweetabove.canmove() && sweetabove.type != sweetstype.empty)

}if (!canfill)}}

}}*/}}

}}//最上排的特殊情況,初始化最上面的一排//不放在移動函式後會導致最上一排為空

for(

int x =

0; x <

9; x++)}

return fillednotfinished;

}

匹配:

本文主要利用三個列表(即行,列,最終)來完成

```csharp

public list

matchsweets

(gamesweet sweet,

int newx,

int newy)

else

if(x<

0||x>=xcolumn)

//超出棋盤則停止

if(sweets[x,newy]

.cancolor()

&&sweets[x,newy]

.coloredcomponent.color==color)

else}}

if(matchrowsweets.count>=3)

}//l t型匹配

//檢查一下當前行遍歷列表中的元素數量是否大於3if(

false

)>=3)

else

if(y<

0||y>=yrow)

if(sweets[matchrowsweets[i]

.x,y]

.cancolor()

&&sweets[matchrowsweets[i]

.x,y]

.coloredcomponent.color==color)

else}}

if(matchlinesweets.count<2)

else

break;}

}}if(finishedmatchingsweets.count>=3)

matchrowsweets.

clear()

; matchlinesweets.

clear()

; matchlinesweets.

add(sweet)

;//列匹配

//i=0代表往上,i=1代表往下

for(

int i =

0; i <=

1; i++

)else

if(y <

0|| y >= yrow)

if(sweets[newx, y]

.cancolor()

&& sweets[newx, y]

.coloredcomponent.color == color)

else}}

if(matchlinesweets.count >=3)

}//l t型匹配

//檢查一下當前行遍歷列表中的元素數量是否大於3if(

false

) >= 3)

else

if(x <

0|| x >= xcolumn)

if(sweets[x, matchlinesweets[i]

.y].

cancolor()

&& sweets[x, matchlinesweets[i]

.y].coloredcomponent.color == color)

else}}

if(matchrowsweets.count <2)

else

break;}

}}if(finishedmatchingsweets.count >=3)

}return

null

;}

具體可參考:

三消遊戲(三)

後面一些更改就是實現下落下標更改的方法。這個方法要在一開始檢測三色的時候呼叫 with3arr this.filterdelsame with3arr,return with3arrupdatecellfalldownnum function cell 還要刪除陣列裡的相同元素 filterdels...

三消遊戲(二)

做好了三消消除掉落之後,並且消除之後儲存在陣列之中 rrayindexarr this.filterdelsame specilarr,arrayindexarr if cell cell.settospecial 清除同顏色的塊兒 並且二維陣列中的位置置為null for var index in...

消除類遊戲之 三消遊戲

1.瓦片地圖 2.array 3.遊戲架構 1選中 2 交換位置 3消除 所以肯定會用到 virtual bool cctouchbegan cctouch touch,ccevent event virtual void cctouchmoved cctouch touch,ccevent eve...