用javafx实现农夫过河游戏的代码
时间: 2024-03-06 10:51:21 浏览: 104
好的,以下是一个简单的用 JavaFX 实现农夫过河游戏的代码示例。该示例仅包含游戏界面的实现,游戏逻辑的实现需要根据具体需求进行编写。
```java
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class FarmerGame extends Application {
// 游戏界面的宽度和高度
private static final int WIDTH = 600;
private static final int HEIGHT = 400;
// 游戏元素的位置和大小
private static final int RIVER_Y = 200;
private static final int BOAT_SIZE = 50;
private static final int FARMER_SIZE = 30;
private static final int ANIMAL_SIZE = 40;
private static final int CARROT_SIZE = 20;
@Override
public void start(Stage primaryStage) throws Exception {
// 创建游戏界面
Canvas canvas = new Canvas(WIDTH, HEIGHT);
GraphicsContext gc = canvas.getGraphicsContext2D();
drawRiver(gc);
drawBoat(gc);
drawFarmer(gc);
drawAnimal(gc, "wolf", 100);
drawAnimal(gc, "sheep", 160);
drawAnimal(gc, "carrot", 220);
// 将游戏界面添加到场景中
Pane root = new Pane();
root.getChildren().add(canvas);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.setTitle("农夫过河游戏");
primaryStage.show();
}
// 绘制河流
private void drawRiver(GraphicsContext gc) {
gc.setStroke(Color.BLUE);
gc.setLineWidth(10);
gc.strokeLine(0, RIVER_Y, WIDTH, RIVER_Y);
}
// 绘制船只
private void drawBoat(GraphicsContext gc) {
gc.setFill(Color.BROWN);
gc.fillRect(WIDTH / 2 - BOAT_SIZE / 2, RIVER_Y - ANIMAL_SIZE - BOAT_SIZE, BOAT_SIZE, BOAT_SIZE);
}
// 绘制农夫
private void drawFarmer(GraphicsContext gc) {
gc.setFill(Color.GREEN);
gc.fillRect(WIDTH / 2 - FARMER_SIZE / 2, RIVER_Y - ANIMAL_SIZE - BOAT_SIZE - FARMER_SIZE, FARMER_SIZE, FARMER_SIZE);
}
// 绘制动物或菜
private void drawAnimal(GraphicsContext gc, String type, int x) {
gc.setFill(getColorByType(type));
gc.fillOval(x, RIVER_Y - ANIMAL_SIZE, ANIMAL_SIZE, ANIMAL_SIZE);
}
// 根据类型获取颜色
private Color getColorByType(String type) {
switch (type) {
case "wolf":
return Color.GRAY;
case "sheep":
return Color.WHITE;
case "carrot":
return Color.ORANGE;
default:
return Color.BLACK;
}
}
public static void main(String[] args) {
launch(args);
}
}
```
上述代码中,我们使用了 JavaFX 的 2D 图形 API 来绘制游戏界面中的河流、船只、农夫、动物和菜等元素。在 `start` 方法中,我们创建了一个 `Canvas` 对象,并获取其 `GraphicsContext`,用于绘制图形。然后,我们分别调用 `drawRiver`、`drawBoat`、`drawFarmer` 和 `drawAnimal` 方法来绘制不同的游戏元素。最后,我们将 `Canvas` 添加到场景中,并将场景设置为主舞台的场景,显示游戏界面。
需要注意的是,上述代码仅包含了游戏界面的实现,游戏逻辑的实现需要根据具体需求进行编写。
阅读全文