您的位置:首页 > 编程语言 > Java开发

Java小游戏之推箱子游戏

2017-12-04 21:59 501 查看

 实现推箱子操作

由于CSDN无法编辑器无法输出可视化符号,使用文字代替符号,需要源码的朋友私信我

符号含义:

篮球:需要占的位置

国旗:被推的箱子

肌肉:推动箱子走的人物

黑人脸:一堵墙,不可通行

空白格:可以通行

规则:

需要将两个国旗推至第二列的第二、第三个位置上,即可完成任务

思路:

需要使用一个二维数组,按照规则将地图打印出来
需要两个变量存储初始位置,并且调用scanner类
使用while循环,循环中需要有每次都打印地图
定义变量接收用户输入的指令
对用户输入的指令进行判断,执行不同的操作
判断是否满足条件,输出结束语句

switch语句判断条件:

在这里假设用户输入的指令是向左移动,其他指令同理

1、肌肉符号已经处于边界,无法移动

2、肌肉符左边是空白格,直接交换位置

3、肌肉符左边是墙,无法行进

4、肌肉符左边是国旗,分为四种情况

国旗的左边是空白格,直接整体向左移动
国旗的左边是墙,无法移动
国旗的左边是篮球,直接整体向左移动
左边是国旗,无法移动

代码实现:

package com.just.test01;

import java.util.Scanner;

import org.omg.CORBA.PUBLIC_MEMBER;

/**
* 推箱子游戏
* @author ning
*
*/
public class jjjj {
public static void main(String[] args) {
String [][] array= {
{"
4000
墙","空白格","肌肉","墙"},
{"空白格","国旗","国旗","墙"},
{"空白格","篮球","空白格","空白格"},
{"空白格","空白格","空白格","空白格"}

};
int a=0,b=2;
//int x=1,y=1;
//int i=1,j=2;
print(array);
Scanner scanner = new Scanner(System.in);
while(!(array[1][1].equals("国旗")&&array[2][1].equals("国旗"))) {
System.out.println("请输出您要前进的方向");
String move = scanner.nextLine();
switch(move) {
case "a":
if(array[a][b-1]=="空白格") {
array[a][b-1]="肌肉";
array[a][b]="空白格";
b--;
}else if(array[a][b-1]=="篮球") {
array[a][b-1]="肌肉";
array[a][b]="篮球";
b--;
}else if(array[a][b-1]=="墙") {

}else if(array[a][b-1]=="国旗"){
//判断$左边是否是边界
//为边界
if((b-1)==0) {

}
//$左边有#
else if(array[a][b-2]=="墙"){

//$左边有0
}else if(array[a][b-2]=="空白格") {
array[a][b-2]="国旗";
array[a][b-1]="肌肉";
array[a][b]="空白格";
b--;
}
else if(array[a][b-2]=="篮球") {
array[a][b-2]="国旗";
array[a][b-1]="肌肉";
array[a][b]="空白格";
b--;
}else if(b==0) {

}else if(array[a][b-2]=="国旗") {

}
}
break;
case "w":
if(array[a-1][b]=="空白格") {
array[a-1][b]="肌肉";
array[a][b]="空白格";
a--;
}else if(array[a-1][b]=="篮球") {
array[a-1][b]="肌肉";
array[a][b]="篮球";
a--;
}else if(array[a-1][b]=="墙") {

}else if(array[a-1][b]=="国旗"){
//判断$左边是否是边界
//为边界
if((a-1)==0) {

}
//$左边有#
else if(array[a-2][b]=="墙"){

//$左边有0
}else if(array[a-2][b]=="空白格") {
array[a-2][b]="国旗";
array[a-1][b]="肌肉";
array[a][b]="空白格";
a--;
}
else if(array[a-2][b]=="篮球") {
array[a-2][b]="国旗";
array[a-1][b]="肌肉";
array[a][b]="空白格";
a--;
}else if(a==0) {

}else if(array[a-2][b]=="国旗") {

}
}
break;
case "s":
if(array[a+1][b]=="空白格") {
array[a+1][b]="肌肉";
array[a][b]="空白格";
a++;
}else if(array[a+1][b]=="篮球") {
array[a+1][b]="肌肉";
array[a][b]="篮球";
a++;
}else if(array[a+1][b]=="墙") {

}else if(array[a+1][b]=="国旗"){
//判断$左边是否是边界
//为边界
if((a+1)==3) {

}
//$左边有#
else if(array[a+2][b]=="墙"){

//$左边有0
}else if(array[a+2][b]=="空白格") {
array[a+2][b]="国旗";
array[a+1][b]="肌肉";
array[a][b]="空白格";
a++;
}
else if(array[a+2][b]=="篮球") {
array[a+2][b]="国旗";
array[a+1][b]="肌肉";
array[a][b]="空白格";
a++;
}else if(a==3) {

}else if(array[a+2][b]=="国旗") {

}
}
break;
case "d":
if(array[a][b+1]=="空白格") {
array[a][b+1]="肌肉";
array[a][b]="空白格";
b++;
}else if(array[a][b+1]=="篮球") {
array[a][b+1]="肌肉";
array[a][b]="篮球";
b++;
}else if(array[a][b=1]=="墙") {

}else if(array[a][b+1]=="国旗"){
//判断$左边是否是边界
//为边界
if((b+1)==3) {

}
//$左边有#
else if(array[a][b+2]=="墙"){

//$左边有0
}else if(array[a][b+2]=="空白格") {
array[a][b+2]="国旗";
array[a][b+1]="肌肉";
array[a][b]="空白格";
b++;

}else if(array[a][b+2]=="篮球") {
array[a][b+2]="国旗";
array[a][b+1]="肌肉";
array[a][b]="空白格";
b++;
}else if(b==3) {

}else if(array[a][b+2]=="国旗") {

}
}
break;
}//switch
print(array);
if(array[1][1]=="国旗"&&array[2][1]=="国旗") {
System.out.println("你赢了");
break;
}

}//while
scanner.close();

}//main
public static void print(String [][]array) {
for(int x =0;x<array.length;x++) {
for(int y =0;y<array[x].length;y++) {
System.out.print(array[x][y]+" ");
}
System.out.println();
}
}
}


最终结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: