2012-03-30 103 views
-7

我使用C++创建基本控制台游戏。我希望用户能够在任何时间打逃逸,弹出一个菜单,将类似于以下内容:中断游戏以在按钮上按下显示菜单

[1] Resume Game 
[2] Save Game 
[3] Exit Game 

Your Input: 

我不完全知道从哪里开始解决这个问题。你们中的任何一个人能否为出发点提供一些建议?

+0

你正在寻找一个',而'循环。 – 2012-03-30 20:04:31

+0

用户可以按其他键吗?如果是这样,你如何处理这些? – 2012-03-30 20:31:58

+0

什么平台?你是否在使用任何库,如GLUT,SDL,ncurses等? – 2012-03-30 20:33:03

回答

1

使用Visual C++的Windows控制台应用程序代码。

#include <iostream> 
#include <conio.h> 

using namespace std; 

#define KB_UP 72 
#define KB_DOWN 80 
#define KB_LEFT 75 
#define KB_RIGHT 77 
#define KB_ESCAPE 27 
#define KB_F8 66 

void gamemenu() 
{ 
    cout<<" \n"; 
    cout<<"[1] Resume Game \n"; 
    cout<<"[2] Save Game \n"; 
    cout<<"[3] Exit Game \n"; 
} 

int main() 
{ 
    int KB_code=0; 

    cout<<"Game menu 0.01\n"; 
    cout<<"press F8 to Exit\n"; 
    cout<<"press ESC for Game menu \n"; 

    while(KB_code != KB_F8) 
    { 
    if (kbhit()) 
     { 
      KB_code = getch(); 
      //cout<<"KB_code = "<<KB_code<<"\n"; 

      switch (KB_code) 
      { 

       case KB_ESCAPE: 

        gamemenu(); 

       break; 

       case KB_LEFT: 
          //Do something 
       break; 

       case KB_RIGHT: 
          //Do something      
       break; 

       case KB_UP: 
          //Do something      
       break; 

       case KB_DOWN: 
          //Do something      
       break; 

      }   

     } 
    } 

    return 0; 
} 
0

您可以使用:

ch = getchar(); 

地方的代码在游戏中询问输入或游戏与处理完成。

就可以检查的CH值27(Escape键的ASCII),如:

if (ch == 27) { 
    // save gameplay conditions 
    // clear screen 
    // popup comes up. 
    resume: // define label for resuming 
    // setup gameplay again 
} 

而且,如果用户选择简历选择

goto resume;