导出 (0) 打印
全部展开

如何显示 XNA Framework 应用程序的记分板

2012/2/9

本主题演示如何将文本写入 XNA Framework 应用程序的屏幕中。本系列前面的主题中已经创建了游戏基础结构和逻辑。还实现了用户点按围绕屏幕弹跳的方块的检测。此命中或冲突计数即为用户得分。我们还将多个级别添加到游戏中。既然所有部分都已就绪,我们就可以添加显示游戏记分板的功能了。记分板用于显示屏幕上的当前分数和当前级别。

执行此步骤之前,您需完成以下主题。

  1. 如何创建 XNA Framework 应用程序

  2. 如何将冲突检测添加到 XNA Framework 应用程序

  3. 如何将级别添加到 XNA Framework 应用程序

注意注意:

以下过程中的步骤用于 Visual Studio 2010 Express for Windows Phone。 当您使用用于 Visual Studio 2010 Professional 或 Visual Studio 2010 Ultimate 的插件时,您可能会看到菜单命令或窗口布局中的一些微小改变。

若要显示游戏进度,需将记分板添加到游戏,该记分板在屏幕上会显示当前分数和所处的当前级别。

显示游戏记分板

  1. 通过选择“项目 | 添加类”菜单命令将新类添加到“WindowsPhoneGame1”项目中。将显示“添加新项”窗口。在要添加项的列表中,选择“类”,然后在“名称”字段中键入 Scoreboard.cs。单击“添加”,将类添加到项目中。现在,一个名为 Scoreboard.cs 的新类已经添加到项目中。

  2. 打开 Scoreboard.cs 文件并将以下使用指令添加到该文件的顶部。

    
    using Microsoft.Xna.Framework;
    using Microsoft.Xna.Framework.Graphics;
    
    
  3. 将以下代码插入到 Scoreboard 类的主体中。此代码定义一个由两个文本字段组成的记分板,一个为当前分数,一个为当前级别。使用 scorePoslevelPos 矢量定义这些字段在屏幕上的位置,这两个矢量在以下代码中定义。将变量 _font 定义为存储字体,用于在屏幕上呈现文本。类包含两个属性,ScoreLevel,这两个属性用于设置游戏分数和级别。将用于呈现文本的字体传递到 Scoreboard 构造函数中的类。最后,在屏幕上的定义位置,记分板类有它自己的用于呈现当前分数和级别的 Draw 方法。

    
            private Vector2 scorePos = new Vector2(20, 40);
            private Vector2 levelPos = new Vector2(20, 60);
    
            private SpriteFont _font;
    
            public int Score { get; set; }
            public int Level { get; set; }
    
            public Scoreboard(SpriteFont font)
            {
                _font = font;
            }
    
            public void Draw(SpriteBatch spriteBatch)
            {
                spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);
                spriteBatch.DrawString(_font, "Score:" + Score.ToString(), scorePos, Color.Black);
                spriteBatch.DrawString(_font, "Level:" + Level.ToString(), levelPos, Color.Black);
                spriteBatch.End();
            }
    
    

    既然已定义类以管理将分数写入到屏幕,在以下的步骤中将从主 Game1 类调用该类。

  4. “解决方案资源管理器”中,右键单击“内容”节点(在此示例中名为“WindowsPhoneGame1Content (Content)”),然后选择“添加 | 新项”。在“添加新项”窗口中,选择“Sprite Font”,然后单击“添加”。将一个名为“SpriteFont1.spritefont”的新字体对象添加到项目中。

  5. 在 Game1.cs 中将以下变量添加到类的顶部。此变量用于存储游戏中将使用的 Scoreboard 类的实例。

    
    // Display the score and the level on the screen.
    Scoreboard scoreBoard;
    
    
  6. “Game1”类中,将以下代码添加到“LoadContent”方法的末尾。此操作构造 Scoreboard 实例并初始化 ScoreLevel 属性。传递到 Scoreboard 构造函数的字体名称 SpriteFont 已经在上一步添加过。

    
    // Create the scoreboard and set the initial level and score values.
    scoreBoard = new Scoreboard(Content.Load<SpriteFont>("SpriteFont1"));
    scoreBoard.Level = currentLevel;
    scoreBoard.Score = collisionCount;
    
    
  7. CheckForTouchCollision 方法中,在 collisionCount 递增的行下面添加以下代码行。

    
    scoreBoard.Score = collisionCount;
    
    
  8. 在前面已经定义的 ResetGameCounters 方法中,添加以下代码行。这将重设 ScoreLevel 属性。

    
    scoreBoard.Score = 0;
    scoreBoard.Level = currentLevel;
    
    
  9. Game1 类的 Draw 方法中,先添加以下行,然后立即调用 base.Draw(gametime)。此操作将在绘制游戏时更新记分板。

    
    // Call the Draw method on the scoreBoard object to update the scoreboard.
    scoreBoard.Draw(spriteBatch);
    
    
  10. 通过选择“生成 | 生成解决方案”菜单命令生成解决方案。应准确无误地生成项目。您可以打开“错误列表”窗口,如果未打开该窗口,可以通过选择“视图 | 错误列表”菜单命令打开它。如果出现错误,检查以上步骤并改正错误,然后再次生成解决方案。

  11. 在标准工具栏上,将应用程序部署目标设置为“Windows Phone 模拟器”

    选择模拟器的标准工具栏上的目标

  12. 通过选择“调试 | 启动调试”菜单命令运行应用程序。这将打开模拟器窗口并启动该应用程序。您将看到一个围绕屏幕弹跳的图形。您还将在屏幕的一角看到一个记分板。当您点按该移动的方块时,分数将增加。每一次当您的分数到达五分时,级别将改变。这导致方块移动更快。该游戏有三个级别。当到达第三级时,您可以重复进行第三级的游戏。

  13. 如果模拟器超时进入锁定屏幕,您可以通过点按屏幕底部并向上滑动来解锁。

  14. 您可以通过将光标放置在需要的代码行上,并选择“调试 | 切换断点”菜单命令来设置代码中的调试断点。

  15. 若要停止调试,请选择“调试 | 停止调试”菜单命令。

此时,游戏有多个级别和一个记分板,玩家在游戏中的任何时候查看分数和级别都变得更加容易。本系列的下一个主题介绍如何将试用体验添加到此游戏中,这样在游戏具有试用许可证时,用户仅限玩第一级。

如何将试用体验添加到 XNA Framework 应用程序

显示:
© 2014 Microsoft