Я не понимаю, как использовать wait () и notify () - PullRequest
0 голосов
/ 18 мая 2019

Я делаю простую видеоигру с использованием JavaFX. У меня проблема в общении с двумя классами, так как каждому нужны какие-то вещи от другого.

Это первый класс:

public final class GUI extends Application {

private Game _game;
private GridPane _taulerVisual;
private Stage _primaryStage;

@Override
public void start(final Stage primaryStage) throws InterruptedException, FileNotFoundException {
    //stuff 
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    Application.launch(args);
}

public void addTile(myTile r) {
    double x, y;
    _taulerVisual.setOnMousePressed(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent e) {
            double mouseX = e.getSceneX();
            double mouseY = e.getSceneY();
            addVisualTile(r, mouseX, mouseY);
        }
    });
}

public void addVisualTile(myTile r, int x, int y) {
    myVisualTile rV = new myVisualTile(r);
    new myVisualTile add = new myVisualTile();
    _taulerVisual.add(rV, x, y);
}

и еще кое-что

А это второй класс:

public class Game {
private GUI _gui;
//more stuff

public void play() {

    int x = 100; int y = 100;
    myTile ini = _tauler.ini(); // This is the logical board
    _gui.addVisualTile(ini, x, y);
    Player j;
    int i = 0;
    while (!_tileStack.empty()) {
        try {
            if (i == _players.size()) i = 0;
            j = _players.get(i);
            i++;
            turn(j);
            wait();
        } catch (InterruptedException ex) {
            System.out.println("stuff");
        }
    }
    System.out.println("Final");
}

private void turn(Player j) {
    myTile r=_tileStack.getFirst();
    _gui.addTile(r);
    notify();
}

Проблема в том, что для каждого хода я хочу ждать, пока игрок не сделает свой ход (ход метода). Это имеет смысл, не так ли?

Но как мне это сделать?

Метод play () вызывается из GUI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...