Как изменить значение х персонажа игрока при нажатии клавиши, используя 2 отдельных метода - PullRequest
0 голосов
/ 13 мая 2019

Первая часть кода, с ключевыми вводами, vk_down и т. Д. Мне вообще не разрешено менять, вторая часть, мой код, которым я являюсь.Мне нужно знать, как выполнять движение игроков, где x и yr их позиции в методе Performaction () при использовании char, присоединенного к функции setkey в первой части кода.Я не знаю, как правильно связать их.В настоящее время ошибок нет, но когда я играю, персонаж не двигается

Также у него есть все импортированные ключевые события и т. Д. Уже

заранее спасибо

public void keyPressed(KeyEvent ke) {
    // Below, the setKey method is used to tell the Player object which key is
    // currently pressed.

    // The Player object must keep track of the pressed key and use it for
    // determining the direction
    // to move.

    // Important: The setKey method in Player must not move the Player.
    if (ke.getKeyCode() == KeyEvent.VK_LEFT)
        this.player.setKey('L', true);
    if (ke.getKeyCode() == KeyEvent.VK_RIGHT)
        this.player.setKey('R', true);
    if (ke.getKeyCode() == KeyEvent.VK_UP)
        this.player.setKey('U', true);
    if (ke.getKeyCode() == KeyEvent.VK_DOWN)
        this.player.setKey('D', true);
    if (ke.getKeyCode() == KeyEvent.VK_ESCAPE)
        this.continueGame = false;
    return;
}    

char c;    
public void performAction() {
    if (c == 'L') {
        this.x += -10000;
    }
}

public void setKey(char c, boolean b) {

}

1 Ответ

0 голосов
/ 13 мая 2019

Если я вас правильно понял, то:

public void performAction(char c) {
    switch (c) {
        case "L": this.x += -10000; break;
        case "R": this.x += 10000;  break;
        case "U": this.y += 10000;  break;
        case "D": this.y += -10000; break;
    }
}

public void setKey(char c, boolean b) {
    // do some stuff
    // ...
    performAction(c);
}

UPD: Использование приватного поля текущего персонажа:

class SomeClass {

    // ...
    // Keep the value
    private char c; // (5)

    public void performAction() {
        // Read the value
        switch (this.c) {
            case "L": this.x += -10000; break;
            case "R": this.x += 10000;  break;
            case "U": this.y += 10000;  break;
            case "D": this.y += -10000; break;
        }
    }

    public void setKey(char c, boolean b) {
        // ...

        // Having used 'this.' you can invoke variable of the class (aka 'field')
        // which declared at 5 line.
        //
        // Assign a new value to the field.
        this.c = c; 
        performAction();
    }
}
...