导出 (0) 打印
全部展开

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

2012/2/9

本主题演示如何将级别添加到 XNA Framework 应用程序中,该操作在本系列中完成。到目前为止,应用程序由一个围绕屏幕移动的方块图形对象组成。在前面的部分中,我们已经添加检测用户点按方块时间的功能。我们将这些命中或冲突数记录为用户得分。若要演示试用体验,需将多个级别添加到游戏中。在之后的主题中介绍的试用体验,能够根据游戏许可证(试用或完整)限制用户能够玩的级数。本主题介绍的级别实现定义了每一级方块围绕屏幕移动的速度。级别越高,围绕屏幕弹跳的方块的移动速度越快。

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

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

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

注意注意:

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

若要演示试用体验,需将多个级别添加到游戏中。在玩家完成一个级别后,将尝试进行下一个级别的游戏。在本主题中,游戏通过加快图形对象围绕屏幕弹跳的速度来更改每个级别。

将级别添加到游戏

  1. “Game1”类的顶部,添加以下变量。我们在 List<Vector2>. 中为每一个级别存储一个速度。将用户当前所在的级别存储到 currentLevel 变量中。

    
            // Each level in the game changes the speed of the sprite moving across the screen.
            // Store the speed per level in a List<Vector2>
            List<Vector2> levels;
    
            // The current level that the user is playing
            int currentLevel;
    
    
  2. Initialize 方法中,用以下代码行替换设置 spriteSpeed 的行。此代码用三个游戏级别初始化游戏,每一个级别定义一个 Vector2 对象,该对象表示图形对象围绕屏幕移动的速度。在此处定义的级别列表中检索到,现在 currentLevel 初始化为 1 以及 spriteSpeed 初始化为第一级别的速度。

    
                // Initialize the list of level speeds.
                levels = new List<Vector2>();
                levels.Add(new Vector2(50.0f, 50.0f));
                levels.Add(new Vector2(100.0f, 100.0f));
                levels.Add(new Vector2(200.0f, 200.0f));
    
                // Start the game at level one.
                currentLevel = 1;
    
                // Set the initial speed of the sprite.
                spriteSpeed = levels[currentLevel - 1];
    
    
  3. “Game1”类中,添加以下方法。GoToNextLevel 将针对最高级别数(即 levels.Count)检查 currentLevel。如果用户还没有达到最高级别,则 currentLevel 是递增的,图形对象的速度被设置为新级别的速度,并且游戏的计数器也将重置。在该示例中,没有定义游戏结束的体验。如果用户已经达到最高级别,则重新进行最高级别的游戏。

    
            private void GoToNextLevel()
            {
                // Are all levels completed
                if (currentLevel == levels.Count)
                {
                    // game over
                    ResetGameCounters();
                }
                else
                {
                    currentLevel++;
                    spriteSpeed = levels[currentLevel - 1];
                    ResetGameCounters();
                }
    
            }
    
            private void ResetGameCounters()
            {
                collisionCount = 0;
                spritePosition.X = 0;
                spritePosition.Y = 0;
            }
    
    
  4. 通过选择“生成 | 生成解决方案”菜单命令生成解决方案。应准确无误地生成项目。您可以打开“错误列表”窗口,如果未打开该窗口,可以通过选择“视图 | 错误列表”菜单命令打开它。如果出现错误,检查以上步骤并改正错误,然后再次生成解决方案。

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

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

  6. 通过选择“调试 | 启动调试”菜单命令运行应用程序。这将打开模拟器窗口并启动该应用程序。您将看到一个围绕屏幕弹跳的图形。

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

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

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

本系列的下一个主题将演示用户玩游戏时,如何在屏幕上显示当前分数和当前级别。此时,我们具有了一个简单的游戏并且游戏具有跟踪用户分数的功能。我们也已经将三个级别内置到游戏中。添加记分板后,我们将能够随时查看当前分数和当前级别。

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

显示:
© 2014 Microsoft