正文

游戲案例:GemDrops(14)

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


 

2. 對游戲類進(jìn)行完善

現(xiàn)在寶石類中已經(jīng)包含了顯示玩家控制的寶石所需要的函數(shù)。我們接下來看看如何對CGemDropsGame類進(jìn)行處理。

為了創(chuàng)建用于玩家控制的寶石,需要能夠隨機(jī)生成寶石顏色。在概要設(shè)計(jì)時(shí)已經(jīng)說明過,在前20對落下的寶石中將只采用4種顏色,超過20對、在40對之前寶石的顏色增加為5種,最后寶石的顏色變?yōu)?種。此外,在100對以后,我們將用一個(gè)比較小的概率來生成彩虹寶石。

為了能夠簡單地隨機(jī)生成寶石顏色,我們將這個(gè)操作包裝到一個(gè)函數(shù)中,即Generate-

RandomGemColor函數(shù),如程序清單8-17所示。

 為新寶石隨機(jī)生成顏色

/// <summary>

/// Returns a random gem color.

/// </summary>

/// <remarks>The range of colors returned will slowly increase as the

/// game progresses.</remarks>

private int GenerateRandomGemColor()

{

// We'll generate a gem at random based upon how many pieces the player 

// has dropped.

// For the first few turns, we'll generate just the first four gem colors

if (_piecesDropped < 20) return Random.Next(0, 4);

// For the next few turns, we'll generate the first five gem colors

if (_piecesDropped < 40) return Random.Next(0, 5);

// After 100 pieces, we'll have a 1-in-200 chance of generating a "rainbow" 

// gem

if (_piecesDropped >= 100 && Random.Next(200) == 0) return GEMCOLOR_RAINBOW;

// Otherwise return any of the available gem colors

return Random.Next(0, 6);

}

這段代碼利用_piecesDropped變量來確定返回值中寶石顏色的范圍,從而得到是否應(yīng)該偶爾生成一個(gè)彩虹寶石。

為了對寶石的運(yùn)動(dòng)進(jìn)行跟蹤,我們要聲明一個(gè)二元數(shù)組來保存它們的詳細(xì)信息。該數(shù)組為類級別的變量,名為_playerGems。同時(shí),我們還要?jiǎng)?chuàng)建一個(gè)二元數(shù)組來存儲(chǔ)下一對將要出現(xiàn)的寶石的詳細(xì)信息。該數(shù)組名為_playerNextGems。這兩個(gè)數(shù)組的聲明如程序清單。


上一章目錄下一章

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