简单的AI-JavaScript(使用jQuery动画)
|
首先,我想让您知道,我作为一种爱好已经编程了几年(主要是基于C的语言,iOS开发,Web东西等),现在对创建一个简单的AI感兴趣(大多数人们从打井字游戏开始,是的,但我有兴趣使用基因编程的原理制作东西。我希望读者知道这一点的原因是,如果答案不太复杂(因为我还没有上过大学计算机科学课程,对于一个孩子来说很难理解),我将不胜感激。
这是我的目标:
条款
organsim:CSS div
人口:一组生物(5或10)
食物来源:另一个CSS div
处理
生成了一个种群,每个种群最初看起来都具有相同的表型属性,但是其技能不同(为此,速度)
产生单个食物来源(每次相同)
在大约5秒钟的环境建立之后(步骤1和2),有机体种群需要找到一种竞争性地获取食物来源的方法
只有一种生物可以到达食物。到达环境后,环境将重置,除了上一次发现食物的生物现在会受益,其速度水平可能会提高,而其他表现特别糟糕的生物可能会变得更慢或被终止
重复过程;用户可以观察人口的特征,看看哪些在进化上是成功的,等等。
附加信息
如您所见,以上步骤几乎以一种非常简单的方式模拟了进化(与动物的实际生活情况相比,条件更少);现在,这就是为什么我在这里问的原因:我完全迷路了。我真的不知道从哪里开始(除了产生总体,我最有可能做到这一点以及通过jQuery动画让它们移动)。但是现在我无法做的就是让他们吸引食物。因此,我希望为此指出正确的方向。
没有找到相关结果
已邀请:
3 个回复
丧泉缝锋
为您的人口成员创建一个构造函数,然后填充这些家伙的数组。我已经将一个长度计数数组映射到一个生物数组。 (厚脸皮的循环)。 您创建的每个生物都将相似,但是具有不同的技能(基于
),但是它们将包含相同的逻辑单元。 2产生单个食物来源(每次相同)
食物对象构造函数只是在屏幕上随机放置一个正方形 3在大约5秒钟的环境建立之后(步骤1和2),有机体种群需要找到一种途径来竞争性地获取食物来源 设置环境:
对于每个生物,您都调用其启动方法。
每个生物只是简单地将自己随机放置在屏幕上,然后在一个循环中反复调用自己的逻辑。 4只有一种生物可以到达食物。到达环境后,环境将重置,除了上一次发现食物的生物现在会受益,其速度水平可能会提高,而其他表现特别糟糕的生物可能会变得更慢或被终止
小动物将检测逻辑回路中是否有食物。一旦有了食物,它就会调用自己的胜利方法。这将结束当前的游戏回合。 当小动物获胜时,它可以提高速度。 当您拨打
时,游戏将重新启动(在删除所有当前小生物之后)
5重复过程;用户可以观察人口的特征,看看哪些在进化上是成功的,等等。 观看直播示例:) 6接下来是什么: 调整全局数字和其他硬编码数字 在
函数中实现一些AI。 从/ 1到/ 180遍历所有jsfiddles,看看它是如何构建的。 抱怨评论不够详细 现在,您已经看到了一个示例,将我的代码扔掉并从头开始。 出生代码仅创建一个“基本” Criter。它不是来自两个现有的 小动物,技能没有提高。这意味着没有发展。 奖金: 美食之旅 警告:以上链接的确指向食物,但做错了,我认为里面有一个躲闪的虫子。我认为我不会解决这个问题。 我将解释前往食物的逻辑
第一个
创建一个随机向量,如下所示:
确定小动物移动的距离/速度。这指向右下角。 因为它指向右下角,所以我们必须从此向量的角度中删除
度 然后,我们必须计算小动物和食物之间的角度。为此,我们将两个点传递给
,并为我们计算角度。 现在我们有了角度,我们想将运动矢量旋转该角度。运动矢量当前指向上方(黑色),我们想将其旋转到新位置(红色)一个角度。在代码中,这是
现在正指向正确的方向!我们可以叫
膏焦凑
蹦吃舷弦