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

java 推箱子游戏 简单例子

2015-12-04 17:11 555 查看
初学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;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: