如何在c#中的if()语句中调用多个函数

时间:2013-08-16 16:33:47

标签: c# if-statement enums keyboard-input

所以我需要一个c#if()语句,看起来应该是这样的,也许吧?代码:

...
if(CurrentGameState != gameState.gameLoading && gameState.mainMenu && keyboardState.IsKeyDown(Keys.Escape))
{
      CurrentGameState = gameState.mainmenu;

}
//I get error in: CurrentGameState != gameState.gameLoading && gameState.mainMenu part
...

这就是我使用上述变量的代码:

    //Game States
    enum gameState
    {
        gameLoading,
        mainMenu,
        gameOptions,
        levelSelect,
        gamePlaying,
        gameOver
    }
    gameState CurrentGameState = gameState.gameLoading;
    //Keyboard State
    KeyboardState keyboardState = Keyboard.GetState();

有什么建议吗?

3 个答案:

答案 0 :(得分:4)

gameState.mainMenu是枚举值,不是布尔值。你不能按照你想要的方式使用它。你的意思是这样做的吗?

if (CurrentGameState != gameState.gameLoading && 
    CurrentGameState != gameState.mainMenu &&
    keyboardState.IsKeyDown(Keys.Escape))

答案 1 :(得分:1)

我为格式化而不是用手机写字,但我认为你在使用xna,你应该在switch语句中使用你的游戏状态,否则你的代码会变得非常快而且效率低下

 Switch(currentgamestate)
 {
      Case gamestate.loading:
          If(pressing escape)
              Currentgamestate = gamestate.mainmenu;
       Break;
       Case gamestate.mainmenu;
            //todo
        Break;
   }

你的错误是因为你试图将两个条件链接在一起..如果currentgamestate没有加载并且是主菜单,你需要为每个条件引用当前游戏状态..如果currentgamestate没有加载且currentgamestate是mainmenu

答案 2 :(得分:0)

if(CurrentGameState != gameState.gameLoading 
   && gameState.mainMenu && keyboardState.IsKeyDown(Keys.Escape))

可能是

if(CurrentGameState != gameState.gameLoading && 
   CurrentGameState==gameState.mainMenu && keyboardState.IsKeyDown(Keys.Escape))