2016-05-28 52 views
-2

遇到我的代码无法正常工作的问题。我试图通过按下键盘上的任意键,但不按回车键来退出该操作。我的代码片段如下。按下任意键而不按下回车键退出“do while”?

void LemonadeBuyANDCheck() 
{ 
    int iCupsToBuy = rand() % (MAX_CUPS - MIN_CUPS) + MIN_CUPS; 


    bool continueLoop = true; 
    do 
    { 
     int Userinput = 1; 
     Userinput = !_kbhit(); 
     fflush(stdin); 

     if (Userinput == 1) 
     { 
      continueLoop = false; 
     } 

     StoreIsOpen(); 
     int randomNumber = rand() % 100; 

     if (iCupsOfLemonadeInStock == 0) 
     { 
      cout << "Customer came to buy some lemonade but you didnt have any in stock :(\n"; 
      //continueLoop = false; 
     } 

     else if (randomNumber <= 25) 
     { 

      cout << "Wow your lemonade is way too expensive!\n"; 
      iCustomerCounter++; 

     } 

     else if (randomNumber >= 75) 
     { 

      cout << "Eww your recipe for lemonade... Wow..\n"; 
      iCustomerCounter++; 
     } 


     else if (iCupsOfLemonadeInStock >= iCupsToBuy) 
     { 

      cout << "You sold " << iCupsToBuy << "cups of lemonade!\n"; 

      iCupsOfLemonadeInStock = iCupsOfLemonadeInStock - iCupsToBuy; 
      iCupsOfLemonadeSold = iCupsOfLemonadeSold - iCupsToBuy; 
      //Money 

      fMoneyEarned += (iCupsToBuy * fCurrentLemonadePrice); 
      fCurrentMoney += (iCupsToBuy * fCurrentLemonadePrice); 

      iCustomerCounter++; 
     } 
     else if (iCupsOfLemonadeInStock < iCupsToBuy) 
     { 
      cout << "You didnt have enough lemonade in stock so you only sold " << iCupsToBuy - iCupsOfLemonadeInStock << endl; 

      fMoneyEarned += (iCupsOfLemonadeInStock * fCurrentLemonadePrice); 
      fCurrentMoney += (iCupsOfLemonadeInStock * fCurrentLemonadePrice); 
      iCupsOfLemonadeInStock = 0; 

      iCustomerCounter++; 
     } 
    } while (continueLoop != true); 
    fflush(stdin); 
     GameMenuSelectionVerifier(); 
} 
+0

你试过寻找答案吗?先打:http://stackoverflow.com/questions/7010760/c-keypress-getch-cin-get – Jens

+0

你有什么问题? – user463035818

+1

C++标准库不提供“check for keypress”功能,但您可以使用库如ncurses。 –

回答

0

我想你可以使用名为“kbhit”的函数,它位于“conio.h”头文件中。详情请点击this。你可以这样修改:

while(!kbhit()); 
+0

我们在哪里可以得到这个“conio.h”头文件?如果我们想要编写一个应用程序,而又不清除我们的旧16位MS-DOS计算机,该怎么办? –

+0

“conio.h”头文件很常见,就像“stdio.h”头文件一样。你只需要写“#include ”,电脑就能找到它。然后你可以使用kbhit函数。 – fgksgf

+0

常见?哈! 20多年来这种情况并不常见。我可以借用你的时间机器吗? –