import java.util.Scanner;
public class b { public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[][] map = new int[15][15]; //地图
int rx = 1;
int ry = 2;//人的坐标
int xx = 13;
int xy = 12;//箱子的坐标
int mx = 10;
int my = 3;//目的地坐标 map[rx][ry] = 1; // 设置人的坐标位置为1
map[xx][xy] = 2; // 设置箱子的坐标位置为2
map[mx][my] = 3; // 设置目的地的坐标位置为3
boolean tt = false; while(true){
for(int i=0;i<15;i++){
for(int j=0;j<15;j++){
if(map[i][j] == 1){
System.out.print("囚"); // 人物
}else if(map[i][j] == 2){
System.out.print("▲"); // 箱子
}else if(map[i][j] == 3){
System.out.print("★"); // 目的地
}else{
System.out.print("□"); // 地图
}
}
System.out.println(); // 换行
}
if(tt){ // 判断
System.out.print("成功将箱子推到终点!");
break; // 跳出循环
}
System.out.print("要往哪走(w上,s下,a左,d右):"); // 用户输入
String f = input.next(); // 只接收一个字符 if(f.equals("w")){ // 上
// 判断人是否走到边上
if(rx-1<0){
continue;
}
// 判断人是否推着箱子
if(map[rx-1][ry]==2){
//判断箱子是否在边上
if(rx-2<0){
continue;
}
// 判断箱子是否进入目的地
if(map[rx-2][ry] == 3){
tt=true;
}
// 箱子走一步
map[rx-2][ry]=2;
}
// 判断人是否走到目的地里
if(map[rx-1][ry]==3){
map[rx][ry]=0;
rx--;
continue;
}else if(map[rx][ry]==3){// 判断人是否走出目的地
map[rx][ry]=3;
rx--;
map[rx][ry]=1;
continue;
}
map[rx][ry]=0;
rx--;
map[rx][ry]=1; }else if(f.equals("s")){ // 下
// 判断人是否走到边上
if(rx+1>14){
continue;
}
// 判断人是否推着箱子
if(map[rx+1][ry]==2){
//判断箱子是否在边上
if(rx+2>14){
continue;
}
// 判断箱子是否进入目的地
if(map[rx+2][ry] == 3){
tt=true;
}
// 箱子走一步
map[rx+2][ry]=2;
}
// 判断人是否走到目的地里
if(map[rx+1][ry]==3){
map[rx][ry]=0;
rx++;
continue;
}else if(map[rx][ry]==3){// 判断人是否走出目的地
map[rx][ry]=3;
rx++;
map[rx][ry]=1;
continue;
}
map[rx][ry]=0;
rx++;
map[rx][ry]=1; }else if(f.equals("a")){ // 左
// 判断人是否走到边上
if(ry-1<0){
continue;
}
// 判断人是否推着箱子
if(map[rx][ry-1]==2){
//判断箱子是否在边上
if(ry-2<0){
continue;
}
// 判断箱子是否进入目的地
if(map[rx][ry-2] == 3){
tt=true;
}
// 箱子走一步
map[rx][ry-2]=2;
}
// 判断人是否走到目的地里
if(map[rx][ry-1]==3){
map[rx][ry]=0;
ry--;
continue;
}else if(map[rx][ry]==3){// 判断人是否走出目的地
map[rx][ry]=3;
ry--;
map[rx][ry]=1;
continue;
}
map[rx][ry]=0;
ry--;
map[rx][ry]=1;
}else if(f.equals("d")){ // 右
// 判断人是否走到边上
if(ry+1>14){
continue;
}
// 判断人是否推着箱子
if(map[rx][ry+1]==2){
//判断箱子是否在边上
if(ry+2>14){
continue;
}
// 判断箱子是否进入目的地
if(map[rx][ry+2] == 3){
tt=true;
}
// 箱子走一步
map[rx][ry+2]=2;
}
// 判断人是否走到目的地里
if(map[rx][ry+1]==3){
map[rx][ry]=0;
ry++;
continue;
}else if(map[rx][ry]==3){// 判断人是否走出目的地
map[rx][ry]=3;
ry++;
map[rx][ry]=1;
continue;
}
map[rx][ry]=0;
ry++;
map[rx][ry]=1;
} }
}
}

