いくつかの小さなことをした後、私はテキストベースのRPGで私の手を試してみることに決めました。私は再び勉強しているので、私はコンソールを使用しています。しかし、私はこの時点で問題に遭遇しています。私は自分のメインメソッドを保持する私のGameクラスを持っていますが、その1つはPlayerクラスです。私のプレーヤーのクラスの中で私はこれがあります。あるクラスから別のクラスへKeyEventメソッドを呼び出すにはどうすればよいですか?
public void playerControls(KeyEvent e)
{
int key = e.getKeyCode();
if (key == KeyEvent.VK_W)
{
System.out.println("Up");
}
if (key == KeyEvent.VK_A)
{
System.out.println("Left");
}
if (key == KeyEvent.VK_S)
{
System.out.println("Down");
}
if (key == KeyEvent.VK_D)
{
System.out.println("Right");
}
if (key == KeyEvent.VK_I)
{
System.out.println("Inventory");
}
if (key == KeyEvent.VK_O)
{
System.out.println("Options");
}
if (key == KeyEvent.VK_M)
{
System.out.println("Map");
}
if (key == KeyEvent.VK_C)
{
System.out.println("Character");
}
}
その後、私のゲームクラスの内部で、私は私のメインメソッド内で持っている:
//START OF GAME
do
{
player.playerControls(e);
validInput = true;
System.out.println("!!!!!!!!!!enter the intro story here!!!!!!!!!");
} while (gameRun);
}
私が午前問題は、私はeがすることはできませんというエラーを取得するということです私はnullとして私はまたエラーをスローとして実行するときに変数に解決されます。私の質問は、私がゲームを実行してユーザーの入力を可能にするために、私は(このように/正しく "適切に")プレイヤークラスのplayerControlを私のGameクラスに呼び出す方法です。ご回答ありがとうございます。素晴らしい一日を過ごしてください:)
'KeyEvent'は' KeyListener'によって生成されます。あなたは実際に 'KeyEvent'を得るためにリスナーをコンソールに登録しなければなりません。 –
お返事ありがとうございます。だから本質的にコンソールはユーザーの入力を探しているだろうし、そうするためにコンソールを設定しなければならないだろう。コンソールが入力を感知した場合、KeyEventがどうなるか? – skinward
あなたは混乱しています:KeyEventとコンソールは混在しないため、前者はイベントドリブンユーザーインターフェイスGUIライブラリの一部であり、後者は線形プログラミングユーザーインターフェイスの一部です。あなたが単純なコンソールプログラミングをしているなら、答えはKeyEventsを使わないことです。ほとんどのチュートリアルで表示されるように、BufferedReaderまたはScannerを使用してください。 –