(NO.00005)iOS實現炸彈人遊戲(三):從主情境類談起

來源:互聯網
上載者:User

(NO.00005)iOS實現炸彈人遊戲(三):從主情境類談起

 

我又粗粗看了下整個項目的代碼,比較多:

不少類都與其他類有著千絲萬縷的聯絡,所以在後面交代某個類的時候可能會遇到一些其他類中的代碼,這個大家先看名會意吧.如果實在不明白的,都是我敘述的原因,和大家的理解力沒有任何關係 ;).大家可以隨時在博文後面直接跟帖發訊息給我,如果時間允許,每條我都會回複.

從MainScene類開始

MainScene類是整個工程裡代碼最多的類之一.共有六十多個方法:

vc+88rWlLMv50tS9q8v509DE2sjdtry3xbW9TWFpblNjZW5lwODW0CzDu9PQyrnTw8bky/u1xLOhvrDA4MHLLNTasci9z7i01NO1xNPOz7fW0Lu5tcPU2bfWs8m4/LbgtcRTY2VuZSyxyMjnsb7DqNX91Nq5xLW3tcRSUEfTzs+3U291bE9mUGFuZGE6PC9wPg0KPHA+PGltZyBhbHQ9"這裡寫圖片描述" src="http://www.bkjia.com/uploads/allimg/151225/04013560J-2.gif" title="\" />

遊戲中包括了大量的子情境和嵌入層,不過這個是題外話了.

主情境裡包括了所有的使用者互動部分和地圖顯示部分.無論如何如果不給玩家和敵人一個空間,任何遊戲也無從開始,所以我們先談談地圖.

遊戲地圖

我們希望自動產生如下的地圖:

灰色的牆的位置是固定不變的,紅色的磚塊位置是隨機擺放的.由於磚塊下面要藏有道具和出口,所以我們很自然的就必須把整個地圖劃分為不同的層.

以前玩過Tiled的都知道,Tiled是一個很棒的地圖編輯軟體,儘管目前的版本中有一些不盡如人意的地方,比如同一層中只能在一張地圖集中選擇瓦塊.但總的來說Tiled功能還是很強大的,如果以後有機會我會單開一系列關於Tiled製作地圖的博文.

Tiled還可以建立特殊的層,稱為對象層.對象層不是用來擺放瓦塊的,而是用來放置幾何圍界對象的,在RPG類型的遊戲中有著重要的用途,但是在炸彈人App中沒有用到對象層,所以大家暫時不用管它啦.

首先我們製作一張空白的地圖:

將地圖tmx檔案和相關的地圖集檔案全部拷貝到炸彈人工程資來源目錄下的tileMap檔案夾中.

在Xcode中開啟MainScene.m檔案,初始化方法代碼如下:

-(void)didLoadFromCCB{    _viewSize = [CCDirector sharedDirector].viewSize;    //在螢幕上顯示遊戲幀數    [CCDirector sharedDirector].displayStats = YES;    //初始化話手勢辨識器    [self initGestureRecognizer];    //其他初始化代碼...    //載入空白地圖到遊戲中    _tileMap = [CCTiledMap tiledMapWithFile:@"EmptyMap.tmx"];    _mapHelper = [MapHelper sharedInstance];    _mapHelper.tileMap = _tileMap;    [self addChild:_tileMap];    //玩家在情境中出現的座標    CGPoint spawnTileCoord = ccp(0,0);    CGPoint spawnPos = [self positionForTileCoord:spawnTileCoord];    [self setViewpointCenter:spawnPos];    //取得地圖中各個層的引用    _bgLayer = [_tileMap layerNamed:@"Background"];    _objectLayer = [_tileMap layerNamed:@"Objects"];    _underObjectsLayer = [_tileMap layerNamed:@"UnderObjectsLayer"];    _propertiesLayer = [_tileMap layerNamed:@"PropertiesLayer"];    _batchNode = [CCNode node];    [_tileMap addChild:_batchNode];    //省略其他初始化代碼...    //[self initGameData];    //用遊戲資料初始化當前關卡    [self initGameDataFromGD];    //啟用遊戲測試    //[self test];}

簡單說一下,在MainScene類的初始化方法中,首先開啟顯示調試,初始化手勢辨識器,然後是執行個體數組的初始化和其他初始化代碼.接下來到了重要的部分:地圖的初始化,首先將空白地圖載入進來,並建立MapHelper類執行個體,裡面有很多方便的方法可供調用;然後建立其地圖中各個層的引用;之後是建立遊戲主角炸彈人,然後調用initGameDataFromGD方法,其中包含了地圖隨機產生的程式碼,我們後面會講到.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.