java 推箱子游戏 简单例子

初学java,使用的是eclipse,在一个3X3的数组中,规定1是人物,2是箱子,3是目的地。只有一个箱子。

使用数字小键盘2468进行4个方向的控制,在箱子没有到达目的地的时候会一直运行,直到箱子到达目的地游戏结束。

废话不多说,上代码

package com.pushbox;

import java.util.Scanner;

public class Main {
	static int[][] map = new int[3][3];
	// 玩家的坐标
	static int XOfMan = 0,YOfMan = 0;
	// 箱子的坐标
	static int XOfBox = 1,YOfBox = 1;
	// 目的地坐标
	static int XOfTar = 2,YOfTar = 2;
	// 游戏结束
	static boolean GameOver = false;
	public static void main(String[] args) {
		// 初始位置
		locatMan();
		locatBox();
		locatTar();
		// 构建地图
		showMap();

		// 键盘输入指令
		Scanner sc = new Scanner(System.in);
		while (!GameOver) {
			System.out.print("请输入方向,2468分别代表↓ ← → ↑:");
			int dir = sc.nextInt();
			move(dir);
			showMap();
			if (XOfBox == XOfTar&& YOfBox == YOfTar) {
				GameOver = true;
				System.out.println("游戏结束!");
			}
		}
		sc.close();
	}

	// 输出画面
	public static void showMap() {
		for (int[] is : map) {
			for (int i : is) {
				System.out.print(i + " ");
			}
			System.out.println();
		}
	}

	// 定位玩家
	public static void locatMan() {
		map[XOfMan][YOfMan] = 1;
	}
	
	// 定位箱子
	public static void locatBox(){
		map[XOfBox][YOfBox] = 2;
	}
	
	// 定位目的地
	public static void locatTar(){
		map[XOfTar][YOfTar] = 3;
	}

	public static void move(int dir) {
		switch (dir) {
		case 2:
			//如果边界上有箱子
			if (map[XOfMan+1][YOfMan]==2) {
				// 如果箱子到了边界
				if (XOfBox == 2) {
					break;
				}
				// 箱子坐标更新
				XOfBox++;
				map[XOfBox][YOfBox] = 2;
			}
			XOfMan++;
			map[XOfMan][YOfMan] = 1;
			map[XOfMan - 1][YOfMan] = 0;
			break;
		case 4:
			//如果边界上有箱子
			if (map[XOfMan][YOfMan-1]==2) {
				// 如果箱子到了边界
				if (YOfBox == 0) {
					break;
				}
				// 箱子坐标更新
				YOfBox--;
				map[XOfBox][YOfBox] = 2;
			}
			YOfMan--;
			map[XOfMan][YOfMan] = 1;
			map[XOfMan][YOfMan + 1] = 0;
			break;
		case 6:
			//如果边界上有箱子
			if (map[XOfMan][YOfMan+1]==2) {
				// 如果箱子到了边界
				if (YOfBox == 2) {
					break;
				}
				// 箱子坐标更新
				YOfBox++;
				map[XOfBox][YOfBox] = 2;
			}
			YOfMan++;
			map[XOfMan][YOfMan] = 1;
			map[XOfMan][YOfMan - 1] = 0;
			break;
		case 8:
			//如果边界上有箱子
			if (map[XOfMan-1][YOfMan]==2) {
				// 如果箱子到了边界
				if (XOfBox == 0) {
					break;
				}
				// 箱子坐标更新
				XOfBox--;
				map[XOfBox][YOfBox] = 2;
			}
			XOfMan--;
			map[XOfMan][YOfMan] = 1;
			map[XOfMan + 1][YOfMan] = 0;
			break;
		default:
			break;
		}
	}
}


你可能感兴趣的:(Java)