Java小游戏之推箱子游戏

 实现推箱子操作

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

符号含义:

篮球:需要占的位置

国旗:被推的箱子

肌肉:推动箱子走的人物

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

空白格:可以通行

规则:

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

思路:

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

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= {
				{"墙","空白格","肌肉","墙"},
				{"空白格","国旗","国旗","墙"},
				{"空白格","篮球","空白格","空白格"},
				{"空白格","空白格","空白格","空白格"}

		};
		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


最终结果:


你可能感兴趣的:(Java)