在做了一些小事之后,我决定尝试一下基于文本的RPG。我只是在使用控制台,因为我还在学习。然而,我现在遇到一个问题,我似乎无法通过,也没有找到任何帮助。我有我的Game类,它包含我的main方法以及其他一些类,其中一类是我的Player类。在我的Player类中,我有这个:
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");
}
}
然后在我的Game类中,我有我的主要方法:
//START OF GAME
do
{
player.playerControls(e);
validInput = true;
System.out.println("!!!!!!!!!!enter the intro story here!!!!!!!!!");
} while (gameRun);
}
我遇到的问题是我得到一个错误,当我将其作为null运行时,e无法解析为变量我也会抛出错误。我的问题是我如何(像这样/也“正确”)将我的玩家类中的playerControl调用到我的游戏类中,以便我可以运行游戏并允许用户输入。谢谢你的任何答案。祝你有美好的一天:)
答案 0 :(得分:0)
您可以只读取控制台输入,而不是让您的方法需要KeyEvent
。
do {
String input = System.console().readLine();
//Change playerControls(KeyEvent e) to playerControls(String e)
player.playerControls(input);
validInput = true;
System.out.println("!!!!!!!!!!enter the intro story here!!!!!!!!!");
} while (gameRun);
是的,有一种方法可以使用一个Char
而不是String
来实现这一点,但在我看来,对于一个初学者来说这并不容易。
现在您还必须进一步更改playerControls
- 方法:
public void playerControls(String e){
switch(e){
case "Up": system.out.println("Up");
break;
//Do so with all controls
}
而不是break
将停止执行以下每种情况(如果您忘记break
将会发生这种情况),而不是return;
。