简易推箱子游戏
富涛
2023-12-01
package Homework;
import java.util.Random;
import java.util.Scanner;
public class TuiXiangZi {
public static void main(String[] args) {
/*
* 首先我们创建出来小人可以移动的地图
* 这个地图是一个二维数组
* */
/*---------创建地图,并实例化小人-----------*/
int[][] map = new int[6][6];
/*
* 接下来,我希望从输入确定我的小人在哪个初始位置
* */
Scanner scanner = new Scanner(System.in);
System.out.println("请输入小人的行坐标:从0-"+(map.length-1));
int i = scanner.nextInt();//就是小人的行坐标
if(i>map.length-1 || i<0){
System.err.println("您输入的行数有误,小人坐标脱离了地图");
return;
}
System.out.println("请输入小人的列坐标:从0-"+(map[0].length-1));
int j = scanner.nextInt();//就是小人的列坐标
if(j>map[0].length-1 || j<0){
System.err.println("您输入的列数有误,小人坐标脱离了地图");
return;
}
// System.out.println("请输入箱子的行坐标:从0-"+(map.length-1));
// int m = scanner.nextInt();
// if(m >=map .length || m<0){
// System.out.println("箱子脱离地图");
// return;
// }
// System.out.println("请输入箱子的纵坐标:从0-"+(map[0].length-1));
// int n = scanner.nextInt();
// if(n>=map[m].length || n<0){
// System.out.println("箱子脱离地图");
// return;
// }
// System.out.println("请输入终点的行坐标:从0-"+(map.length-1));
// int x = scanner.nextInt();
// if(x>=map.length || x<0){
// System.out.println("终点脱离地图");
// return;
// }
// System.out.println("请输入终点的纵坐标:从0-"+(map[x].length-1));
// int y = scanner.nextInt();
// if(y>=map[x].length|| y<0){
// System.out.println("终点脱离地图");
// return;
// }
int m =new Random().nextInt(4)+1;
int n =new Random().nextInt(4)+1;
int x =new Random().nextInt(6);
int y =new Random().nextInt(6);
map[i][j] = 1;
map[m][n] = 2;
map[x][y] = 3;
/*
* 我们检查一下目前的地图和小人
* */
while (true) {
System.out.println("小地图目前状态如下");
System.out.println("*************************************************");
for (int k = 0; k < map.length; k++) {
for (int q = 0; q < map[0].length; q++) {
System.out.print(map[k][q]+" ");
}
System.out.println();
}
/*----------检查动作结束------------*/
/*————————————小人行走的逻辑——————————-——*/
System.out.println("请输入小人移动的方向:w向上,s向下,a向左,d向右");
String num = scanner.next();
num.toUpperCase();
switch (num) {
case "w"://这里让小人向上移动
if(m == 0){
System.err.println("箱子到顶了");
}else{
if(m==i-1 && n==j){
map[m-1][n]=map[m][n];
map[m][n]=0;
m=m-1;
}else{
}
}
if (i == 0) {
System.err.println("小人撞壁了,继续撞可能会被打死");
} else {
map[i - 1][j] = map[i][j];
map[i][j] = 0;
i = i - 1;
}
break;
case "s":
if(m == 5){
System.err.println("箱子到顶了");
}else{
if(m==i+1 && n==j){
map[m+1][n]=map[m][n];
map[m][n]=0;
m=m+1;
}else{
}
}
if (i == 5) {
System.err.println("小人撞壁了,继续撞可能会被打死");
} else {
map[i + 1][j] = map[i][j];
map[i][j] = 0;
i = i + 1;
}
break;
case "a":
if(n == 0){
System.err.println("箱子到顶了");
}else{
if(n==j-1 && m==i){
map[m][n-1]=map[m][n];
map[m][n]=0;
n=n-1;
}else{
}
}
if (j == 0) {
System.err.println("小人撞壁了,继续撞可能会被打死");
} else {
map[i][j - 1] = map[i][j];
map[i][j] = 0;
j = j - 1;
}
break;
case "d":
if(n == 5){
System.err.println("箱子到顶了");
}else{
if(n==j+1 && m==i){
map[m][n+1]=map[m][n];
map[m][n]=0;
n=n+1;
}else{
}
}
if (j == 5){
System.err.println("小人撞壁了,继续撞可能会被打死");
} else {
map[i][j + 1] = map[i][j];
map[i][j] = 0;
j = j + 1;
}
break;
default:
System.err.println("you are dead" + " " );
return;
}
if((m==x) && (n==y)){
System.out.println("小地图目前状态如下");
System.out.println("*************************************************");
for (int k = 0; k < map.length; k++) {
for (int q = 0; q < map[0].length; q++) {
System.out.print(map[k][q]+" ");
map[x][y]=5;
}
System.out.println();
}
System.err.println("you win!");
return;
}
}
}
}