我正在制作各种各样的战斗模拟器,而且我遇到了很大的障碍。我试图在 5x5网格上创建一个简单的AI(或尽可能接近人工智能)。
问题是我甚至不确定如何开始该脚本。最初我想如果我在说瓷砖" 1 "并且敌人在瓦片" 25 "并且敌人只能选择周围的牌,因为它的下一步是 19,24 或 20 然后逻辑上它会想要选择 19 因为它是该组中最低的数字,因此有效地缩小了差距。我很快意识到,如果你移动到左上角或右下角有6的差异,但如果你移动到右上角或左下角有4的差异。它给我留下了&# 34; 编码器"。任何和所有可能的解决方案都很棒。
提前致谢!
编辑:
我想我不够具体,所以我会再试一次。我有一个PHP文件,其中包含一些树木和草的概述图像,我在其上绘制了一个 5x5 网格。每个单元格 55x55像素,每个单元格都是它自己的单独div,它覆盖在图像的顶部。在我的mysql数据库中,我有一个标记为location的表,其中包含id,name和tile number的列。我更新了数据库,把我放在了瓷砖 1 和瓷砖 25 上的AI敌人。通过PHP和CSS的组合,我能够突出显示我在地图上的位置( tile 1 )以及敌人在地图上的位置( tile 25 ) 。这个想法是每个" 播放器"转向,无论是移动还是攻击。对于足够简单的单个玩家,单击相邻的图块。当试图弄清楚如何编码" AI的运动" AI的目标是让玩家足够接近玩家,以便AI可以攻击。因此,如果我在瓷砖1中并且AI在瓷砖25中,则AI的理想移动是沿对角线移动到瓷砖19中,基本上靠近我。现在很明显,在我的下一个回合中,我将移动,然后人工智能必须找出下一个接近我的瓷砖,并且循环将继续,直到我们中的一个人攻击和/或死亡。我认为PHP将是实现这一目标的途径,因为玩家的磁贴位置在任何时候都非常重要,但是此时我还是建立了所有建议!
想象它就像一个跳棋板,我需要弄清楚如何让AI选择下一个牌。让AI选择一个随机区块是没有问题的,它会计算它应该选择哪个区块是有问题的。
答案 0 :(得分:1)
您不需要将网格编号为1-25,而是需要一个坐标系,(行,列),这样您就可以确定两个方向。实现这一目标的最简单方法是使用多维数组。虽然两个独立的阵列可以正常工作。
你没有发布任何代码,所以我无法真正帮助你了解细节,但是一旦你拥有了一个实际的网格系统,数学就变得容易了。如果敌人一次只移动一个方格,那么你可以简单地检查玩家行/列是否高于或低于敌人并移动。
我希望这有帮助,这是我的第一个答案。