正在编写推箱子游戏的自动求解程序
自动求解有俩种方案:一个是求最小行走步骤,一个是求最小推箱子数目。
第一种算法简单些,只要将小人推动的四个方向进行广度优先搜索,通过各种砍掉各种不对的情况来减少搜索数量,但搜索的数量仍然非常巨大。
以下情况可砍掉:
1、前方是墙;
2、前方是箱子,但箱子的前方是墙或者箱子;
3、行动方向和上一步骤的方向是反方向,且上一步没有推箱子;
4、如果小人移动造成推动箱子,那么检查移动后形成的棋盘:
4.1 、以 被推动的棋子 为中心,有没有出现以下死棋。
■■□ □■■ □□□ □□□
■◆□ □◆■ ■◆□ □◆■
□□□ □□□ ■■□ □■■
■ 表示这个位置可能是墙或者箱子;
◆ 表示“被推动的棋子”在推动后所在的位置;
□ 仅为方便理解图片,无任何其他意义。
如果出现上面的情况,就是死棋。
4.2、比较移动后的步骤和之前的步骤是否出项相同的棋局。
注:这里所指“前方”是指行走方向的前方。
第二种方案是求最小推箱数,这个算法上复杂一些,
以小人为起点,做“油漆桶”处理,什么叫“油漆桶”处理呢,看看画笔软件中使用“油漆桶”功能,他可以渗透所有空白的地方。通过此功能,找到所有可以“接触”到的箱子,对所有这些箱子推动,广度优先算法形成搜索树。然后和第一种方案基本相似的方式砍掉多余的树枝。
这个方案我还没有实施,所以还没有想的很具体,先实现第一个在说。
希望有兴趣的朋友可以给意见,告诉我还有那些死棋可以判断。
转载于:https://www.cnblogs.com/tansm/archive/2005/06/02/166490.html
正在编写推箱子游戏的自动求解程序相关推荐
- 推箱子游戏的自动求解
导读: 推箱子游戏的自动求解 简介 推箱子,又称搬运工,是一个十分流行的单人智力游戏.玩家的任务是在一个仓库中操纵一个搬运工人,将N个相同的箱子推到N个相同的目的地.推箱子游戏出现在计算机中最早起源于 ...
- 使用Rust编写推箱子游戏基础篇
使用Rust编写推箱子游戏教程已翻译完成 项目地址 在线阅读 推箱子是个啥样的游戏嘞? 没玩过推箱子游戏?想当年用诺基亚黑白屏手机的时候就有这款游戏了.你可以下载一个玩一下或者点这里看下维基百科的介绍 ...
- c语言推箱子游戏实习报告,用C语言编写推箱子游戏
本文实例为大家分享了C语言推箱子游戏的具体实现代码,供大家参考,具体内容如下 #include #include #include #include //行和列 #define ROW 10 #def ...
- Android开发入门——推箱子游戏开发实战(十二)
绘制游戏局面 本文是推箱子游戏程序开发的第七步.系列文章前五篇描述准备工作,故本文编号是(十二).本文讲解如何绘制游戏局面. 本文目标 本文讲解如何绘制游戏局面.游戏局面的示例如图1,图2所示.这两幅 ...
- PLC也能制作小游戏----Codesys编写推箱子小游戏
1.序言 前文已介绍,Codesys编程软件拥有的各种编译方式,以及强大的可视化功能,完全可以实现类似的小游戏程序编写,让疲惫的工控人员在调机的空闲之余可以休闲下,本文编写另一个小游戏,也是十几年前的 ...
- Java 编写推箱子报告,推箱子游戏用java怎么去写
推箱子游戏用java怎么去写 发布时间:2020-06-22 16:31:07 来源:亿速云 阅读:100 作者:清晨 这篇文章将为大家详细讲解有关推箱子游戏用java怎么写,小编觉得挺实用的,因此分 ...
- 基于java的推箱子游戏系统设计与实现(项目报告+答辩PPT+源代码+部署视频)
项目报告 基于Java的推箱子游戏设计与实现 社会在进步,人们生活质量也在日益提高.高强度的压力也接踵而来.社会中急需出现新的有效方式来缓解人们的压力.此次设计符合了社会需求,Java推箱子游戏可以让 ...
- 推箱子java下载_Java实现简单推箱子游戏
本文实例为大家分享了Java实现简单推箱子游戏的具体代码,供大家参考,具体内容如下 *编写一个简易的推箱子游戏,使用10*8的二维字符数据表示游戏画面,H表示墙壁; &表示玩家角色: o表示箱 ...
- 一文教你使用java开发一款推箱子游戏
导读:社会在进步,人们生活质量也在日益提高.高强度的压力也接踵而来.社会中急需出现新的有效方式来缓解人们的压力.此次设计符合了社会需求,Java推箱子游戏可以让人们在闲暇之余,体验游戏的乐趣.具有操作 ...
最新文章
- Django源码分析1:创建项目和应用分析
- 对比学习(Contrastive Learning)综述
- 【iCore组合式双核心开发板教程】通过STM32 FSMC 读写FPGA Verilog 例子
- java分布式 mq_分布式系统消息中间件—RabbitMQ的使用进阶篇
- Entity Framework在三层架构中的使用
- fastslam matlab,fastslam 快速定位和构图的源码,一个简单的例子,3D建模,可以用作学习智能机器人自主移动 matlab 272万源代码下载- www.pudn.com...
- 全世界云计算宕机和中断[2013年-2014年集锦]
- 清理数据_Python数据清理终极指南(2020版)
- 小米max2怎么长截屏?
- CoVaR计算手册-动态CoVaR模型-数据、代码、步骤
- python caffe框架_caffe框架基础
- SPSS——统计描述
- 主成分分析和因子分析的理论与速成应用丨R语言和SPSS比较案例
- LabWindows操作Excel
- C1任务01-植物大战僵尸修改游戏存档(小白也能看懂)
- springboot毕设项目东莞汉庭酒店的酒店管理系统的设计与实现4ccnv(java+VUE+Mybatis+Maven+Mysql)
- 【金猿人物展】数睿数据创始人兼CEO穆鸿:大数据价值创造关键在于应用普惠...
- android 截屏 简书,Android 内置应用截屏方法
- kafka-topics.sh java.rmi.server.ExportException: Port already in use: 5555
- 计算机毕业设计php小说阅读网站
热门文章
- 公路多孔箱涵设计_【公路常识中篇】公路路基边坡滑坡防护设计和预防
- linux mysql服务器安装_Linux服务器MySQL安装
- c++中求解非线性方程组_齐次线性方程组的基础解系的简便算法
- pat 乙级 1032 挖掘机技术哪家强(C++)
- 飞畅科技教你如何选择合适的PoE交换机?
- 【渝粤教育】国家开放大学2018年秋季 0266-22T设计构成 参考试题
- [渝粤教育] 中国地质大学 结构力学 复习题
- [渝粤教育] 西南科技大学 施工组织 在线考试复习资料
- 64位linux并行计算大气模型效率优化研究,64位Linux并行计算大气模型效率优化研究...
- nodejs接收表单写入mysql_NodeJS提交表单存数据库(转)