java推箱子游戏源代码_java实现推箱子小游戏(附源码)
时间: 2023-10-17 14:30:00 浏览: 189
以下是一个简单的Java实现推箱子小游戏的源代码:
```java
import java.util.Scanner;
public class PushBoxGame {
private static int[][] map = { // 地图
{1, 1, 1, 1, 1, 1, 1},
{1, 0, 0, 0, 0, 0, 1},
{1, 0, 2, 0, 0, 0, 1},
{1, 0, 0, 0, 1, 0, 1},
{1, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 1, 1}
};
private static int playerX = 1; // 玩家的初始位置
private static int playerY = 1;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) { // 循环直到推完所有箱子
displayMap();
System.out.print("请输入方向(w/a/s/d):");
String input = scanner.next();
switch (input) {
case "w":
move(-1, 0);
break;
case "a":
move(0, -1);
break;
case "s":
move(1, 0);
break;
case "d":
move(0, 1);
break;
default:
System.out.println("无效输入!");
break;
}
if (isWin()) {
System.out.println("恭喜你,推完了所有箱子!");
break;
}
}
}
private static void displayMap() { // 显示地图
for (int[] row : map) {
for (int cell : row) {
switch (cell) {
case 0:
System.out.print(" ");
break;
case 1:
System.out.print("■");
break;
case 2:
System.out.print("□");
break;
case 3:
System.out.print("※");
break;
}
}
System.out.println();
}
}
private static void move(int dx, int dy) { // 移动
int newX = playerX + dx;
int newY = playerY + dy;
int newBoxX = newX + dx;
int newBoxY = newY + dy;
if (map[newX][newY] == 0 || map[newX][newY] == 3) { // 移动到空地或目标点
playerX = newX;
playerY = newY;
} else if (map[newX][newY] == 2) { // 移动到箱子
if (map[newBoxX][newBoxY] == 0 || map[newBoxX][newBoxY] == 3) { // 箱子可以移动
playerX = newX;
playerY = newY;
map[newX][newY] = 0;
map[newBoxX][newBoxY] = 2;
}
}
}
private static boolean isWin() { // 是否推完所有箱子
for (int[] row : map) {
for (int cell : row) {
if (cell == 2) {
return false;
}
}
}
return true;
}
}
```
这个实现使用一个二维数组来表示地图,其中数字1表示墙,数字2表示箱子,数字3表示目标点,数字0表示空地。玩家的初始位置为(1,1),每次移动时根据输入的方向来计算新的坐标,如果新位置是空地或目标点,则玩家移动到新位置;如果新位置是箱子,则需要判断箱子能否移动,如果能移动,则玩家和箱子一起移动到新位置。判断是否赢得游戏的方法是检查地图上是否还有箱子。
阅读全文