溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

瘋狂ios講義瘋狂連載之游戲的狀態數據模型

發布時間:2020-06-24 13:18:45 來源:網絡 閱讀:1085 作者:fkJava李剛 欄目:移動開發

對游戲玩家而言在游戲界面上看到的“元素”千差萬別、變化多端但對游戲開發者而言游戲界面上的元素在底層都是一些數據不同的數據所繪制的圖片有所不同。因此建立游戲的狀態數據模型是實現游戲邏輯的重要步驟。


13.3.1 定義數據模型


《瘋狂連連看》的游戲界面是一個n×m的“網格”每個網格上顯示一張圖片對游戲開發者來說這個網格只需要用一個二維數據來定義而每個網格上所顯示的圖片對底層的數據模型來說不同的圖片對應于不同的數值即可。圖13.6顯示了數據模型的示意。


瘋狂ios講義瘋狂連載之游戲的狀態數據模型


13.6《瘋狂連連看》的數據模型

對于圖13.6所示的數據模型只要讓數值為0的網格上不繪制圖片其他數值的網格則繪制相應的圖片就可顯示出《瘋狂連連看》的游戲界面。


本程序實際上并不是直接使用int[][]數組來保存游戲的狀態數據而是采用NSArray來保存游戲的狀態模型而NSArray的元素又是NSArray相當于創建二維數組數組元素是FKPiece。因為FKPiece對象封裝的信息更多不僅包含了該方塊左上角的X、Y坐標還包含了該FKPiece所顯示的圖片、圖片ID這個圖片ID可作為該FKPiece的數據。


13.3.2 初始化游戲狀態數據


為了初始化游戲狀態程序需要創建一個NSArray數組為此程序定義一個FKBaseBoard基類該基類的代碼如下。


程序清單codes/13/Link/Link/sources/board/FKBaseBoard.h

瘋狂ios講義瘋狂連載之游戲的狀態數據模型

程序清單codes/13/Link/Link/sources/board/FKBaseBoard.m


瘋狂ios講義瘋狂連載之游戲的狀態數據模型

上面的粗體字代碼塊用于初始化NSArray代表的二維數組為有方塊的FKPiece元素的beginX、beginY、p_w_picpath屬性賦值beginX、beginY根據該方塊在二維數組中的位置動態計算得到。


提示

上面程序中用到了xSize、ySize等常量這兩個常量用于代表該游戲在橫向和縱向上各包含多少個方塊。程序專門定義了一個Constants.h文件來記錄這些常量的值后面有些類也用到了該頭文件中的常量請讀者參考本書配套光盤中的Constants.h文件。

程序中的①號代碼調用了createPieces:方法來創建一個NSArray集合該方法將會交給其子類去實現這里是典型的“模板模式”的應用。FKBaseBoard基類完全可以根據FKPiece對象在二維數組中的位置動態地計算它的beginX、beginYFKBaseBoard不確定NSArray代表二維數組的哪些元素是有方塊的。

由于《瘋狂連連看》游戲的初始狀態可能有很多種比如橫向分布的方塊、豎向分布的方塊、矩陣排列的方塊、隨機分布的方塊等該程序為了考慮以后的擴展性此處只采用了模板模式FKBaseBoard基類負責完成通用的代碼對于暫時無法確定的需要子類實現的部分可定義成createPieces:方法。

提示  

由于Objective-C沒有提供抽象類和抽象方法的概念因此此處將createPieces:方法定義成返回nil的空方法。


上面的程序中還用到了一個ImageUtil工具類它的作用是自動搜尋項目包的圖片并根據需要隨機讀取該目錄下的圖片。后面會詳細介紹該工具類的用法。


下面為該FKBaseBoard實現三個子類。

1矩陣排列的方塊


矩陣排列的方塊會填滿二維數組的每個數組元素只是把四周留空即可該子類的代碼實現如下接口部分幾乎沒有代碼因此此處不再給出。

程序清單/Users/yeeku/publish/codes/13/Link/Link/sources/board/FKFullBoard.m

 

瘋狂ios講義瘋狂連載之游戲的狀態數據模型

該子類初始化的游戲界面如圖13.7所示。

瘋狂ios講義瘋狂連載之游戲的狀態數據模型

13.7矩陣排列的方塊

2豎向排列的方塊

豎向排列的方塊以垂直的空列分隔開該子類的代碼實現如下接口部分幾乎沒有代碼因此此處不再給出。

程序清單codes/13/Link/Link/sources/board/FKVerticalBoard.m

瘋狂ios講義瘋狂連載之游戲的狀態數據模型

程序中的粗體字代碼控制了只設置i % 2 == 0的列也就是只設置索引為偶數的列該子類初始化的游戲界面如圖13.8所示。

瘋狂ios講義瘋狂連載之游戲的狀態數據模型

13.8豎向排列的方塊

3橫向排列的方塊

橫向排列的方塊以水平的空行分隔開該子類的代碼如下。

程序清單codes/13/Link/Link/sources/board/FKHorizontalBoard.m

 

瘋狂ios講義瘋狂連載之游戲的狀態數據模型

程序中的粗體字代碼控制了只設置j % 2 == 0的行也就是只設置索引為偶數的行該子類初始化的游戲界面如圖13.9所示。

瘋狂ios講義瘋狂連載之游戲的狀態數據模型


13.9 橫向排列的方塊


——————本文節選自《瘋狂ios講義上》

瘋狂ios講義瘋狂連載之游戲的狀態數據模型


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女