RustX commited on
Commit
763ea77
·
1 Parent(s): a4cd16a

Create main.js

Browse files
Files changed (1) hide show
  1. main.js +74 -0
main.js ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ carCanvas.height=window.innerHeight;
2
+ carCanvas.width=200;
3
+ networkCanvas.height=window.innerHeight;
4
+ networkCanvas.width=298;
5
+
6
+ const carCtx=carCanvas.getContext("2d");
7
+ const networkCtx=networkCanvas.getContext("2d");
8
+ const road=new Road(carCanvas.width/2,carCanvas.width*0.9);
9
+ const N=100;
10
+ const cars=generateCars(N);
11
+ const traffic=[
12
+ new Car(100,-100,30,50,"DUMMY",2)
13
+ ];
14
+ let bestCar=cars[0];
15
+ if(localStorage.getItem("bestBrain")){
16
+ for(let i=0;i<cars.length;i++){
17
+ cars[i].brain=JSON.parse(
18
+ localStorage.getItem("bestBrain"));
19
+ if(i>0){
20
+ NeuralNetwork.mutate(cars[i].brain,0.2);
21
+ }
22
+ }
23
+ }
24
+
25
+ animate();
26
+
27
+ function animate(){
28
+ for(let i=0;i<traffic.length;i++){
29
+ traffic[i].update([],[]);
30
+ }
31
+ for(let i=0;i<cars.length;i++){
32
+ cars[i].update(road.borders,traffic);
33
+ }
34
+ bestCar=cars.find(
35
+ c=>c.y==Math.min(
36
+ ...cars.map(c=>c.y)
37
+ ));
38
+
39
+ carCanvas.height=window.innerHeight;
40
+ networkCanvas.height=window.innerHeight;
41
+
42
+ carCtx.translate(0,-bestCar.y+carCanvas.height*0.7);
43
+ road.draw(carCtx);
44
+ for(let i=0;i<traffic.length;i++){
45
+ traffic[i].draw(carCtx);
46
+ }
47
+ carCtx.globalAlpha=0.2;
48
+ for(let i=0;i<cars.length;i++){
49
+ cars[i].draw(carCtx);
50
+ }
51
+ carCtx.globalAlpha=1;
52
+ bestCar.draw(carCtx,true);
53
+
54
+ Visualizer.drawNetwork(networkCtx,bestCar.brain);
55
+
56
+ requestAnimationFrame(animate);
57
+ }
58
+
59
+ function generateCars(N){
60
+ const cars=[];
61
+ for(let i=1;i<=N;i++){
62
+ cars.push(new Car(100,100,30,50,"AI"));
63
+ }
64
+ return cars;
65
+ }
66
+
67
+ function save(){
68
+ localStorage.setItem("bestBrain",
69
+ JSON.stringify(bestCar.brain));
70
+ }
71
+
72
+ function discard(){
73
+ localStorage.removeItem("bestBrain");
74
+ }