Spaces:
Running
Running
| // Daniel Shiffman & Manuel Romero | |
| // Neuro-Evolution Flappy Bird with TensorFlow.js | |
| // http://thecodingtrain.com | |
| // https://youtu.be/cdUNkwXx-I4 | |
| const TOTAL = 250; | |
| let birds = []; | |
| let savedBirds = []; | |
| let pipes = []; | |
| let counter = 0; | |
| let bg; | |
| let slider; | |
| let displayGeneration; | |
| let displaySpeed; | |
| let generationNumber = 1; | |
| function keyPressed() { | |
| if (key === "S" || key === "s") { | |
| let bird = birds[0]; | |
| saveJSON(bird.brain, "bird.json"); | |
| } | |
| } | |
| function setup() { | |
| bg = loadImage("background.png"); | |
| createCanvas(640, 480); | |
| displayGeneration = createP("Generation"); | |
| displaySpeed = createP("Speed"); | |
| slider = createSlider(1, 10, 1); | |
| for (let i = 0; i < TOTAL; i++) { | |
| birds[i] = new Bird(); | |
| } | |
| tf.setBackend('cpu'); | |
| } | |
| function draw() { | |
| for (let n = 0; n < slider.value(); n++) { | |
| if (counter % 75 == 0) { | |
| pipes.push(new Pipe()); | |
| } | |
| counter++; | |
| for (let i = pipes.length - 1; i >= 0; i--) { | |
| pipes[i].update(); | |
| for (let j = birds.length - 1; j >= 0; j--) { | |
| if (pipes[i].hits(birds[j])) { | |
| savedBirds.push(birds.splice(j, 1)[0]); | |
| } | |
| } | |
| if (pipes[i].offscreen()) { | |
| pipes.splice(i, 1); | |
| } | |
| } | |
| for (let i = birds.length - 1; i >= 0; i--) { | |
| if (birds[i].offScreen()) { | |
| savedBirds.push(birds.splice(i, 1)[0]); | |
| } | |
| } | |
| for (let bird of birds) { | |
| bird.think(pipes); | |
| bird.update(); | |
| } | |
| if (birds.length === 0) { | |
| counter = 0; | |
| generationNumber++; | |
| nextGeneration(); | |
| pipes = []; | |
| } | |
| } | |
| // All the drawing stuff | |
| background(bg); | |
| displayGeneration.html( | |
| `Generation Number: <strong>${generationNumber}</strong>` | |
| ); | |
| displaySpeed.html(`Speed:`); | |
| for (let bird of birds) { | |
| bird.show(); | |
| } | |
| for (let pipe of pipes) { | |
| pipe.show(); | |
| } | |
| } | |
| // function keyPressed() { | |
| // if (key == ' ') { | |
| // bird.up(); | |
| // //console.log("SPACE"); | |
| // } | |
| // } | |