正文

游戲案例:GemDrops(4)

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


 

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

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

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

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

在窗體的代碼中,聲明一個CGemDropsGame對象作為類級別的變量,名為_game。在窗體的構(gòu)造函數(shù)中來對它進行實例化和初始化,如程序清單8-1所示。

程序清單8-1  對GemDrops游戲?qū)ο筮M行實例化和初始化

// 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();

}

在該窗體中再添加一個名為SetScore的函數(shù)。它只是簡單地以一個int變量作為參數(shù),并將該值賦給lblScore標簽的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();

}

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

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

 


上一章目錄下一章

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