输入不可见的c++迷宫游戏

Input invisible c++ Maze Game

所以我已经完成了大部分游戏,但是,我想将玩家的分数和名字保存到文本文件中并显示它。到目前为止,用户输入有效并确实保存到名为 score.txt 的文本文件中,但是输入是不可见的,您看不到您正在输入的内容。有谁知道为什么会这样?

主要

int main()
{
    DWORD        mode;          /* Preserved console mode */
    INPUT_RECORD event;         /* Input event */
    BOOL         EXITGAME = FALSE;  /* Program termination flag */
    unsigned int counter = 0;   /* The number of times 'Esc' is pressed */


    /* Get the console input handle */
    HANDLE hstdin = GetStdHandle( STD_INPUT_HANDLE );

    /* Preserve the original console mode */
    GetConsoleMode( hstdin, &mode );

    /* Set to no line-buffering, no echo, no special-key-processing */
    SetConsoleMode( hstdin, 0 );

   srand ( time(NULL) ); //initialize the random seed

    // Variables
    int health = 2;

   // Declare variable positions

    player.x=1;
    player.y=1;
    treasure.x = 20;
    treasure.y = 5;
    treasure.z= 0;
    traps.x =  1;
    traps.y = 7;
    traps.z = 0;
    lives.x = 1;
    lives.y = 9;
    ofstream file;
    int score = 0;
    string name;
    string line;
/*
    while(treasure.z < 2)
    {
    treasure.x = (rand() % 24);
    treasure.y = (rand() % 16);
    if(treasure.x == 0 && treasure.y == 0)
      {
       treasure.z++;
      }
    }
    while(traps.z < 3)
    {
    traps.x = (rand() % 24);
    traps.y = (rand() % 16);
    if(traps.x == 0 && traps.y == 0)
      {
       traps.z++;
      }
    }
    while(lives.z < 2)
    {
    lives.x = (rand() % 24);
    lives.y = (rand() % 16);
    }
    */
    clrscr();
    setcolor(15);


    while (!EXITGAME)
    {
        if (WaitForSingleObject( hstdin, 0 ) == WAIT_OBJECT_0)  /* if kbhit */
        {
            DWORD count;  /* ignored */

            /* Get the input event */
            ReadConsoleInput( hstdin, &event, 1, &count );

            /* Only respond to key release events */
            if ((event.EventType == KEY_EVENT)
            &&  !event.Event.KeyEvent.bKeyDown)

          clrscr();
            putmenu();
            gotoxy(6,20);
            cout<<"Lives: " << health;
            gotoxy(6,22);
            cout<<"Score: " << score;

             Sleep(50);


                switch (event.Event.KeyEvent.wVirtualKeyCode)
                {
                    case VK_ESCAPE:
                        clrscr();

                        putend();

                       EXITGAME = TRUE;
                     break;

                    case VK_LEFT:
                        // left key   move player left
                         moveleft();
                     break;

                    case VK_RIGHT:
                        // right key   move player right
                        moveright();

                     break;    

                    case VK_UP:
                        // up key   move player up
                        moveup();

                     break;

                    case VK_DOWN:
                        // down key   move player down
                         movedown();

                     break; 

                    case VK_A:
                        // left key   move player left
                        moveleft();

                     break; 

                    case VK_D:
                        // right key   move player right

                        moveright();
                     break; 

                    case VK_W:
                        // up key   move player up

                        moveup();
                     break; 

                    case VK_S:
                        // down key   move player down
                        movedown();
                     break; 


                }//switch

                puttreasure();
                puttraps();
                putlives();
                putplayer();                
                 if((player.x == lives.x) && (player.y == lives.y))
                    {
                    health++;
                    lives.x = 0;
                    lives.y = 0;
                    }
                 if((player.x == traps.x) && (player.y == traps.y))
                    {
                    health--;
                   traps.x = 0;
                    traps.y = 0;
                    }

                if((player.x == treasure.x)&& (player.y == treasure.y))
                  {
                   score += 100; 
                   EXITGAME = true;
                  }
                else if(health == 0)
                  {
                   EXITGAME = true;                
                  }
                 if(EXITGAME == true)
                   {
                    score = score + (health * 100);
                   }   

        }  

    }

    if(EXITGAME == true)
      {
        // clear screen
        clrscr();

      }

      setcolor(10);
    cout << "Enter your name "; 

    cin >> name;

    ofstream out("score.txt");
    out << name;
    out << "\n";
    out << score;
    out.close();


/*  if(file.is_open())
      {
        while( getline (file, line))
            cout << line << '\n';
      }*/

    gotoxy(1,23);cout<<"  ";  
    SetConsoleMode( hstdin, mode );
    return 0;

}
 /* Set to no line-buffering, no echo, no special-key-processing */

您关闭了回显 - 意味着用户不会看到他们键入的内容