/
main.js
87 lines (77 loc) · 1.75 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
let bird = [];
let obstacles = [];
let obsGap, noOfObs;
let MR = 0.01;
let popnSize = 500;
let bestScore = 0,recordScore = 0, gen = 0;
let slider;
function setup() {
createCanvas(640, 480);
slider = createSlider(1, 20, 1);
obsGap = width;
noOfObs = 3;
for(let i = 0;i < popnSize;i++){
bird[i] = new Bird();
}
resetObstacles();
for(let i = 0;i < 50;i++){
birdFunctions(false);
obstacleFunctions(false);
}
}
function draw() {
background(0);
for(let i = 0;i < slider.value();i++){
birdFunctions(true);
obstacleFunctions(true);
fill(255,0,0);
textSize(25);
text("record Score: " + recordScore,40, 80);
text("current best: " + bestScore,40, 120);
text("generation: " + gen,40, 40);
}
}
function resetObstacles() {
for (let i = 0; i < noOfObs; i++) {
obstacles[i] = new Obstacle(width + obsGap * i);
}
}
function birdFunctions(s) {
let reset = true;
for(let i = 0;i < popnSize;i++){
if(!bird[i].death){
if(bird[i].score > bestScore){
bestScore = bird[i].score;
}
if(bird[i].score > recordScore){
recordScore = bird[i].score;
}
reset = false;
if(s){
bird[i].show();
}
bird[i].move(obstacles);
bird[i].checkDeath(obstacles);
}
}
if(reset){
resetObstacles();
createPopulation();
}
}
function obstacleFunctions(s) {
for (let i = 0; i < noOfObs; i++) {
let cur = obstacles[i];
if(s){
cur.show();
}
cur.move();
if (cur.x + cur.w/2 <= 0) {
if (i == 0) {
cur.resetX(obstacles[noOfObs - 1].x + obsGap);
} else {
cur.resetX(obstacles[i - 1].x + obsGap);
}
}
}
}