(NO.00005)iOS實現炸彈人遊戲(五):遊戲資料初始化介紹(二)

來源:互聯網
上載者:User

(NO.00005)iOS實現炸彈人遊戲(五):遊戲資料初始化介紹(二)

 

我們現在來依次看一下上篇中提到的各個方法,首先介紹的是updateStateLabel方法:

#pragma mark MainScene遊戲相關輔助方法//更新主角狀態標籤,格式為:神速 無敵 爆裂 穿牆 穿彈 遙控-(void)updateStateLabel{    NSString *state = [NSString stringWithFormat:@"%@%@%@%@%@%@",                       _isPlayerSpeedUp ? @"神速":@"    ",                       _player.isInvincible ? @"無敵":@"    ",                       !_isFearBomb ? @"爆裂":@"    ",                       _player.canAcrossBrick ? @"穿牆":@"    ",                       _player.canAcrossBomb ? @"穿彈":@"    ",                       _isManualExplode ? @"遙控":@"    "];    [_hudLayer updateStateLabel:state];}

代碼很好理解,就是根據當前主角的狀態建立狀態字串然後顯示在標籤中,當然更可取的方法是使用表徵圖來顯示,這個可以留作以後擴充.

接下來看一下initNoWallTiles方法,該方法的作用是遍曆所有非牆的瓦塊座標,為後面的方法調用做準備,起到一個快取資料換速度的目的:

//初始化不是牆的所有瓦塊座標,還要排除(0,0),(0,1),(1,0)三個瓦塊.-(void)initNoWallTiles{    CGPoint badTilePos1 = ccp(0, 0);    CGPoint badTilePos2 = ccp(0, 1);    CGPoint badTilePos3 = ccp(1, 0);    for (int x = 0; x < _tileMap.mapSize.width; x++) {        for (int y = 0; y < _tileMap.mapSize.height; y++) {            CGPoint tilePos = ccp(x, y);            if (CGPointEqualToPoint(tilePos, badTilePos1) ||                CGPointEqualToPoint(tilePos, badTilePos2) ||                CGPointEqualToPoint(tilePos, badTilePos3)) {                continue;            }else if (![self isWallAtTileCoord:tilePos]) {                [_notWallTiles addObject:[NSValue valueWithCGPoint:tilePos]];            }        }    }    NSAssert(_notWallTiles.count == 249, @"_notWallTiles must equ 249");}

代碼中依次遍曆了所有瓦塊,將非牆瓦塊的座標加入到_notWallTiles數組中,這樣後面的隨機產生地圖方法裡我們可以很方便的使用這些資料了.注意其中剔除了3個座標,分別為:

(0,0) , (0,1) 和 (1,0)

因為遊戲主角炸彈人需要在(0,0)處產生,所以(0,1)和(1,0)自然不能放置磚塊,否則主角自身就會”死路一條”,最後用一個斷言來檢查非牆瓦塊的個數是否為249,這個是事先手動計算好的,總共為30x10=300個瓦塊,減去6*8=48個不可摧毀牆體,再減去3個上述座標,最後剩餘249個瓦塊可以操作.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.