Java控制台版推箱子
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控制台版推箱子的更多相关文章
- C语言版推箱子
推箱子源代码初步: #include<stdio.h> #include<conio.h> #include<stdlib.h> #define boolean i ...
- jQuery版推箱子游戏详解和源码
前言 偶然间看到很多用js写游戏的感觉很炫酷的样子,所以就想试试,就看了一些资料和某前端站点的视屏.于是乎就自己动手实践了一下,上推箱子截图 感觉很丑陋,但是功能是实现了.再说貌似大多都是这样的吧,这 ...
- JAVA控制台版斗地主
一.核心思路: 1.首先分析流程: A>B>C>A>B>C>A>B>C 等于 while(true){ A>B>C } 然后完善细节 发牌 ...
- 用C#控制台编写 推箱子之类的 坐标移动----之二维坐标
//首先用枚举 列出方向 上,下,左,右(枚举的最后一位数后不用符号 否则会报错) public enum dro { up = 1, down = ...
- C++ 控制台推箱子小游戏
// 游戏菜单.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #in ...
- hdu.1254.推箱子(bfs + 优先队列)
推箱子 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
- [HDU 1254] 推箱子
推箱子 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
- C++学习(九)(C语言部分)之 项目 推箱子游戏
游戏制作 推箱子 步骤分析 1.模板 2.模板分析 组成元素: 空地 墙 人 目的地 箱子 背景 3.如何操作 通过WASD键盘操作人,推着箱子,到达目的地,游戏结束,如果箱子卡在死角则游戏失败 4. ...
- 推箱子 (hdu1254)(bfs双重广搜)
推箱子 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission ...
随机推荐
- poj 1226
跟3294比较类似,但是不需要输出具体的串,比较简单,只要把串反转连接上去解法就一样了. #include <iostream> #include <cstdio> #incl ...
- GA遗传算法解析
LinJM @HQU 谈及遗传算法,我首先想到的就是孟德尔的豌豆实验.当然,遗传算法实质上并不能用豌豆实验说明,豌豆实验探讨了分离定律和自由组合定律,而遗传算法所借鉴的并不是这两个定律.遗传算法,简 ...
- 在内核外编写的linux驱动程序MAKEFILE
一般都是这么写: ifneq ($(KERNELRELEASE),) obj-m := else KERNELDIR ?= /lib/modules/$(shell uname -r)/build ...
- MFC 一个类訪问还有一个类成员对象的成员变量值
作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/35263857 MFC中一个类要訪问另外一个类的的对象的成员变量值,这就须要获得 ...
- android之tween动画详解
android中一共提供了两种动画,其一便是tween动画,tween动画通过对view的内容进行一系列的图像变换(包括平移,缩放,旋转,改变透明度)来实现动画效果,动画效果的定义可以使用xml,也可 ...
- Linux下安装Python pip
在Python环境下,pip提供类似yum一样的下载方式,比easy_install方便的多. 1.下载get-pip.py wget https://bootstrap.pypa.io/get-pi ...
- HIdernate入门
简介: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使 ...
- C#基础入门--关于C#背景介绍以及变量相关
在正式探索C#的奥秘之前,我们先谈一谈关于学习方法的问题吧.你会不会有这样的感悟,自己努力奋斗得到的东西倍加珍惜,飘到眼前的,却不屑一顾.我认为,学习的整个历程亦是如此.在学习过程中,只有我们遇到了问 ...
- 整理收藏一份PHP高级工程师的笔试…
注:本文转自 http://www.icultivator.com/p/5535.html 注:本文转自 http://www.yiichina.com/tutorial/57 整理了一份PHP高级工 ...
- 关于自己的ES6使用姿势
ES6今年开始学的,从看文档到实践,以下是自己使用过的一些ES6的东西: 1:for-of 语法: 最喜欢的还是它支持了break/continue的语法,而且还修改了for-in的缺陷,简要写法: ...