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. poj 1226

    跟3294比较类似,但是不需要输出具体的串,比较简单,只要把串反转连接上去解法就一样了. #include <iostream> #include <cstdio> #incl ...

  2. GA遗传算法解析

    LinJM  @HQU 谈及遗传算法,我首先想到的就是孟德尔的豌豆实验.当然,遗传算法实质上并不能用豌豆实验说明,豌豆实验探讨了分离定律和自由组合定律,而遗传算法所借鉴的并不是这两个定律.遗传算法,简 ...

  3. 在内核外编写的linux驱动程序MAKEFILE

    一般都是这么写: ifneq ($(KERNELRELEASE),) obj-m :=  else KERNELDIR ?= /lib/modules/$(shell uname -r)/build ...

  4. MFC 一个类訪问还有一个类成员对象的成员变量值

    作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/35263857 MFC中一个类要訪问另外一个类的的对象的成员变量值,这就须要获得 ...

  5. android之tween动画详解

    android中一共提供了两种动画,其一便是tween动画,tween动画通过对view的内容进行一系列的图像变换(包括平移,缩放,旋转,改变透明度)来实现动画效果,动画效果的定义可以使用xml,也可 ...

  6. Linux下安装Python pip

    在Python环境下,pip提供类似yum一样的下载方式,比easy_install方便的多. 1.下载get-pip.py wget https://bootstrap.pypa.io/get-pi ...

  7. HIdernate入门

    简介: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使 ...

  8. C#基础入门--关于C#背景介绍以及变量相关

    在正式探索C#的奥秘之前,我们先谈一谈关于学习方法的问题吧.你会不会有这样的感悟,自己努力奋斗得到的东西倍加珍惜,飘到眼前的,却不屑一顾.我认为,学习的整个历程亦是如此.在学习过程中,只有我们遇到了问 ...

  9. 整理收藏一份PHP高级工程师的笔试…

    注:本文转自 http://www.icultivator.com/p/5535.html 注:本文转自 http://www.yiichina.com/tutorial/57 整理了一份PHP高级工 ...

  10. 关于自己的ES6使用姿势

    ES6今年开始学的,从看文档到实践,以下是自己使用过的一些ES6的东西: 1:for-of 语法: 最喜欢的还是它支持了break/continue的语法,而且还修改了for-in的缺陷,简要写法: ...