正文

游戲案例:GemDrops(18)

Windows移動(dòng)游戲開發(fā)實(shí)戰(zhàn) 作者:(美)Adam Dawes


 

程序清單8-21  檢測(cè)游戲區(qū)域看游戲是否應(yīng)該結(jié)束

/// <summary>

/// Check to see whether the player gem board position is occupied by

/// a gem already on the board. If this is the case when the player

/// gems are first added, the board is full and the game is over.

/// </summary>

/// <remarks>If the game is found to be over, the GameOver property

/// will be set to true.</remarks>

private void CheckGameOver()

{

// Are the positions to which the player gems have been added already 

// occupied?

if (_gameBoard[_playerGems[1].BoardXPos, _playerGems[1].BoardYPos] != null)

{

// They are, so the game is finished...

// Stop the player gems from moving

_playerGems[0].FallSpeed = 0;

_playerGems[1].FallSpeed = 0;

// Initialize the game over sequence

GameOver = true;

}

}

假設(shè)游戲還在運(yùn)行,我們就生成兩個(gè)新的寶石,顏色隨機(jī)。設(shè)置完顏色后,還需要對(duì)下一對(duì)寶石中每個(gè)寶石的HasMoved屬性進(jìn)行設(shè)置,這樣游戲引擎才知道要對(duì)它們進(jìn)行重繪。

將_piecesDropped變量的值增加后,對(duì)新的玩家控制的寶石所要做的初始化工作就完成了。

CheckGameOver函數(shù)只需要查看_playerGems[1]所在的位置是否被填滿即可。這個(gè)特殊的寶石總是位于另一個(gè)寶石之下。所以這就是我們需要檢查的空間,以確保兩個(gè)位置都為空。

如果代碼發(fā)現(xiàn)該位置被占用了,就開始執(zhí)行結(jié)束游戲的代碼,首先要將兩個(gè)玩家控制的寶石的FallSpeed設(shè)置為0,使它們不再繼續(xù)下落。然后再將GameOver屬性設(shè)置為true。設(shè)置該屬性將會(huì)使游戲的其他功能全部停止,并向用戶顯示一條消息;稍后我們將更詳細(xì)地討論這個(gè)過(guò)程。


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)