正文

游戏案例:GemDrops(4)

Windows移动游戏开发实战 作者:(美)Adam Dawes


 

8.2.2  创建游戏窗体

将Form1重命名为MainForm,并对其属性进行更新,将Text属性设置为GemDrops,将BackColor属性设置为Black。

还要在窗体的顶端添加两个标签,分别命名为lblScore和lblNextPiece。它们各自的Text属性分别为“Score:0”及“Next piece:”。lblScore标签停靠在窗体的顶部,所以它有足够的空间来显示玩家得分。lblNextPiece标签被固定在右上角,这样当屏幕的尺寸发生改变时(例如手机的方向发生改变),它还会保持在屏幕的右上角。将lblNextPiece标签的TextAlign属性设置为TopRight。

对MainMenu控件进行更新,添加一个Pause项和一个弹出菜单Menu项。弹出菜单中包含两个菜单项NewGame和ExitGame,用于开始游戏和退出游戏。最初的窗体设计。

在窗体的代码中,声明一个CGemDropsGame对象作为类级别的变量,名为_game。在窗体的构造函数中来对它进行实例化和初始化,如程序清单8-1所示。

程序清单8-1  对GemDrops游戏对象进行实例化和初始化

// 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的函数。它只是简单地以一个int变量作为参数,并将该值赋给lblScore标签的Text属性。该函数用于显示玩家每次得分后的分值

程序清单8-2  显示玩家得分的函数

/// <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函数和它的Load、Paint以及Closing事件处理程序。这些函数与前面章节中相应的函数几乎是相同的。此外还要添加RenderLoop函数,也与前面的示例相同。

将这些代码编译后,只能得到一个空的黑屏。接下来我们就开始开发游戏引擎。

 


上一章目录下一章

Copyright © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号