当前位置:   article > 正文

强化学习Q-learning辅助flappy bird_flappybird ql

flappybird ql

flappy bird项目分析

标签:强化学习 实验 Q-learning

来源

来自一个github上的项目,使用Q-leraning训练flappy bird,效果很好,半小时能够到几十(比人厉害多了),使用小鸟到最近的柱子的x和y值作为状态

非常简单,但是效果比较一般,鸟很多此在第0次的时候撞在柱子上。

地址

因为用到了google托管css,所以应该是要梯子的。而且在本地打开会因为file协议,导致存储的csv因为google的CORS policy被拒绝访问,解决方案是使用服务器,比如nginx或者apache之类的进行本地代理,通过http协议进行访问(主要原因是因为它拿取文件的方式用的是jQuery的get方法)

分析flappy bird是怎么做的

首先看看原始代码是如何实现flappy bird这个游戏的。

很明显是使用了canvas。函数startingState()返回的是游戏的初始状态所需要的参数

function startingState() {
   
    return {
   
        mode: "ready",
        startFrame: 0,
        jumpFrame: 0,
        birdY: birdStartY,
        curFrame: 0,
        birdSprite: 0,
        round: 0,
        score: 0,
        totalScore: 0,
        maxScore: 0,
        deadFlash: 0,
        fps: 0,
        pipeList: [],
        landList: [],
    };
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

而后面有gameState = startingState(),所以后面所有拿到的游戏状态的类型与这个是一致的。

而resetState(gameState)函数则明显是重置游戏的函数

function resetState(gameState) {
   
    var round = gameState.round;
    var curFrame = gameState.curFrame;
    var totalScore = gameState.totalScore;
    var maxScore = gameState.maxScore;
    var score = gameState.score;

    var gameState = startingState();

    gameState.startFrame = curFrame;
    gameState.curFrame = curFrame;
    gameState.round 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/649893
推荐阅读
相关标签
  

闽ICP备14008679号