简易版“推箱子”游戏
此项目适合java初学者练习,需要用到二维数组,循环语句,判断语句等。
package game;
import java.util.Random;
import java.util.Scanner;
public class txz {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
Random r = new Random();
//定义一个二维数组表示地图:十行十列
int [][]a=new int[10][10];
//箱子的随机坐标,箱子初始化不能在边缘。
int xh=r.nextInt(8)+1;
int xl=r.nextInt(8)+1;
//人的随机坐标
int rh=r.nextInt(10);
int rl=r.nextInt(10);
// 终点的随机坐标
int zh=r.nextInt(10);
int zl=r.nextInt(10);
// 用一个数字代表:箱子:3 人:1 终点:2
a[xh][xl]=3;
a[rh][rl]=1;
a[zh][zl]=2;
//循环次数不确定用while循环
while(true) {
//保证人走过终点后,终点还在
a[zh][zl]=2;
//将定义好的‘地图’打印出来
//箱子:■ 人:▲ 终点:●
for(int i=0;i<a.length;i++) {
for(int j=0;j<a[i].length;j++) {
switch(a[i][j]){
case 3://要推动的箱子
System.out.print("■");
break;
case 1://人
System.out.print("▲");
break;
case 2://终点
System.out.print("●");
break;
default://空白
System.out.print("□");
}
}
System.out.println();
}
/*当终点的横坐标和纵坐标等于箱子的横坐标和纵坐标时
,成功将箱子推向终点,循环结束*/
if(xh==zh&&xl==zl) {
System.out.println("恭喜你成功把箱子推到终点");
break;
}
System.out.println("输入w、s、a、d分别代表人向上、下、左、右移动");
//接收用户操作信息
String s=sc.next();
switch(s) {
case "w":
if(rh>0) {//人的横坐标大于0才能向上移动
//遇到箱子是
if(rl==xl&&rh==xh+1) {//人在箱子下方时,才可以向上推箱子
if(xh>0) {
xh--;//箱子上移
a[xh][xl]=3;//箱子图形也跟着上移
a[rh][rl]=0;//人原来的坐标变空白
rh--;//人上移
a[rh][rl]=1;//人图形也要上移
}
//没遇到箱子时
}else {
a[rh][rl]=0;//人原来的坐标变空白
rh--;//人上移
a[rh][rl]=1;//人图形也要上移
}
}
break;
//下面操作和向上移动同理,如有疑问私信或评论,我看到会回复的~
case "s":
if(rh<9) {
if(rl==xl&&rh==xh-1) {
if(xh<9){
xh++;
a[xh][xl]=3;
a[rh][rl]=0;
rh++;
a[rh][rl]=1;
}
}else {
a[rh][rl]=0;
rh++;
a[rh][rl]=1;
}
}
break;
case "a":
if(rl>0) {
if(rh==xh&&rl==xl+1) {
if(xl>0) {
xl--;
a[xh][xl]=3;
a[rh][rl]=0;
rl--;
a[rh][rl]=1;
}
}else {
a[rh][rl]=0;
rl--;
a[rh][rl]=1;
}
}
break;
case "d":
if(rl<9) {
if(rh==xh&&rl==xl-1) {
if(xl<9) {
xl++;
a[xh][xl]=3;
a[rh][rl]=0;
rl++;
a[rh][rl]=1;
}
}else {
a[rh][rl]=0;
rl++;
a[rh][rl]=1;
}
}
break;
default://提示用户输入错误操作按钮
System.out.println("会不会玩?");
break;
}
}
}
}