正文

游戲案例:GemDrops(4)

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


 

8.2.2  創(chuàng)建游戲窗體

將Form1重命名為MainForm,并對(duì)其屬性進(jìn)行更新,將Text屬性設(shè)置為GemDrops,將BackColor屬性設(shè)置為Black。

還要在窗體的頂端添加兩個(gè)標(biāo)簽,分別命名為lblScore和lblNextPiece。它們各自的Text屬性分別為“Score:0”及“Next piece:”。lblScore標(biāo)簽??吭诖绑w的頂部,所以它有足夠的空間來(lái)顯示玩家得分。lblNextPiece標(biāo)簽被固定在右上角,這樣當(dāng)屏幕的尺寸發(fā)生改變時(shí)(例如手機(jī)的方向發(fā)生改變),它還會(huì)保持在屏幕的右上角。將lblNextPiece標(biāo)簽的TextAlign屬性設(shè)置為TopRight。

對(duì)MainMenu控件進(jìn)行更新,添加一個(gè)Pause項(xiàng)和一個(gè)彈出菜單Menu項(xiàng)。彈出菜單中包含兩個(gè)菜單項(xiàng)NewGame和ExitGame,用于開(kāi)始游戲和退出游戲。最初的窗體設(shè)計(jì)。

在窗體的代碼中,聲明一個(gè)CGemDropsGame對(duì)象作為類級(jí)別的變量,名為_(kāi)game。在窗體的構(gòu)造函數(shù)中來(lái)對(duì)它進(jìn)行實(shí)例化和初始化,如程序清單8-1所示。

程序清單8-1  對(duì)GemDrops游戲?qū)ο筮M(jìn)行實(shí)例化和初始化

// Our instance of the GemDrops game

CGemDropsGame _game;

/// <summary>

/// Form constructor

/// </summary>

public MainForm()

{

InitializeComponent();

// Instantiate our game and set its game form to be this form

_game = new CGemDropsGame(this);

_game.Reset();

}

在該窗體中再添加一個(gè)名為SetScore的函數(shù)。它只是簡(jiǎn)單地以一個(gè)int變量作為參數(shù),并將該值賦給lblScore標(biāo)簽的Text屬性。該函數(shù)用于顯示玩家每次得分后的分值

程序清單8-2  顯示玩家得分的函數(shù)

/// <summary>

/// Display the score on the screen

/// </summary>

/// <param name="score">The player's new score</param>

internal void SetScore(int score)

{

lblScore.Text = "Score: " + score.ToString();

}

我們接下來(lái)完成窗體的OnPaintBackground函數(shù)和它的Load、Paint以及Closing事件處理程序。這些函數(shù)與前面章節(jié)中相應(yīng)的函數(shù)幾乎是相同的。此外還要添加RenderLoop函數(shù),也與前面的示例相同。

將這些代碼編譯后,只能得到一個(gè)空的黑屏。接下來(lái)我們就開(kāi)始開(kāi)發(fā)游戲引擎。

 


上一章目錄下一章

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