如何将KeyEvent方法从一个类调用到另一个类?

时间:2016-08-13 00:39:39

标签: java class methods

在做了一些小事之后,我决定尝试一下基于文本的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调用到我的游戏类中,以便我可以运行游戏并允许用户输入。谢谢你的任何答案。祝你有美好的一天:)

1 个答案:

答案 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;