【发布时间】:2020-05-18 19:44:59
【问题描述】:
我正在尝试在不使用 lambda 的情况下将此代码转换为工作,以便我可以更好地理解它,但我一点运气都没有。 ActionEvents 类似按钮怎么写?
enemyBoard = new Board(true, event -> {
if (!running)
return;
Cell cell = (Cell) event.getSource();
if (cell.wasShot)
return;
enemyTurn = !cell.shoot();
if (enemyBoard.ships == 0) {
System.out.println("YOU WIN");
System.exit(0);
}
if (enemyTurn)
enemyMove();
});
这里是Board 构造函数:
public Board(boolean enemy, EventHandler<? super MouseEvent> handler) {
this.enemy = enemy;
for (int y = 0; y < 10; y++) {
HBox row = new HBox();
for (int x = 0; x < 10; x++) {
Cell c = new Cell(x, y, this);
c.setOnMouseClicked(handler);
row.getChildren().add(c);
}
rows.getChildren().add(row);
}
getChildren().add(rows);
}
代码属于战舰游戏,这里是游戏代码的链接:https://github.com/AlmasB/Battleship/tree/master/src/com/almasb/battleship。
【问题讨论】:
-
lambda 表达式 只是接口的实现。你将如何在不使用 lambda 的情况下实现接口
EventHandler<? super MouseEvent>? [提示:写一个类,例如public class G implements EventHandler<? super MouseEvent>] 剩下的可以填吗? -
也许你应该找到不使用 lambdas 的战舰代码。把你不懂的代码放到网上,然后让别人帮你简化,这不是 StackOverflow 的真正目的。
标签: java lambda actionevent