怎么用java写推箱子小游戏
时间: 2023-10-24 18:17:22 浏览: 72
java小游戏 推箱子 java小游戏 推箱子
5星 · 资源好评率100%
推箱子小游戏是一个经典的益智游戏,玩家需要将箱子推到指定的位置才能过关。以下是一个简单的Java代码示例,实现了推箱子小游戏的基本功能。
首先,我们需要定义一个地图类来表示游戏的地图,包括地图的大小、障碍物位置、目标位置、箱子位置等信息。
```java
public class Map {
private int width; // 地图宽度
private int height; // 地图高度
private int[][] map; // 地图数据,0表示空地,1表示障碍物,2表示目标位置,3表示箱子位置
public Map(int width, int height, int[][] map) {
this.width = width;
this.height = height;
this.map = map;
}
public int getWidth() {
return width;
}
public int getHeight() {
return height;
}
public int[][] getMap() {
return map;
}
public void setMap(int[][] map) {
this.map = map;
}
}
```
接下来,我们需要定义一个玩家类来表示玩家,包括玩家的位置信息和移动方法。
```java
public class Player {
private int x; // 玩家横坐标
private int y; // 玩家纵坐标
public Player(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public void move(int dx, int dy) {
// 玩家移动方法,dx表示横向移动距离,dy表示纵向移动距离
this.x += dx;
this.y += dy;
}
}
```
最后,我们需要定义一个游戏类来控制游戏的流程,包括初始化地图、显示地图、处理玩家移动等。
```java
import java.util.Scanner;
public class Game {
private Map map; // 地图
private Player player; // 玩家
public Game(Map map, Player player) {
this.map = map;
this.player = player;
}
public void initMap() {
// 初始化地图
int[][] m = {
{1, 1, 1, 1, 1},
{1, 0, 3, 2, 1},
{1, 0, 0, 0, 1},
{1, 2, 3, 0, 1},
{1, 1, 1, 1, 1}
};
map.setMap(m);
}
public void showMap() {
// 显示地图
int[][] m = map.getMap();
for (int i = 0; i < map.getHeight(); i++) {
for (int j = 0; j < map.getWidth(); j++) {
if (i == player.getY() && j == player.getX()) {
System.out.print("P"); // 玩家位置
} else if (m[i][j] == 0) {
System.out.print(" "); // 空地
} else if (m[i][j] == 1) {
System.out.print("#"); // 障碍物
} else if (m[i][j] == 2) {
System.out.print("O"); // 目标位置
} else if (m[i][j] == 3) {
System.out.print("*"); // 箱子位置
}
}
System.out.println();
}
}
public boolean isWin() {
// 判断是否过关
int[][] m = map.getMap();
for (int i = 0; i < map.getHeight(); i++) {
for (int j = 0; j < map.getWidth(); j++) {
if (m[i][j] == 2 || m[i][j] == 3) {
return false; // 还有目标位置或箱子位置未被覆盖
}
}
}
return true;
}
public void run() {
Scanner scanner = new Scanner(System.in);
while (true) {
showMap();
if (isWin()) {
System.out.println("恭喜你过关了!");
break;
}
System.out.print("请输入移动方向:");
String input = scanner.nextLine();
int dx = 0, dy = 0;
if (input.equals("w")) {
dy = -1; // 上
} else if (input.equals("s")) {
dy = 1; // 下
} else if (input.equals("a")) {
dx = -1; // 左
} else if (input.equals("d")) {
dx = 1; // 右
}
int[][] m = map.getMap();
int x = player.getX() + dx;
int y = player.getY() + dy;
if (m[y][x] == 0 || m[y][x] == 2) {
// 空地或目标位置,玩家可以移动
player.move(dx, dy);
} else if (m[y][x] == 3) {
// 箱子位置,判断箱子移动是否合法
int bx = x + dx;
int by = y + dy;
if (m[by][bx] == 0 || m[by][bx] == 2) {
// 箱子可以移动
player.move(dx, dy);
m[y][x] = 0;
m[by][bx] = 3;
}
}
}
}
public static void main(String[] args) {
Map map = new Map(5, 5, new int[5][5]);
Player player = new Player(2, 1);
Game game = new Game(map, player);
game.initMap();
game.run();
}
}
```
上述代码实现了一个简单的推箱子小游戏,玩家可以通过输入w、s、a、d来移动,将箱子推到目标位置即可过关。可以根据需要进行修改和扩展。
阅读全文