Unity3D | 智能牧师与魔鬼

P&D 过河游戏智能帮助实现,程序具体要求:

  • 实现状态图的自动生成
  • 讲解图数据在程序中的表示方法
  • 利用算法实现下一步的计算
游戏状态

游戏过程实际上是游戏状态之间的转换,状态记录的内容包括:

public class IState {public int leftPriests;public int leftDevils;public int rightPriests;public int rightDevils;public bool boat;//船在左岸true或右案falsepublic IState parent;//上一个状态
}
  • 初始状态

    public static IState state = new IState(0, 0, 3, 3, false, null);
    
  • 结束状态

    public static IState endState = new IState(3, 3, 0, 0, true, null);
    
状态转换

游戏中我们可以通过点击移动人物和船来改变状态,一个状态向下一个状态的所有动作行为包括:

  • 船在左岸
    • 单人过河
      • 牧师过河
      • 魔鬼过河
    • 双人过河
      • 牧师 + 牧师过河
      • 牧师 + 魔鬼过河
      • 魔鬼 + 魔鬼过河
  • 船在右岸
    • 单人过河
      • 牧师过河
      • 魔鬼过河
    • 双人过河
      • 牧师 + 牧师过河
      • 牧师 + 魔鬼过河
      • 魔鬼 + 魔鬼过河

思路就是根据当前的状态和当前状态可能的下一个状态,找到能达到终点状态的一条路径。可以用BFS来实现:

  1. 当前状态进入队列。

  2. 队列不为空:

    • 队头出队。

    • 访问状态节点。

      • 结束:回溯至开始状态输出
      • 没有结束:计算下一个合法状态并压入队列。
public static IState bfs(IState start, IState e


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部