网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月02日漏签0天
人工智能吧 关注:124,057贴子:1,015,234
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 12回复贴,共1页
<<返回人工智能吧
>0< 加载中...

手把手用JavaScript写Flappy Bird人工智能教程

  • 取消只看楼主
  • 收藏

  • 回复
  • 编程我可是第一
  • 2B
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
哈哈哈,我又回来啦。
大家可能说这个太简单了,并且一堆人已经做过了,但是我觉得再做做也没有问题,毕竟似乎吧里没人用JS写过这个代码?(233懒得查)
主要的是我挺久没写人工智能了,今天打算写个相对来说简单一点的项目练练手,反正感觉不会太大问题的
好啦镇楼图


  • 编程我可是第一
  • 2B
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
构思:
233假装正经ing
构思很简单,就是一个p5js画游戏 然后用 遗传算法+神经网络(dtjs) 训练鸟


2026-06-02 10:07:12
广告
不感兴趣
开通SVIP免广告
  • 编程我可是第一
  • 2B
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
会用的插件
1.P5JS
大名鼎鼎的p5js,我最喜欢用来画图的插件,安利安利~
link: https://p5js.org/
2.DTJS
呃。。。这个就是我自己做的超级垃圾的小插件(我才不会告诉做这个项目还有一个目的就是测试我的插件 哼(ˉ(∞)ˉ)唧),不过as far as i am concerned, 这个插件应该够了吧。。。(233不知道)
link: https://github.com/tiger927/DeepThinkJS


  • 编程我可是第一
  • 2B
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
第一步:制作游戏
构思:随便做个物理引擎,然后怎么开心怎么弄
开始coding(忽然发现需要起名字,emmm就叫做EvolvNeuroBird)


  • 编程我可是第一
  • 2B
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
补充一个插件Jquery (这个大家都知道在哪里找吧。。)


  • 编程我可是第一
  • 2B
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
唔。。。昨天太累就懒得更新了,现在继续
ok,现在放鸟的代码

对不会p5js简单说一下,setup就是初始化(其实并不是,但是在这里差不多),draw就是setup以后不断循环的东西
bird就是我们的小鸟,Bird Object后面会给出定义,下面那个就是控制鸟飞的,按空格就往上面走一点

这里就是Bird Object,dv是每个frame向下的加速度,uv是向上的,this.h=height/2就是初始高度,在我们创建的Canvas中间

这个就是鸟的那些function
fall是往下走
up是往上走
show是显示鸟
check是确定鸟不超出canvas
这个部分比较简单,有问题问我就可以啦~ 不说太多


  • 编程我可是第一
  • 2B
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
ok现在写obstacle障碍物,coding~


  • 编程我可是第一
  • 2B
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
啊啊啊不偷懒了,我现在就继续开始写233


2026-06-02 10:01:12
广告
不感兴趣
开通SVIP免广告
  • 编程我可是第一
  • 2B
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
OK继续帖子(啊啊啊好尴尬,10天后才更新,最近太忙了。。。抱歉啊)
这次更新还是没有更新到人工智能部分,只是完成了游戏架构(就是碰撞死亡事件)
我先定义了这两个函数在Bird Object里面

别问我这些数字怎么来的。。。(10天前写的代码实在记不住。。。又懒得真正用数学算,就测出来这些数字)
getN就是getNearestObstacle也就是获取离鸟最近的障碍物(在鸟前面的),返回该障碍物在数组里面的位置
where就是确定鸟在obstacle的范围之内,在就返回0,不在就返回-1(别问我为啥是0或-1不是0和1⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄)
好了然后再obstacle object加了一个highlight函数,就是让他变成红色好看getN到底在哪里

(其实就是改了颜色233)
然后再draw函数里面加入这个来真正highLight障碍物

注释: 其实不需要highLight,这只是为了debug的时候好看(我才不会告诉这是因为我懒得算数字所以直接尝试数字才做的事情呢)
最后就是我们检查碰撞啦(*^▽^*),这个是加在check函数里面(我懒得再加一个函数了滑稽),然后死了以后设置自己的fitness为自己经过的障碍物(终于到了一点点人工智能了233)

emmmm今天内容比较简单,就不一点一点的讲解了,代码有疑问直接问我就可以了
(~ ̄▽ ̄)~
下一个Part就是给鸟装一个脑子让它自己跳,正在coding~


  • 编程我可是第一
  • 2B
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
突然发现百度贴吧会自动压缩图片。。。高清图片点击查看就可以了~


  • 编程我可是第一
  • 2B
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
更新更新!
首先我先把单个鸟去掉了,变成很多鸟


for里面的100可以替换成其他数字(这里指的是 genetic algorithm里面的初始种群)

这里在check函数this.fitness下面又加了一个this.boolS,是为了不再显示或处理已经撞墙的鸟

(注: think函数在下面解释,和忽然发现鸟数量不一致,等会改233~不过就把这里的for改成和上面一样的就可以了);
这里是真正的不再显示或处理鸟

这个是给鸟装一个脑子,让它自己跳(这里可以把空格跳的地方给注释掉)
根据DTJS,一个参数是input,也就是输入的参数,第二个是hidden layer,第三个是output,第四个是data_set(这里没有因为不需要训练),第五个是label_set(这里也没有),第六个是学习率lr_rate,最后一个是激活函数(tanh也可以)
所以这里输入5个参数:
1 鸟到最近的柱子的距离
2 最近的柱子的上部分长度
3 最近的柱子的下部分长度
4 鸟的高度
5 鸟的速度(加速度就先算了。。。我怕太多参数弄不过来)
然后4个隐藏层
最后一个输出层,由于是sigmoid(0 - 1)所以只要超过0.5就跳

这个部分就是think函数啦,a b c d e分别对应上面的1 2 3 4 5
然后forward就是用上面的参数得到的结果
(PS有些人可能会问我为啥没有normalize这些参数,答案是我懒。。。。所以实际上应该normalize(或许不需要反正我懒),反正如果结果不是我想要的我改就好了,反正不难)
最后我因为最近疯狂改代码我都怀疑我漏发了我代码的某一个部分,所以我打算直接把我目前全部代码发上来(有没发的记得回复来提醒我哦)




今天代码和前面对比的话难一点,所以有问题的话一定要问哦!


  • 编程我可是第一
  • 2B
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
下一部分,写genetic algorithm算法!真正给鸟装一个基因!coding~


  • 编程我可是第一
  • 2B
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
233我都快忘记这个帖子了
我这几周太忙了,过几天我再继续


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 12回复贴,共1页
<<返回人工智能吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示