Java控制台版推箱子的更多相关文章

  1. C语言版推箱子

    推箱子源代码初步: #include<stdio.h> #include<conio.h> #include<stdlib.h> #define boolean i ...

  2. jQuery版推箱子游戏详解和源码

    前言 偶然间看到很多用js写游戏的感觉很炫酷的样子,所以就想试试,就看了一些资料和某前端站点的视屏.于是乎就自己动手实践了一下,上推箱子截图 感觉很丑陋,但是功能是实现了.再说貌似大多都是这样的吧,这 ...

  3. JAVA控制台版斗地主

    一.核心思路: 1.首先分析流程: A>B>C>A>B>C>A>B>C 等于  while(true){ A>B>C } 然后完善细节 发牌 ...

  4. 用C#控制台编写 推箱子之类的 坐标移动----之二维坐标

     //首先用枚举 列出方向  上,下,左,右(枚举的最后一位数后不用符号  否则会报错)        public enum dro    {       up = 1,        down = ...

  5. C++ 控制台推箱子小游戏

              // 游戏菜单.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #in ...

  6. hdu.1254.推箱子(bfs + 优先队列)

    推箱子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  7. [HDU 1254] 推箱子

    推箱子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  8. C++学习(九)(C语言部分)之 项目 推箱子游戏

    游戏制作 推箱子 步骤分析 1.模板 2.模板分析 组成元素: 空地 墙 人 目的地 箱子 背景 3.如何操作 通过WASD键盘操作人,推着箱子,到达目的地,游戏结束,如果箱子卡在死角则游戏失败 4. ...

  9. 推箱子 (hdu1254)(bfs双重广搜)

    推箱子 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission ...

随机推荐

  1. MVC母版面,子页的脚本生成在最后

  2. Codeigniter数据库操作

    //查询: $query = $this->db_query("SELECT * FROM table"); ================================ ...

  3. careercup-栈与队列 3.3

    3.3 栈就像叠盘子,当盘子叠得太高时,就会倾斜倒下.因此,在真实的世界中,当一叠盘子 (栈)超过了一定的高度时,我们就会另起一堆,再从头叠起.实现数据结构SetOfStacks 来模拟这种情况.Se ...

  4. Flume NG中的Kafka Channel

    kafka(官网地址:http://kafka.apache.org)是一款分布式消息发布和订阅的系统 在Flume中的KafkaChannel支持Flume与Kafka整合,可以将Kafka当做ch ...

  5. 仿QQ迷你首页(VC++,MFC)(迷你资讯)的开发与实现(源代码)

    由于需求,需要写个类似QQ迷你资讯首页的东西,就花了一点时间写了写,软件效果截图如下: 程序的主要核心代码如下: 程序的全部源代码下载地址:http://download.csdn.net/downl ...

  6. GUI编程笔记(java)07:GUI把文本框的值移到文本域案例

    1.首先我们了解一下我们的需求,如下: 输入“风清扬”,点击“数据转移”,这样的文本会出现到下面的文本域中,这就是我们的需求. 2.代码如下: package cn.itcast_05; import ...

  7. datatables常见报错

    Uncaught TypeError: Cannot read property 'style' of undefined 分析:列表配置 columnDefs 列数不匹配 来自为知笔记(Wiz)

  8. SqlServer循环读取配置

    USE [DB_JP_BaseInfo00] GO /****** Object: StoredProcedure [dbo].[sp_wx_getAppointmentInfo_Str] Scrip ...

  9. javascript闭包分析

    闭包是什么?闭包是Closure,简而言之,闭包就是: 闭包就是函数的局部变量集合,只是这些局部变量在函数返回后会继续存在. 闭包就是就是函数的“堆栈”在函数返回后并不释放,我们也可以理解为这些函数堆 ...

  10. sql存储过程通过ID删除两表中的数据。

    CREATE OR REPLACE PROCEDURE del_p --建立名为del_p 的过程 IS CURSOR get_abid --简历名为get_abid的cursor 用来存放a表的id ...