设计以某种方式移动数组[][]中的结构的算法的问题
Posted
技术标签:
【中文标题】设计以某种方式移动数组[][]中的结构的算法的问题【英文标题】:Problem in designing an algorithm that moves structures in an array[][] in a certain way 【发布时间】:2022-01-18 00:45:48 【问题描述】:我是一名初学者 C 程序员。 我一直未能找到可以解决以下问题的算法:
在一个二维数组“board[x][y]”上,其中包含 以下排列的元素:
地板(白色),物品(蓝色),背包( green) 和 Player (orange),Player 可以移动并且可以通过直接“触摸”它们来移动项目,以一种它们移动的方式朝着同一个方向和 保持依附。 “接触”是由一个项目在其中一个上定义的 播放器的四个侧面。
Graphic 1 describing predicted movement
如果玩家有一个背包,背包本身 充当一种粘性附件,移动所有附加到该附件的项目 背包,包括其他背包。
Graphic 2 describing predicted movement
有没有一种算法可以成功地移动由规则形成的结果“结构”,只移动“附加”的项目?如果您能帮助我找到方法或引导我走上一条道路,我将非常乐意了解它。
提前谢谢你。
【问题讨论】:
建议:除Floor外的每个元素都是struct
的同一类型,并有一个成员标识哪个类型。您可以通过形成链表将它们关联到组中。
拜托,算法。
如果一个附加的物品(不是背包)碰到另一个物品并且你试图移动怎么办?
【参考方案1】:
在列表中存储玩家以及附加物品和背包的位置。执行移动时,列表中的所有元素都会移动。移动后,考虑列表中的玩家和背包,并添加相邻的物品或背包尚不存在。
[但请参阅我的第二条评论。]
【讨论】:
以上是关于设计以某种方式移动数组[][]中的结构的算法的问题的主要内容,如果未能解决你的问题,请参考以下文章