3

我用“按 Enter 开始游戏”创建了一个介绍屏幕,(然后退出)当然退出没问题,但让游戏开始有点困难。有什么建议吗?

4

3 回答 3

2

最简单的方法是设置状态机。它看起来很简单。

枚举游戏状态
{
标题屏幕 = 0,
游戏开始,
游戏结束,
}

然后在 Game1.cs 中,或者在您处理此按钮单击的任何地方,您可以在您的类中放置一个变量来存储您所处的当前游戏状态。

游戏状态 currentGameState = GameState.TitleScreen;

然后,在对您编写的实际游戏进行抽签或更新之前,您可以检查当前游戏状态

无效平局(游戏时间)
{
   如果(当前游戏状态 == 游戏开始)
   {
       //然后在这里处理游戏绘制代码

   }
}

更新方法看起来基本相同

于 2010-11-14T23:59:32.317 回答
1

我使用的系统运行良好(对我而言)

设置一个名为 IContext 之类的接口。在此有 void Draw() 和 void Update()。

然后在游戏中有一个名为 Context 的公共 IContext。您只需在提供的游戏循环中调用 context.update() 和 context.draw()。

然后菜单屏幕只需实现 IContext。您通过其构造函数传入对游戏对象的引用,这使您可以更改插入的任何对象的上下文。

Enter因此,当您收到调出的键时,您插入“菜单”和菜单this.game.context = new level01();

希望这是有道理的。

缺口

于 2011-02-13T12:58:57.300 回答
1

正如 Ninename 所说,状态机是通往这里的道路。但是,我建议您查看此示例 - http://create.msdn.com/en-US/education/catalog/sample/game_state_management - 由微软提供,而不是您自己的。
非常容易实现和更改,几乎涵盖了您想做的所有事情,包括输入处理。

于 2011-03-21T17:23:05.150 回答