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. iOS OC开发代码规范

    1.变量.类名.函数名 使用驼峰命名法 2.尽量使用完整的单词命名,尽量不采用 缩写单词 3.类名使用大写字母打头,前缀统一加上HH 例如:HHHomePageController 4.类的成员变量使 ...

  2. Cocos2d-x 3.1.1 学习日志4--cocos2d-x解决中文乱码问题的几种办法

    做个打飞机的游戏,由于版本号太新,网上基本没有教教程,我的版本号是cocos2d-x 3.1.1的.今天遇到cocos2dx中中文乱码的问题.无奈仅仅好Google百度寻求答案,明确了这个问题的缘由. ...

  3. SQL SERVER 中如何将NULL转换为0

    select isnull(fieldname,0) from tablename 如果字段fieldname的值是null,则结果是0

  4. requireJS(二)

    一.前言 requireJS(一) 本篇主要整理requirejs的一些用法,相对比较零散. 实例目录 二.优化 requirejs建议我们给每一个模块书写一个js文件.但是这样会增加网站的http请 ...

  5. SQL Server与Oracle对比学习:表的管理和组织

    http://blog.csdn.net/weiwenhp/article/details/8088979 我们知道数据库,顾名思义.最重要的东东就是管理数据,而数据在系统中主要是保存在表(table ...

  6. GitHub具体教程

    GitHub具体教程 Table of Contents 1 Git具体教程 1.1 Git简单介绍 1.1.1 Git是何方神圣? 1.1.2 重要的术语 1.1.3 索引 1.2 Git安装 1. ...

  7. hadoop错误Cannot load libcrypto.so (libcrypto.so cannot open shared object file No such file or directory)

    报如下错误 解决方法: 1.使用hadoop checknative –a命令检查,报如下错误 2.使用如下命令建立libcrypto.so文件的符号链接 如果,您认为阅读这篇博客让您有些收获,不妨点 ...

  8. Oracle 设置archivelog错误解决方案

    在Oracle 数据库的实际应用中,开启archivelog模式是必不可少的,但是在设置archivelog的过程中,可能因为不小心出现错误,导致数据库无法启动,本案例就是一种情况. 误操作现象: 设 ...

  9. RedHat7搭建MongoDB

    yum安装MongoDB 添加MongoDB源# vi /etc/yum.repos.d/mongodb-org-3.0.repo [mongodb-org-3.0] name=MongoDB Rep ...

  10. python 内置函数和表达式

    对于简单的函数来说,可以使用类似于三元运算来表示,即: lambda表达式 格式: lambda [arg1[, arg2, ... argN]]: expression   先来看看三元表达式 #普 ...