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 の後に追加するのを忘れました。

return 0;2)そして、ループの本体を入れたforので、最初の反復後にプログラムが停止します。

これを試して:

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 ステートメントの各ケースの後にステートメントを追加します。お役に立てれば。

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 に答える