私は(x、y)の20x40グリッドの割り当てがあります。ユーザーは、矢印キーを使用してこのグリッド内を移動します。グリッドはすべて "。"で始まります。ピリオドとカーソルは目を覚ますスペースを残すので、ユーザーは彼がどこを旅したかを知ることができます。グリッドで複数の罫線を確認する方法
ユーザが文字を入力するたびに、プログラムは矢印キー(ANSII文字72,75,77、および80)かどうかを確認するインストラクタが指定した機能を実行し、そうであればカーソルを移動します。
//Take in user input to move around the grid
void Move(char Direction)
{
switch (static_cast<int>(Direction))
{
case 72: //Up arrow
Screen[xPos][yPos] = ' '; //Wipe out the users current cursor
xPos--; //Move the users x position on the grid
Screen[xPos][yPos] = '^'; //Move the users cursor
break;
case 80: //Down arrow
Screen[xPos][yPos] = ' ';
xPos++;
Screen[xPos][yPos] = 'V';
break;
case 75: //Left arrow
Screen[xPos][yPos] = ' ';
yPos--;
Screen[xPos][yPos] = '<';
break;
case 77: //Right arrow
Screen[xPos][yPos] = ' ';
yPos++;
Screen[xPos][yPos] = '>';
break;
}
}
カーソルの罫線を作成したいと思います。ユーザーの入力と関数の間に入る条件文を作成できますが、複数の罫線を同時にチェックする方法はわかりません。
私の現在の解決策は、移動コマンド内でupコマンドの上限境界条件を作成することです。 移動機能を変更できないため、割り当てのルールが壊れます。
機能の前にボーダーチェックをスリップさせる方法はありますか?その場合、複数の罫線を同時に確認できますか?
ここには、問題のメインの部分があります。
system("cls"); //Clear the screen before printing anything
cout << "Welcome to cookie pickup. You will move to the cookies by using the arrow keys." << endl; //Program intro
Game->Print(); //Print the grid out
cout << "What direction would you like to move in? \n(Move using the arrow keys or type q to quit.) "; //Instructions to the user
UserMove = _getche(); //Get one character from the user (Visual Studio 2010 "_getche()" is the new version of "getche()")
Game->Move(UserMove); //Process the users input
あなたドン'static_cast'が必要で、' char'だけ 'switch'する必要はありません。また、境界外に移動した場合に例外をスローする関数を実装しないで、 'move(0、1)'のようなものを呼び出してx、y(0,1)をそれに応じて移動してください。 – tadman