CoolFace
Apppublic

RustX/Autonomous_Driving_Simulation

sourceHugging Faceupdated 3y agoView on Hugging Face
3likes
main.js74 linesDownload Raw Back to root
1carCanvas.height=window.innerHeight;2carCanvas.width=200;3networkCanvas.height=window.innerHeight;4networkCanvas.width=298;5 6const carCtx=carCanvas.getContext("2d");7const networkCtx=networkCanvas.getContext("2d");8const road=new Road(carCanvas.width/2,carCanvas.width*0.9);9const N=100;10const cars=generateCars(N);11const traffic=[12    new Car(100,-100,30,50,"DUMMY",2)13];14let bestCar=cars[0];15if(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 25animate();26 27function 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 59function 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 67function save(){68    localStorage.setItem("bestBrain",69        JSON.stringify(bestCar.brain));70}71 72function discard(){73    localStorage.removeItem("bestBrain");74}