疯狂ios讲义疯狂连载之实现游戏逻辑(2)
13.6.5 定義獲取通道的工具方法
這里所謂的通道指的是一個方塊上、下、左、右4個方向上的空白方塊圖13.10顯示了一個方塊四周的通道。
圖13.10 方塊四周的通道
下面是獲取某個坐標點四周通道的4個方法。
程序清單codes/13/Link/Link/sources/board/FKGameService.m
13.6.6 沒有轉折點的橫向連接
如果兩個FKPiece在FKPiece二維數組中的第二維索引值相等那么這兩個FKPiece就位于同一行如前面的linkWithBeginPiece:endPiece:方法中①號代碼所示此時程序需要調用isXBlockFromP1: toP2:pieceWidth:判斷p1、p2之間是否有障礙。下面是該方法的代碼。
程序清單codes/13/Link/Link/sources/board/FKGameService.m
從上面的判斷可以看出如果兩個方塊位于同一行且它們之間沒有障礙那么這兩個方塊就可以消除兩個方塊的連接信息就是它們的中心。
13.6.7 沒有轉折點的縱向連接
與之相似的是如果兩個FKPiece在FKPiece二維數組中的第一維索引值相等那么這兩個FKPiece就位于同一列如前面的linkWithBeginPiece:endPiece:方法中②號代碼所示此時程序需要調用isYBlockFromP1: toP2:pieceHeight:方法判斷p1、p2之間是否有障礙。下面是該方法的代碼。
程序清單codes/13/Link/Link/sources/board/FKGameService.m
?13.6.8 一個轉折點的連接
對于兩個方塊的連接線上只有一個轉折點的情況程序需要先找到這個轉折點。為了找到這個轉折點程序定義遍歷兩個通道并獲取它們交點的一個方法。
程序清單codes/13/Link/Link/sources/board/FKGameService.m
為了找出兩個方塊連接線上的連接點程序同樣需要分析p1、p2兩個點的位置分布。根據前面的分析我們知道p2要么位于p1的右上角要么位于p1的右下角。
注意
對于p2位于p1的左上角和左下角的情況只要把p1、p2交換即可。
對于p2位于p1的右上角的情形如圖13.11所示。
從圖13.11可以看出當p2位于p1的右上角時應該計算p1的左通道與p2的向下通道是否有交點p1的向上通道與p2的向左通道是否有交點。
對于p2位于p1的右下角的情形如圖13.12所示。
從圖13.12可以看出當p2位于p1的右上角時應該計算p1的向右通道與p2的向上通道是否有交點p1的向下通道與p2的向左通道是否有交點。
圖13.11p2位于p1的右上角
圖13.12p2位于p1的右下角
考慮到p1與p2具有上面兩種分布情形程序提供了如下方法進行處理。
程序清單codes/13/Link/Link/sources/board/FKGameService.m
?上面的兩行粗體字代碼分別處理了p2位于p1的右上和右下的兩種情形。
程序中用到了isLeftUp、isLeftDown、isRightUp、isRightDown方法來判斷p2位于p1的左上、左下、右上、右下4種情形這4個方法的實現比較簡單只要對它們的X、Y坐標進行簡單判斷即可代碼如下。
程序清單codes/13/Link/Link/sources/board/FKGameService.m
——————本文節選自《瘋狂ios講義上》
總結
以上是生活随笔為你收集整理的疯狂ios讲义疯狂连载之实现游戏逻辑(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信联系人一键导出的方法在这里
- 下一篇: python snap7 plc_Pyt