帮我用Java写一个推箱子的小游戏
时间: 2023-09-26 20:15:13 浏览: 83
好的,推箱子游戏的Java代码如下:
```java
import java.util.Scanner;
public class PushBoxGame {
// 地图数组
private static char[][] map = {
{'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'},
{'#', ' ', ' ', ' ', '#', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', '#', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', 'B', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', '#', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', '#', ' ', ' ', ' ', ' ', '#'},
{'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'}
};
// 玩家坐标
private static int playerX = 1;
private static int playerY = 1;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
showMap();
System.out.print("请输入方向(w:上 s:下 a:左 d:右):");
String direction = scanner.next();
if (tryMove(direction)) {
if (isWin()) {
showMap();
System.out.println("恭喜你,游戏胜利!");
break;
}
} else {
System.out.println("不能移动到该位置!");
}
}
}
// 显示地图
private static void showMap() {
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[0].length; j++) {
if (i == playerY && j == playerX) {
System.out.print("P");
} else {
System.out.print(map[i][j]);
}
}
System.out.println();
}
}
// 尝试移动
private static boolean tryMove(String direction) {
int targetX = playerX;
int targetY = playerY;
switch (direction) {
case "w":
targetY--;
break;
case "s":
targetY++;
break;
case "a":
targetX--;
break;
case "d":
targetX++;
break;
}
if (map[targetY][targetX] == ' ') {
playerX = targetX;
playerY = targetY;
return true;
} else if (map[targetY][targetX] == 'B') {
int boxTargetX = targetX;
int boxTargetY = targetY;
switch (direction) {
case "w":
boxTargetY--;
break;
case "s":
boxTargetY++;
break;
case "a":
boxTargetX--;
break;
case "d":
boxTargetX++;
break;
}
if (map[boxTargetY][boxTargetX] == ' ') {
map[targetY][targetX] = ' ';
map[boxTargetY][boxTargetX] = 'B';
playerX = targetX;
playerY = targetY;
return true;
}
}
return false;
}
// 判断是否胜利
private static boolean isWin() {
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[0].length; j++) {
if (map[i][j] == 'B') {
return false;
}
}
}
return true;
}
}
```
这个推箱子游戏使用二维字符数组表示地图,P代表玩家,#代表墙,B代表箱子。玩家可以通过输入w、s、a、d来控制移动方向,如果移动到箱子位置,可以将箱子推动。当所有箱子都被推到目标位置时,游戏胜利。
阅读全文