展开全部

这是我之前写的一篇java实现推箱子算法的文章,简单的给你看一下:

《推箱子游戏》是一款益智32313133353236313431303231363533e59b9ee7ad9431333431353364游戏,游戏目标是搬运工自己来找出到某个位置的最短路径,然后自己走过去。

地图是这个游戏中非常重要的一部分,关于地图的存储,因为有一部分元素是可以重叠放置的,所以用了一个类似二进制的存储方式,就是4种物件分别有是否存在状态,使得用一个数字可以表示多个物件。

1、是否存在目的地

2、是否存在箱子

3、是否存在人

4、是否存在墙壁

这样就解决了地图存储问题。使用short[][]就存下了。

一、在不移动箱子的情况下其实无论人在哪里对于map来说是没有影响的,所以填充可移动区域可以让需要存储地图的数量有一个大的下降。例如之前那副地图:

8888888

8103018

8002008

8320238

8012108

8403008

8888888

经过变换之后就成了:

8888888

8103018

8002008

8320238

8452108

8443008

8888888

这样就把存储量缩小了四分之三。至于怎样填充,相信对图论有一点了解的都可以随便想出方案,我这里用的是BFS。

话不多说,实现代码如下:

二、关于箱子的移动方式,直接用整幅地图的BFS搜索会比较靠谱。因为可以确定箱子的位置和在不移动箱子情况下人能到的位置,所以箱子可移动的位置也就能确定了,再加上之前存储的所有箱子的位置,这样就能计算出箱子每动作一次地图能更新的情况,一次BFS就是每个箱子往不同可移动位置进行一次移动。

三、结束搜索分为三种情况:

所有目的地被填充完毕-------计算完成退出程序。

有箱子被推到角落并且不是在目的地--------说明不是正确的路线,搜索不再往下走。

当前地图在以前已经被达成过--------说明是重复路线,搜索不再往下走。

四、关于地图的存储,用的是hashSet,并重写了equals和hashCode的实现,用来自动判断地图是否重复。(以此保证不重复)

最后完成地图显示问题,每个节点存储自己父亲节点的地址,当节点发现自己已经完成之后根据地址向上查找直到树顶,望采纳,谢谢。

Java 编写推箱子报告_Java推箱子怎么写啊?相关推荐

  1. java编写系统登录界面_java 登陆界面怎么写,连接数据库后

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 界面是 package 界面类; import javax.jws.soap.SOAPBinding.Use; import javax.swing.JB ...

  2. java继承机制实验报告_JAVA继承实验报告.doc

    JAVA继承实验报告 JAVA语言程序设计 实验报告 实验一 实验题目: 面 向 对 象 编 程 指导老师: 卢照 专业班级:计算机科学与技术系1106班 姓 名:*****) 2014年3月20日 ...

  3. java迷宫实训报告_Java综合实训报告-迷宫.doc

    Java综合实训报告-迷宫 目 录 1.需求分析2 2.概要设计2 2.1功能图3 2.2系统流程图4 3.详细设计4 3.1类关系图5 3.2类设计图5 类Maze5 类MazeGrid6 3.3主 ...

  4. java员工管理系统实验报告_java员工管理系统实验报告怎么写?员工管理系统的风险控制有哪些?...

    员工管理系统在设计好后,要先试运行,实验成功后,才可以使用的.那大家知道java员工管理系统实验报告怎么写吗?还有,员工管理系统的风险控制有哪些呢?下面就让小编带大家一起来了解一下吧. java员工管 ...

  5. java游戏课程设计报告_java课程设计报告游戏_相关文章专题_写写帮文库

    时间:2019-05-14 00:00:44 作者:admin 课 程 设 计 课程名称 Java语言课程设计 题目名称 人事管理系统的设计与实现 学生学院 应用数学学院 专业班级 学 号 学生姓名 ...

  6. java编写类骑士游历_java课程设计骑士游历程序的开发

    java课程设计骑士游历程序的开发 JAVA程序设计 课程设计报告 课 题: 骑士游历程序的开发 姓 名: 学 号: 同组姓名: 专业班级: 指导教师: 设计时间: 2013.06.10 评阅意见: ...

  7. java程序设计教程实验报告_java程序设计课程--实验报告-实验13.doc

    java程序设计课程--实验报告-实验13.doc 还剩 12页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: ...

  8. java弹弹球实验报告_Java弹球游戏实验报告—chen

    Java弹球游戏实验报告-chen 课 程 设 计 报 告 题 目 弹球小游戏 姓 名 方成 学 号 20 专 业 java 指导教师 陈华恩 2013年 12 月 30 目录 一.实验目的2 二.需 ...

  9. java上机实验实验报告_Java实验二实验报告.doc

    Java实验二实验报告 本科学生实验报告 ( 二 ) 姓名 学院 计算机科学学院 专业 计算机科学与技术 班级 实验课程名称 Java面向对象设计 试验时间 2012 年 10 月 14 日 指导教师 ...

最新文章

  1. OAuth的机制原理讲解及开发流程
  2. 远程java接口说明
  3. java 相加的函数_Java8 Collectors求和功能的自定义扩展操作
  4. 让理科生沉默,让文科生落泪的文史综合题
  5. Cannot resolve method ‘call(java.lang.String, org.apache.flink.table.api.ApiExpression)‘
  6. EncryptionHelper.cs(20170223)
  7. 001_关于选中的磁盘具有MBR分区表。在 EFI 系统上,Windows 只能安装到 GPT 磁盘。问题解决
  8. 游戏开发经验分享:我所理解的打击感
  9. string的一些基本操作和骚操作
  10. 这个神器5秒20个爆款标题,关键还免费,做自媒体不会写标题?
  11. BT6无线破解+局域网共享(附BT6下载地址)
  12. MD4 算法代码实现
  13. n-3000系列串口服务器,串口转网络,网络转串口
  14. Java中使用多态的好处和弊端及其举例
  15. 五大学科竞赛奖项&106所综合评价院校对照表(分省统计)
  16. push大法破解登录框
  17. 阿里云个人版,企业版免费用,满足这些条件就可以申请,你满足吗...
  18. face_recognition IndexError: list index out of range
  19. <2021SC@SDUSC>博客(9)山东大学软件工程应用与实践Jpress代码分析(8)
  20. Kubernetes web界面kubernetes-dashboard安装

热门文章

  1. LeetCode刷题——字符串转换整数
  2. android小程序下线,关闭小程序
  3. pcb结构链表_lwip中tcp_pcb结构体及其组成链表
  4. 【活动预告】数据资产化论坛
  5. 【离散数学】实验 旅行路线规划问题
  6. 【Java】区分BigDecimal的toString()和toPlainString()
  7. 【Java】浅析八种基本类型
  8. 详解Spring框架的依赖注入
  9. 如何理解面向对象建模语言UML?
  10. 为什么要做短视频秒播优化