xxxxxxxxxx
189
var numInputNodes = 3;
var numHiddenNodes = 5;
var numOutputNodes = 2;
var globalMR = 0.05;
var jumpforce = -25;
var gravity = 1.5;
var speed = -10;
var drawLoopCount = 0;
var counter1 = 0;
var randomBuffer = 0;
var player;
var groundHeight = 300;
var image_run1;
var image_run2;
var image_jump;
var image_duck1;
var image_duck2;
var image_bird1;
var image_bird2;
//var vision = [];
var g = [];
var gcounter = 0;
var obstacles = [];
var obst_type = 0;
var random_buffer1 = 10;
var obst_counter = 0;
var popul;
var population_size = 1000;
var lowest_alive = 0;
function preload() {
image_run1 = loadImage('images/dinorun0000.png');
image_run2 = loadImage('images/dinorun0001.png');
image_duck1 = loadImage('images/dinoduck0000.png');
image_duck2 = loadImage('images/dinoduck0001.png');
image_jump = loadImage('images/dinoJump0000.png');
image_cbig = loadImage('images/cactusBig.png');
image_csmall = loadImage('images/cactusSmall.png');
image_csmall_many = loadImage('images/cactusSmallMany.png');
image_bird1 = loadImage('images/berd.png');
image_bird2 = loadImage('images/berd2.png');
}
function setup() {
createCanvas(2000, 700);
//player = new Player();
popul = new Population(population_size);
//for(var i = 0; i < population_size; i++) {
// let tempplayer = new Player();
// popul[i] = tempplayer;
//}
} // setup
function draw() {
background(255);
// draw ground
stroke(0);
strokeWeight(2);
line(0,height - groundHeight + 70,width,height - groundHeight + 70);
if (counter1 % (100 + randomBuffer) == 0) {
speed -= 0.10;
counter1 = 0;
randomBuffer = floor(random(25));
}
counter1++;
//add obstacles
if(obst_counter % (75 + random_buffer1) == 0) {
obst_type = floor(random(4));
obstacles.push(new Obstacles(obst_type));
obst_counter = 0;
random_buffer1 = floor(random(40));
} // if
obst_counter++;
//add ground
if(gcounter % 10 == 0) {
g.push(new Ground());
gcounter = 0;
}
gcounter++;
if (!popul.done()) {//if any players are alive then update them
showObstacles();
//showGround();
//print("updating alive");
strokeWeight(1);
popul.updateAlive();
} else {//all dead
//genetic algorithm
//print("starting ga");
popul.calculateFitness();
popul.naturalSelection();
//pop.mutate();
resetObstacles();
//resetGround();
//print("speed: " + speed + " ");
speed = -10;
}
// move player
//player.show();
//player.move();
showInfo();
} // draw
function showObstacles() {
// move and disaply obstacles
for(let i = obstacles.length - 1; i >= 0; i--) {
obstacles[i].move();
obstacles[i].show();
if(obstacles[i].offscreen()) {
obstacles.splice(i,1);
}
} // for
}
function showGround() {
// move and disaply obstacles
for(let i = g.length - 1; i >= 0; i--) {
g[i].move();
g[i].display();
if(g[i].offscreen()) {
g.splice(i,1);
}
} // for
}
function resetObstacles() {
obstacles = [];
}
function resetGround() {
g = [];
}
function showInfo() {
fill(200);
stroke(200);
strokeWeight(1);
textAlign(LEFT);
textSize(10);
if(obstacles.length - 1 >= 0) {
//text("obst.length " + obstacles.length,30,height - 150);
//text("obst0.type: " + obstacles[0].obst_type, 30, height - 120);
text("dist: " + (obstacles[0].position.x - 175)/width,30,height - 65);
text("speed: " + (((abs(speed) - 10)/10)+ 1), 30,height - 50);
text("Gen: " + (popul.gen + 1), 30, height - 35);
text("Score: " + popul.players[lowest_alive].score,30, height - 20);
}
} //
/*
function keyPressed() {
if(!player.isDucking) {
if(key == ' ') {
player.jump();
}
}
if(player.position.y == 400) {
if(key == 'd') {
player.isDucking = true;
}
}
} // key
function keyReleased() {
if(key == 'd') {
player.isDucking = false;
}
}
*/