Scratch3之AI集成 - flappy bird AI版本

scratch3,ai,集成,flappy,bird,版本 · 浏览次数 : 20

小编点评

**AI游戏代码块组成:** **1. 初始化模型、设置AI角色复制的分身术,启动GameAI程序** ```javascript // 初始化模型 const model = new Neuroevolution.Model(); // 设置AI角色复制的分身术 model.setSprites(new Neuroevolution.Sprites({ name: "Bird", images: ["bird_1.png", "bird_2.png", "bird_3.png"], animations: { idle: "bird_idle.png", flying: "bird_flying.png", crash: "bird_crash.png" } })); // 启动GameAI程序 GameAI.run(model); ``` **2. AI角色使用特征** ```javascript // 获取当前AI角色的特征 const position = model.getSprite().position; const angle = model.getSprite().angle; // 使用特征进行 AI 角色的行为 model.update(position, angle); ``` **3. AI角色使用行为** ```javascript // 定义一些 AI 角色的行为 const jump = function() { model.setVelocity({ y: 10 }); }; // 在当前帧中执行行为 model.performAction(jump); ``` **4. 当每轮执行,AI角色牺牲后进行决策记录** ```javascript // 当AI角色牺牲时,记录该帧的信息 model.addScore(10); // 当AI角色达到一定的分数时,牺牲 if (model.getScores() >= 100) { // sacrifice the bird model.destroy(); } ``` **5. 异步实时计算AI角色是否牺牲(是否撞到管道)** ```javascript // 获取所有AI角色的坐标 const birdPositions = model.getSprites().map(sprite => sprite.position); // 过滤掉撞到的管道 const collidingPipes = birdPositions.filter(position => position.x < 0 || position.x > canvas.width); // 如果有撞到的管道,牺牲AI角色 if (collidingPipes.length > 0) { model.destroy(); } ``` **6. 当一轮中所有AI角色都牺牲了,优化模型并保存模型,重启GameAI,进行下一代笨鸟的训练** ```javascript // 当所有AI角色牺牲了,优化模型 model.optimize(); // 保存模型 model.save(); // 重启GameAI程序 GameAI.run(model); ```

正文

AI神秘且有趣,我们一个经典的游戏flappy bird集成AI,实现自训练成长的聪明的笨鸟。先上效果:

初始化的笨鸟拥有分身,每个分身都有自我学习功能,根据自己的移动轨迹和得分情况进行汇总,进行新一代的笨鸟的迭代,基本经过数十轮的训练和迭代,能完成高智慧的笨鸟,自我闯关能力强。

 

需要了解的AI知识:神经网络进化(Neuroevolution)- 神经网络进化wiki

 

游戏代码块组成:

1. 初始化模型、设置AI角色复制的分身术,启动GameAI程序

 

2. AI角色使用特征

 

3. AI角色使用行为

 

4. 当每轮执行,AI角色牺牲后进行决策记录

 

5. 异步实时计算AI角色是否牺牲(是否撞到管道)

 

6. 当一轮中所有AI角色都牺牲了,优化模型并保存模型,重启GameAI,进行下一代笨鸟的训练

 

核心代码组成:

Generation.js  -- 训练中代数的js文件

Network.js -- 神经网络的js文件

Neuroevolution.js -- 网络进化的js文件

AISprite.js -- AI角色(小鸟)的js文件

 

与Scratch3之AI集成 - flappy bird AI版本相似的内容: