對游戲玩家而言在游戲界面上看到的“元素”千差萬別、變化多端但對游戲開發(fā)者而言游戲界面上的元素在底層都是一些數(shù)據(jù)不同的數(shù)據(jù)所繪制的圖片有所不同。因此建立游戲的狀態(tài)數(shù)據(jù)模型是實(shí)現(xiàn)游戲邏輯的重要步驟。
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),宕昌企業(yè)網(wǎng)站建設(shè),宕昌品牌網(wǎng)站建設(shè),網(wǎng)站定制,宕昌網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,宕昌網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。13.3.1 定義數(shù)據(jù)模型
《瘋狂連連看》的游戲界面是一個n×m的“網(wǎng)格”每個網(wǎng)格上顯示一張圖片對游戲開發(fā)者來說這個網(wǎng)格只需要用一個二維數(shù)據(jù)來定義而每個網(wǎng)格上所顯示的圖片對底層的數(shù)據(jù)模型來說不同的圖片對應(yīng)于不同的數(shù)值即可。圖13.6顯示了數(shù)據(jù)模型的示意。
圖13.6《瘋狂連連看》的數(shù)據(jù)模型
對于圖13.6所示的數(shù)據(jù)模型只要讓數(shù)值為0的網(wǎng)格上不繪制圖片其他數(shù)值的網(wǎng)格則繪制相應(yīng)的圖片就可顯示出《瘋狂連連看》的游戲界面。
本程序?qū)嶋H上并不是直接使用int[][]數(shù)組來保存游戲的狀態(tài)數(shù)據(jù)而是采用NSArray來保存游戲的狀態(tài)模型而NSArray的元素又是NSArray相當(dāng)于創(chuàng)建二維數(shù)組數(shù)組元素是FKPiece。因?yàn)镕KPiece對象封裝的信息更多不僅包含了該方塊左上角的X、Y坐標(biāo)還包含了該FKPiece所顯示的圖片、圖片ID這個圖片ID可作為該FKPiece的數(shù)據(jù)。
13.3.2 初始化游戲狀態(tài)數(shù)據(jù)
為了初始化游戲狀態(tài)程序需要創(chuàng)建一個NSArray數(shù)組為此程序定義一個FKBaseBoard基類該基類的代碼如下。
程序清單codes/13/Link/Link/sources/board/FKBaseBoard.h
程序清單codes/13/Link/Link/sources/board/FKBaseBoard.m
上面的粗體字代碼塊用于初始化NSArray代表的二維數(shù)組為有方塊的FKPiece元素的beginX、beginY、p_w_picpath屬性賦值beginX、beginY根據(jù)該方塊在二維數(shù)組中的位置動態(tài)計算得到。
提示
上面程序中用到了xSize、ySize等常量這兩個常量用于代表該游戲在橫向和縱向上各包含多少個方塊。程序?qū)iT定義了一個Constants.h文件來記錄這些常量的值后面有些類也用到了該頭文件中的常量請讀者參考本書配套光盤中的Constants.h文件。程序中的①號代碼調(diào)用了createPieces:方法來創(chuàng)建一個NSArray集合該方法將會交給其子類去實(shí)現(xiàn)這里是典型的“模板模式”的應(yīng)用。FKBaseBoard基類完全可以根據(jù)FKPiece對象在二維數(shù)組中的位置動態(tài)地計算它的beginX、beginY但FKBaseBoard不確定NSArray代表二維數(shù)組的哪些元素是有方塊的。
由于《瘋狂連連看》游戲的初始狀態(tài)可能有很多種比如橫向分布的方塊、豎向分布的方塊、矩陣排列的方塊、隨機(jī)分布的方塊等該程序?yàn)榱丝紤]以后的擴(kuò)展性此處只采用了模板模式FKBaseBoard基類負(fù)責(zé)完成通用的代碼對于暫時無法確定的需要子類實(shí)現(xiàn)的部分可定義成createPieces:方法。
提示由于Objective-C沒有提供抽象類和抽象方法的概念因此此處將createPieces:方法定義成返回nil的空方法。
上面的程序中還用到了一個ImageUtil工具類它的作用是自動搜尋項目包的圖片并根據(jù)需要隨機(jī)讀取該目錄下的圖片。后面會詳細(xì)介紹該工具類的用法。
下面為該FKBaseBoard實(shí)現(xiàn)三個子類。
矩陣排列的方塊會填滿二維數(shù)組的每個數(shù)組元素只是把四周留空即可該子類的代碼實(shí)現(xiàn)如下接口部分幾乎沒有代碼因此此處不再給出。
程序清單/Users/yeeku/publish/codes/13/Link/Link/sources/board/FKFullBoard.m
該子類初始化的游戲界面如圖13.7所示。
圖13.7矩陣排列的方塊
豎向排列的方塊以垂直的空列分隔開該子類的代碼實(shí)現(xiàn)如下接口部分幾乎沒有代碼因此此處不再給出。
程序清單codes/13/Link/Link/sources/board/FKVerticalBoard.m
程序中的粗體字代碼控制了只設(shè)置i % 2 == 0的列也就是只設(shè)置索引為偶數(shù)的列該子類初始化的游戲界面如圖13.8所示。
圖13.8豎向排列的方塊
橫向排列的方塊以水平的空行分隔開該子類的代碼如下。
程序清單codes/13/Link/Link/sources/board/FKHorizontalBoard.m
程序中的粗體字代碼控制了只設(shè)置j % 2 == 0的行也就是只設(shè)置索引為偶數(shù)的行該子類初始化的游戲界面如圖13.9所示。
圖13.9 橫向排列的方塊
——————本文節(jié)選自《瘋狂ios講義上》
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站名稱:瘋狂ios講義瘋狂連載之游戲的狀態(tài)數(shù)據(jù)模型-創(chuàng)新互聯(lián)
本文地址:http://www.rwnh.cn/article16/cegedg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、ChatGPT、外貿(mào)建站、建站公司、自適應(yīng)網(wǎng)站、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容