我创建了一个带有“按Enter键启动游戏”的内置屏幕,然后退出并退出游戏是没有问题的,但让游戏开始变得更难。有什么建议吗?
答案 0 :(得分:2)
最简单的方法是设置状态机。看起来很简单。
enum GameState { TitleScreen = 0, GameStarted, GameEnded, }
然后在Game1.cs中,或者在你处理这个按钮点击的任何地方,你可以在你的类中放置一个变量来存储你所在的当前游戏状态。
GameState currentGameState = GameState.TitleScreen;
然后,在您对您编码的实际游戏进行抽奖或更新之前,您可以检查当前的游戏状态
void Draw(GameTime time) { if(currentGameState == GameStarted) { //Then handle the game drawing code here } }
更新方法基本上看起来相同
答案 1 :(得分:1)
我使用的系统效果很好(对我而言)
设置一个名为IContext的界面。在这里有void Draw()和void Update()。
然后在游戏中有一个名为Context的公共IContext。你只需在提供的游戏循环中调用context.update()和context.draw()。
然后菜单屏幕只需要实现IContext。您通过其构造函数传递对游戏对象的引用,该构造函数允许您从插入的任何对象更改上下文。
所以你插入"菜单"在您点击 Enter 键时,在菜单中调出this.game.context = new level01();
希望这是有道理的。
尼克
答案 2 :(得分:1)
正如九号名所说,国家机器是前往这里的方式。然而,我想你会看到这个样本 - http://create.msdn.com/en-US/education/catalog/sample/game_state_management - 由微软提供,而不是自己滚动。
非常容易实现和改变whist涵盖你想要做的所有事情,包括输入处理。