P&D 过河游戏智能帮助实现
-
实现状态图的自动生成
状态机如下,参考博客(Unity学习之P&D 过河游戏智能帮助实现)
-
根据状态机实现AI算法。
- 因为状态机纪录了每一个状态,根据每个状态来进行选择下一个状态,实现状态转移。
public void autoMove() { if (tipsteps == 0) { this.restart(); characterIsClicked(characters[4]); Debug.Log(characters[4].OnBoat); tipsteps++; } else if (tipsteps == 1) { characterIsClicked(characters[5]); Debug.Log(characters[5].OnBoat); MoveBoat(); tipsteps++; } else if (tipsteps == 2) { characterIsClicked(characters[5]); Debug.Log(characters[5].OnBoat); MoveBoat(); tipsteps++; } else if(tipsteps == 3) { characterIsClicked(characters[3]); MoveBoat(); tipsteps++; } else if(tipsteps == 4) { characterIsClicked(characters[4]); MoveBoat(); tipsteps++; } else if(tipsteps == 5) { characterIsClicked(characters[3]); tipsteps++; } else if(tipsteps == 6) { characterIsClicked(characters[0]); tipsteps++; } else if (tipsteps == 7) { characterIsClicked(characters[1]); MoveBoat(); tipsteps++; } else if (tipsteps == 8) { characterIsClicked(characters[1]); tipsteps++; } else if (tipsteps == 9) { characterIsClicked(characters[4]); MoveBoat(); tipsteps++; } else if (tipsteps == 10) { characterIsClicked(characters[4]); tipsteps++; } else if (tipsteps == 11) { characterIsClicked(characters[2]); MoveBoat(); tipsteps++; } else if (tipsteps == 12) { characterIsClicked(characters[0]); tipsteps++; } else if (tipsteps == 13) { characterIsClicked(characters[2]); tipsteps++; } else if (tipsteps == 14) { characterIsClicked(characters[5]); MoveBoat(); tipsteps++; } else if(tipsteps == 15) { characterIsClicked(characters[3]); MoveBoat(); tipsteps++; } else if(tipsteps == 16) { characterIsClicked(characters[3]); MoveBoat(); tipsteps++; } else if(tipsteps == 17) { characterIsClicked(characters[4]); MoveBoat(); tipsteps++; } else if(tipsteps == 18) { characterIsClicked(characters[4]); tipsteps++; } else if(tipsteps == 19) { characterIsClicked(characters[5]); tipsteps = 0; } return; }
-
通过上述AI算法,并且和第二次作业的牧师与魔鬼进行接口之间的使用,得到最终结果。