网上搜索了一下,有好多人现成的产品,不少国产的。编写这个程序只是为了回忆一下算法。不能丢了。
自动求解有俩种方案:一个是求最小行走步骤,一个是求最小推箱子数目。
第一种算法简单些,只要将小人推动的四个方向进行广度优先搜索,通过各种砍掉各种不对的情况来减少搜索数量,但搜索的数量仍然非常巨大。
以下情况可砍掉:
1、前方是墙;
2、前方是箱子,但箱子的前方是墙或者箱子;
3、行动方向和上一步骤的方向是反方向,且上一步没有推箱子;
4、如果小人移动造成推动箱子,那么检查移动后形成的棋盘:
    4.1 、以 被推动的棋子 为中心,有没有出现以下死棋。
■■□   □■■    □□□   □□□
■◆□   □◆■    ■◆□   □◆■
□□□   □□□    ■■□   □■■

■ 表示这个位置可能是墙或者箱子;
◆ 表示“被推动的棋子”在推动后所在的位置;
□ 仅为方便理解图片,无任何其他意义。

如果出现上面的情况,就是死棋。
     4.2、比较移动后的步骤和之前的步骤是否出项相同的棋局。

注:这里所指“前方”是指行走方向的前方。

第二种方案是求最小推箱数,这个算法上复杂一些,
以小人为起点,做“油漆桶”处理,什么叫“油漆桶”处理呢,看看画笔软件中使用“油漆桶”功能,他可以渗透所有空白的地方。通过此功能,找到所有可以“接触”到的箱子,对所有这些箱子推动,广度优先算法形成搜索树。然后和第一种方案基本相似的方式砍掉多余的树枝。

这个方案我还没有实施,所以还没有想的很具体,先实现第一个在说。
希望有兴趣的朋友可以给意见,告诉我还有那些死棋可以判断。

转载于:https://www.cnblogs.com/tansm/archive/2005/06/02/166490.html

正在编写推箱子游戏的自动求解程序相关推荐

  1. 推箱子游戏的自动求解

    导读: 推箱子游戏的自动求解 简介 推箱子,又称搬运工,是一个十分流行的单人智力游戏.玩家的任务是在一个仓库中操纵一个搬运工人,将N个相同的箱子推到N个相同的目的地.推箱子游戏出现在计算机中最早起源于 ...

  2. 使用Rust编写推箱子游戏基础篇

    使用Rust编写推箱子游戏教程已翻译完成 项目地址 在线阅读 推箱子是个啥样的游戏嘞? 没玩过推箱子游戏?想当年用诺基亚黑白屏手机的时候就有这款游戏了.你可以下载一个玩一下或者点这里看下维基百科的介绍 ...

  3. c语言推箱子游戏实习报告,用C语言编写推箱子游戏

    本文实例为大家分享了C语言推箱子游戏的具体实现代码,供大家参考,具体内容如下 #include #include #include #include //行和列 #define ROW 10 #def ...

  4. Android开发入门——推箱子游戏开发实战(十二)

    绘制游戏局面 本文是推箱子游戏程序开发的第七步.系列文章前五篇描述准备工作,故本文编号是(十二).本文讲解如何绘制游戏局面. 本文目标 本文讲解如何绘制游戏局面.游戏局面的示例如图1,图2所示.这两幅 ...

  5. PLC也能制作小游戏----Codesys编写推箱子小游戏

    1.序言 前文已介绍,Codesys编程软件拥有的各种编译方式,以及强大的可视化功能,完全可以实现类似的小游戏程序编写,让疲惫的工控人员在调机的空闲之余可以休闲下,本文编写另一个小游戏,也是十几年前的 ...

  6. Java 编写推箱子报告,推箱子游戏用java怎么去写

    推箱子游戏用java怎么去写 发布时间:2020-06-22 16:31:07 来源:亿速云 阅读:100 作者:清晨 这篇文章将为大家详细讲解有关推箱子游戏用java怎么写,小编觉得挺实用的,因此分 ...

  7. 基于java的推箱子游戏系统设计与实现(项目报告+答辩PPT+源代码+部署视频)

    项目报告 基于Java的推箱子游戏设计与实现 社会在进步,人们生活质量也在日益提高.高强度的压力也接踵而来.社会中急需出现新的有效方式来缓解人们的压力.此次设计符合了社会需求,Java推箱子游戏可以让 ...

  8. 推箱子java下载_Java实现简单推箱子游戏

    本文实例为大家分享了Java实现简单推箱子游戏的具体代码,供大家参考,具体内容如下 *编写一个简易的推箱子游戏,使用10*8的二维字符数据表示游戏画面,H表示墙壁; &表示玩家角色: o表示箱 ...

  9. 一文教你使用java开发一款推箱子游戏

    导读:社会在进步,人们生活质量也在日益提高.高强度的压力也接踵而来.社会中急需出现新的有效方式来缓解人们的压力.此次设计符合了社会需求,Java推箱子游戏可以让人们在闲暇之余,体验游戏的乐趣.具有操作 ...

最新文章

  1. Django源码分析1:创建项目和应用分析
  2. 对比学习(Contrastive Learning)综述
  3. 【iCore组合式双核心开发板教程】通过STM32 FSMC 读写FPGA Verilog 例子
  4. java分布式 mq_分布式系统消息中间件—RabbitMQ的使用进阶篇
  5. Entity Framework在三层架构中的使用
  6. fastslam matlab,fastslam 快速定位和构图的源码,一个简单的例子,3D建模,可以用作学习智能机器人自主移动 matlab 272万源代码下载- www.pudn.com...
  7. 全世界云计算宕机和中断[2013年-2014年集锦]
  8. 清理数据_Python数据清理终极指南(2020版)
  9. 小米max2怎么长截屏?
  10. CoVaR计算手册-动态CoVaR模型-数据、代码、步骤
  11. python caffe框架_caffe框架基础
  12. SPSS——统计描述
  13. 主成分分析和因子分析的理论与速成应用丨R语言和SPSS比较案例
  14. LabWindows操作Excel
  15. C1任务01-植物大战僵尸修改游戏存档(小白也能看懂)
  16. springboot毕设项目东莞汉庭酒店的酒店管理系统的设计与实现4ccnv(java+VUE+Mybatis+Maven+Mysql)
  17. 【金猿人物展】数睿数据创始人兼CEO穆鸿:大数据价值创造关键在于应用普惠...
  18. android 截屏 简书,Android 内置应用截屏方法
  19. kafka-topics.sh java.rmi.server.ExportException: Port already in use: 5555
  20. 计算机毕业设计php小说阅读网站

热门文章

  1. 公路多孔箱涵设计_【公路常识中篇】公路路基边坡滑坡防护设计和预防
  2. linux mysql服务器安装_Linux服务器MySQL安装
  3. c++中求解非线性方程组_齐次线性方程组的基础解系的简便算法
  4. pat 乙级 1032 挖掘机技术哪家强(C++)
  5. 飞畅科技教你如何选择合适的PoE交换机?
  6. 【渝粤教育】国家开放大学2018年秋季 0266-22T设计构成 参考试题
  7. [渝粤教育] 中国地质大学 结构力学 复习题
  8. [渝粤教育] 西南科技大学 施工组织 在线考试复习资料
  9. 64位linux并行计算大气模型效率优化研究,64位Linux并行计算大气模型效率优化研究...
  10. nodejs接收表单写入mysql_NodeJS提交表单存数据库(转)