import java.util.Scanner;
//推箱子小游戏试写
public class games {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
char[][] map = new char[8][10];//地图大小
int x = 1;
int y = 1;///玩家坐标
int l = 2;
int k = 2;//箱子坐标
boolean isFlag = true;
for (int i = 0; i < map.length; i++) {
map[i][0] = 'H';
map[i][9] = 'H';
map[0][i] = 'H';
map[7][i] = 'H';
map[0][8] = 'H';
map[7][8] = 'H';
}
map[1][3] = 'H';// 地图内墙壁
map[2][3] = 'H';
map[3][3] = 'H';
map[2][5] = 'H';
map[3][5] = 'H';
map[3][6] = 'H';
map[3][8] = 'H';
map[4][8] = 'H';
map[6][4] = 'H';
map[5][4] = 'H';
map[5][5] = 'H';
map[5][6] = 'H';
map[x][y] = '&';// 玩家角色
map[l][k] = 'o';// 箱子
map[6][5] = '*';// 目的地
while (isFlag) {//循环打印游戏
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[0].length; j++) {
System.out.print(" " + map[i][j]);
}
System.out.println();
}
System.out.println("(W向上 A向左 S向下 D向右)请输入指令:");
String order = scan.nextLine();//玩家输入指令
switch (order.toLowerCase()) {
case "a":
if (map[x][y - 1] == 'H') {//往左走情况一有墙壁
map[x][y] = map[x][y];
}
else if(map[x][y - 1] != 'H' && map[x][y - 1] != 'o') {//往左走情况二
map[x][y - 1] = '&';
map[x][y] = 0;
y--;
}
if (map[x][y - 1] == 'o'&&map[x][y-2]!='H') {//往左走碰到箱子情况三
map[x][y] = 0;//原位置为空
map[x][y - 1] = '&';//下一个位置赋给
map[l][k - 1] = 'o';
map[l][k] = 0;
k--;//箱子左移
y--;//玩家左移
}
if(map[l][k]==map[6][5]){
isFlag=false;
System.out.println("游戏结束");
}
break;
case "w":
if (map[x - 1][y] == 'H') {//往上走情况一
map[x][y] = map[x][y];
}
if (map[x - 1][y] != 'H' && map[x - 1][y] != 'o') {//往上走情况二
map[x - 1][y] = '&';
map[x][y] = 0;
x--;
}
if (map[x - 1][y] == 'o'&&map[x - 2][y] != 'H') {//往上走情况三
map[l - 1][k] = 'o';
map[l][k] = 0;//空
map[x - 1][y] = '&';
map[x][y] = 0;
l--;//箱子上移
x--;//玩家上移
}
if(map[l][k]==map[6][5]){
isFlag=false;
System.out.println("游戏结束");
}
break;
case "s":
if (map[x + 1][y] == 'H') {//向下移动情况一
map[x][y] = map[x][y];
}
else if (map[x + 1][y] != 'H' && map[x + 1][y] != 'o') {//向下移动情况二
map[x + 1][y] = '&';
map[x][y] = 0;
x++;
}
else if (map[x + 1][y] == 'o'&&map[x + 2][y] != 'H') {//向下移动情况三碰到箱子
//箱子下一个位置不是墙壁
map[l + 1][k] = 'o';//空
map[l][k] = 0;
map[x + 1][y] = '&';
map[x][y] = 0;
l++; //箱子移动
x++;//玩家移动
}
if(map[l][k]==map[6][5]){
isFlag=false;
System.out.println("游戏结束");
}
break;
case "d"://向右
if (map[x][y + 1] == 'H') {//情况一有墙
map[x][y] = map[x][y];
}
else if (map[x][y + 1] != 'H' && map[x][y + 1] != 'o') {//情况二无墙也不是箱子
map[x][y] = 0;
map[x][y + 1] = '&';
y++;
}
else if (map[x][y + 1] == 'o'&&map[x][y + 2] != 'H') {//情况三碰见箱子//无墙壁
map[l][k + 1] = 'o';
map[l][k] = 0;
map[x][y + 1] = '&';
map[x][y]=0;
k++;
y++;
}
if(map[l][k]==map[6][5]){
isFlag=false;
System.out.println("游戏结束");
}
break;
}
}
}
}
推箱子小游戏试写
最新推荐文章于 2025-05-15 14:30:00 发布
本文介绍了使用Java编写的一个推箱子小游戏,通过Scanners类获取用户输入,控制玩家角色(&)和箱子(o)在地图(map)上的移动,目标是将箱子移动到指定位置(*)。游戏逻辑包括对上下左右四个方向的判断和箱子的移动规则。
7496

被折叠的 条评论
为什么被折叠?



