0

我想通过c++中的以下代码在终端中移动符号“A”的位置,但是终端关闭并且似乎没有进入for循环。我不知道我错在哪里。如果您能帮助我,我将不胜感激:

'w' 应该向上移动 's' 应该向下移动 'a' 和 'd' 左右移动

 #include <iostream>
 #include <conio.h>
 #include <string>
 #include <Windows.h>
 using namespace std;

 void goToXY(int x=0,int y=0)
 {
     HANDLE h=GetStdHandle(STD_OUTPUT_HANDLE);
     COORD c;
     c.X=x;
     c.Y=y;
     SetConsoleCursorPosition(h,c);
 }

 int main()
 {

     char symbol='A';
     int X=0, Y=0;

     goToXY(X,Y);
     cout<<symbol;

     for(;;)
     {
         if(kbhit())
         {
             char ch = getch();
             switch(ch)
             {
             case 'w':
                 goToXY(X,Y-1);
                 cout<<symbol;

             case 's':
                 goToXY(X,Y+1);
                 cout<<symbol;

             case 'a':
                 goToXY(X-1,Y);
                 cout<<symbol;

             case 'd':
                 goToXY(X+1,Y);
                 cout<<symbol;
             }
         }

         getch();
         return 0;
    }    
}
4

2 回答 2

0

1)您忘记break;在每个case-body 之后添加。

2)并且您已经放入return 0;for-loop 的主体,因此您的程序在第一次迭代后停止。

尝试这个:

for(;;)
{
      if(kbhit())
      {
           char ch = getch();
           switch(ch)
           {
           case 'w':
               goToXY(X,Y-1);
               cout<<symbol;
               break;
           case 's':
               goToXY(X,Y+1);
               cout<<symbol;
               break;
           case 'a':
               goToXY(X-1,Y);
               cout<<symbol;
               break;
           case 'd':
               goToXY(X+1,Y);
               cout<<symbol;
               break;
          }
     }
}
getch();
return 0;
于 2014-09-10T06:39:05.753 回答
-1

您还没有使用休息时间;在你的 switch 语句中每个 case 之后的语句。希望这可以帮助。

switch(ch)
               {
               case 'w':
                   goToXY(X,Y-1);
                   cout<<symbol;
                   break;
               case 's':
                   goToXY(X,Y+1);
                   cout<<symbol;
                   break;
               case 'a':
                   goToXY(X-1,Y);
                   cout<<symbol;
                   break;
               case 'd':
                   goToXY(X+1,Y);
                   cout<<symbol;
                   break;
               }
于 2014-09-10T06:36:31.473 回答