1
0
forked from sent/waves
waves/public/assets/g/racer/index.html
2025-04-09 17:11:14 -05:00

16 lines
36 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<script src="/js/all.min.js"></script>
<style>
@import url('https://fonts.cdnfonts.com/css/segoe-ui-4');
</style>
</head>
<body style="background-color: #000000; text-align: center">
<canvas id="gameCanvas" style="width: 65%; height: 100%" width="1024" height="768"></canvas>
<script>
var q6=' Segoe UI Italic, sans-serif';var c6=0;var u4={LIGHT:{road:"#3a3a3a",grass:"#047804",v9:"#a02222",lane:"#CCCCCC"},DARK:{road:"#3a3a3a",grass:"#006A00",v9:"#BBBBBB"},START:{road:"white",grass:"#009A00",v9:"#BBBBBB"},FINISH:{road:"black",grass:"black",v9:"black"}};var cntx=null;function j7(t,i){cntx.clearRect(0,0,t,i)}function g1(t){cntx.globalAlpha=t}function m0(t,i,a,r){cntx.fillRect(t,i,a,r)}function a6(t,i,a,r){return cntx.createLinearGradient(t,i,a,r)}function g0(t){cntx.strokeStyle=t}function p2(){cntx.stroke()}function k4(t){cntx.fillStyle=t}function k3(){cntx.beginPath()}function p0(t,i){cntx.moveTo(t,i)}function t4(t,i,a,r,e,s){cntx.arc(t,i,a,r,e,s)}function o8(t,i){cntx.lineTo(t,i)}function k0(){cntx.closePath()}function s9(){cntx.fill()}function k9(t,i,a){cntx.fillText(t,i,a)}function s3(){cntx.save()}function n0(){cntx.restore()}function j4(t,i){cntx.translate(t,i)}function p9(t){cntx.rotate(t)}function i5(t,i,a,r,e,s,n,h,v){cntx.drawImage(t,i,a,r,e,s,n,h,v)}var M=Math;var PI=Math.PI;function r9(){return M.random()}function m8(t){return M.floor(r9()*t)}function sin(t){return M.sin(t)}function cos(t){return M.cos(t)}var l1=600,k6=600,l6=2400,k5=2400,b4=1280,a9=480,c2=600,b9=600,j9=l9(l1,k6),t1=l9(l6,k5);j8=t1.c,h0=t1.x,e3=l9(b4,a9),e2=l9(b4,a9),e1=l9(b4,a9),j1=l9(c2,b9),a7=a5=f1=d3=b7=d8=d0=e8=0,c8=[],q1=0;var r4="#222222";var q2="#cccccc";var q7="#e5e5e5";function m3(){j9.x.clearRect(0,0,l1,k6)}function l9(t,i){var a=document.createElement("canvas");a.width=t;a.height=i;var r=a.getContext("2d");return{c:a,x:r}}var p3=0;var p4=0;var c1=0;function j2(){p3=0;p4=0;c1=0;h0.clearRect(0,0,l6,k5);e1.x.clearRect(0,0,b4,a9);e2.x.clearRect(0,0,b4,a9);e3.x.clearRect(0,0,b4,a9)}function e6(t,i,a,r){var e=0;k4(r);var s=a+a*r9();k3();p0(t+s*cos(e),i+s*sin(e));for(var n=1;n<30;n++){e=n*PI*2/30;s=a+a*r9();o8(t+s*cos(e),i+s*sin(e))}k0();s9()}function a8(){var t=j9.x.getImageData(0,0,j9.c.width,j9.c.height);var i=new Uint32Array(t.data.buffer);var a,r;var e=j9.c.width;var s=j9.c.height;var n=e,h=s,v=0,f=0;for(r=0;r<s;r++){for(a=0;a<e;a++){if(i[a+r*e]>0){if(a<n){n=a}if(a>v){v=a}if(r<h){h=r}if(r>f){f=r}}}}var c=f-50;if(c<0){c=0}var u=e;var o=0;for(r=c;r<f;r++){for(a=0;a<e;a++){if(i[a+r*e]>0){if(a<u){u=a}if(a>o){o=a}}}}return{x:n,y:h,w:v-n,h:f-h,cx:u-n,cw:o-u}}function q3(t){var i=t||0;var a=a8();if(p3+a.w>l6){p3=0;p4+=c1;c1=0}if(a.h>c1){c1=a.h}h0.save();var r=p3;if(i){h0.scale(-1,1);r=-p3-a.w;a.cx=a.w-a.cx-a.cw}h0.drawImage(j9.c,a.x,a.y,a.w,a.h,r,p4,a.w,a.h);h0.restore();var e={x:p3,y:p4,w:a.w,h:a.h,cx:a.cx,cw:a.cw};p3+=a.w+5;return e}function e5(){cntx=j9.x;m3();k4("#996644");m0(0,0,200,200);k4("#996644");m0(10,200,10,10);k4("#996644");m0(180,200,10,10);k4(q2);m0(10,10,180,180);k3();p0(20,100);o8(160,30);o8(160,170);o8(20,100);k4("#cc2211");s9();k4(q2);m0(10,10,20,180);d8=q3();d0=q3(1)}function q5(t,i){var a=[];var r=0;var e=0;a[e++]=0;var s=1;for(var n=0;n<t;n++){r=r+r9()*i;a[e++]=r}while(r>0){r=r-r9()*i;a[e++]=r}return a}function b1(){cntx=e1.x;var t=["#114433","#114e33","#115433","#113433","#114433"];var i=0;for(var a=0;a<4;a++){var r=i;var e=10+40*r9();for(var s=0;s<e;s++){var n=q5(8,7);var h=m8(t.length);k4(t[h]);k3();p0(r,240-n[0]);for(var v=1;v<n.length;v++){o8(r+v,240-n[v])}k0();s9();r+=2+r9()*4}var t=["#226639","#115e33","#316433","#215433","#114433"];var r=i;for(var s=0;s<e;s++){var n=q5(4,4);var h=m8(t.length);k4(t[h]);k3();p0(r,240-n[0]);for(var v=1;v<n.length;v++){o8(r+v,240-n[v])}k0();s9();r+=2+r9()*5}i=r+50+r9()*180}}function t5(t){cntx=e2.x;var i=[];var a=[];var r=[];var e=[];var s=0;var n=0;var h=1;h=.1+3*r9();var v=20*100*r9();for(var f=0;f<100;f++){s=s+r9()*h;i[n]=s;a[n]=s;n++;h+=.01}var v=5+8*r9();for(var f=0;f<v;f++){s=s+(.4-r9())*2;a[n]=s;i[n++]=s}var c=[];var u=s;while(u>0){u-=r9()*5;c.push(u)}if(r9()>.6){v=160*r9()}else{v=20*r9()}for(var f=0;f<v;f++){s=s+(.4-r9())*2;i[n++]=s}while(s>0){s=s-r9()*h;i[n++]=s;h-=.003;if(h<0){h=.03}}for(var f=0;f<a.length-20;f++){u=a[f]+r9();r.push(u)}for(var f=0;f<r.length-10;f++){u-=r9()*2;e.push(u)}var o=260;var l=t;k4("#114433");k3();p0(l,o-i[0]);for(var d=1;d<i.length;d++){o8(l+d,o-i[d])}k0();s9();l=t;k4("#224a33");k3();p0(l,o-a[0]);for(var d=1;d<a.length;d++){o8(l,o-a[d]);l++}for(var d=1;d<c.length;d++){o8(l,o-c[d]);if(r9()>.4){l--}else if(r9()>.4){l++}}k0();s9();l=t+4;k4("#335a3a");k3();p0(l,o-r[0]);for(var d=1;d<r.length;d++){o8(l,o-r[d]);l++}for(var d=1;d<e.length;d++){o8(l,o-e[d]);if(r9()>.8){l++}else if(r9()>.1){l--}}k0();s9();return i}function a3(){var t=0;for(var i=0;i<20;i++){t5(t);t+=3+r9()*100}}var tree={o0:"",draw:function(){j4(500/2,500);this.o0="#"+(16777216+r9()*16777215).toString(16).substr(1,6);cntx.lineWidth=1+r9()*20;cntx.lineJoin="round";this.u2(0)},u2:function(t){if(t<12){k3();p0(0,0);o8(0,-500/10);p2();j4(0,-500/10);var i=-(r9()*.1)+.1;p9(i);if(r9()*1<.6){p9(-.35);cntx.scale(.7,.7);s3();this.u2(t+1);n0();p9(.6);s3();this.u2(t+1);n0()}else{this.u2(t)}}else{k4(this.o0);m0(0,0,500,200);p2()}}};var k1=[];function createTrees(){k1=[];for(var t=0;t<6;t++){var i=.6;var a=false;var r=0;while(!a){cntx=j9.x;j9.x.save();m3();tree.draw();var e=a8();a=e.w<300&&e.h<400||r>5;j9.x.restore();r++}k1[t]=q3()}}function c0(t,i,a,r){cntx=e1.x;var e=30;var s=20;var n=2;var h=1;var v=1;var f=4;var c=8;if(i==1){h=2;v=2;f=3;c=10;e=40;s=25}if(i==2){h=4;f=2;c=6;e=20;s=18}var u=260;e+=30*r9();k4(a);m0(t,u-e,s,e);if(r9()<.4){var o=5;var l=8;m0(t+o,u-(e+l),s-2*o,e+l)}if(r9()<.2){var o=5;var l=13;var d=2;m0(t+o,u-(e+l),d,e+l)}for(var p=0;p<c;p++){var x=n+p*(v+n);for(var g=0;g<f;g++){var m=n+g*(h+n);k4(r);m0(t+m,u-e+x,h,v)}}}function a4(t){var i="#777799";var a="#9999ee";if(t){i="#060606";a="#929156"}var r=0;for(var e=0;e<80;e++){var s=r9();if(s<.4){c0(r,0,i,a)}else if(s<.6){c0(r,1,i,a)}else{c0(r,2,i,a)}r+=10+r9()*30}var i="#9999aa";var a="#aaaaee";if(t){i="#101010";a="#929156"}var r=0;for(var e=0;e<80;e++){var s=r9();if(s<.4){c0(r,0,i,a)}else if(s<.6){c0(r,1,i,a)}else{c0(r,2,i,a)}r+=10+r9()*30}}function f8(t){c8=[];for(var i=0;i<4;i++){m3();cntx=j9.x;var a=100+r9()*80;if(t){a=10+r9()*20}k4("rgb("+a+","+a+","+a+")");m0(0,30,240,500);var r=24,e=15,s=8,n=8,h=10;var v=col=x=y=0;for(v=0;v<18;v++){y=30+s+v*(e+h);for(col=0;col<7;col++){x=s+col*(r+n);if(t){if(r9()>.7){k4("#ffffec");m0(x,y,r,e);k4("#bbbb88");m0(x,y+e/2,r,e/2)}else{k4("#112237");m0(x,y,r,e);k4("#111a30");m0(x,y+e/2,r,e/2)}}else{k4("#5555a7");m0(x,y,r,e);k4("#444495");m0(x,y+e/2,r,e/2)}}}c8[i]=q3()}}function c3(t){cntx=j9.x;m3();s3();k4("#999999");if(t){k4("#555555")}var i=7;m0(40,150,i,300);k3();t4(70,150,30,PI,-PI/2);o8(70,150-30+i);t4(70,150,30-i,-PI/2,PI,true);o8(70-30,150);s9();m0(70,150-30,70,i);m0(130,150-30-1,35,6);k4("#aaaaaa");if(t){k4("#777777")}m0(40+i-4,150,2,300);m0(70,150-30+i-4,70,2);k3();t4(70,150,30-i+4,PI,-PI/2);o8(70,150-30+i);t4(70,150,30-i,-PI/2,PI,true);o8(70-30,150);s9();k4("#aaaaaa");if(t){k4("#999999")}m0(40+i-2,150,2,300);m0(70,150-30+i-2,70,2);k3();t4(70,150,30-i+2,PI,-PI/2);o8(70,150-30+i);t4(70,150,30-i,-PI/2,PI,true);o8(70-30,150);s9();if(t){cntx.filter="blur(2px)"}k4("#ffffff");m0(128,150-30+4,38,12);if(t){g1(.8);cntx.globalCompositeOperation="lighter";cntx.filter="blur(4px)";m0(123,150-30+3,44,18);g1(1)}a7=q3();a5=q3(1);n0()}function i0(){var t=b4;var i=a9;cntx=e3.x;var a=a6(0,0,0,i);a.addColorStop(0,"#00111e");a.addColorStop(1,"#033d5e");k4(a);m0(0,0,b4,a9);var r=Math.round(t+i);for(var e=0;e<=r;e++){var s=m8(t);var n=m8(i);var h=m8(2)+1;var v=m8(9)+1;var f=m8(9)+1;var c=m8(360);if(h>1){cntx.shadowBlur=m8(15)+5;cntx.shadowColor="white"}k4("hsla("+c+", 30%, 80%, ."+v+f+")");m0(s,n,h,h)}}function createLeaf(t){k4(t);k3();t4(3,7,3,PI/2,PI);t4(10,7,10,PI,PI*1.24);t4(-4.7,7,10,PI*1.76,0);t4(2.3,7,3,0,PI/2);s9()}function j5(){m3();cntx=j9.x;var t=j9.c;cntx.save();var i=a6(0,0,0,8);i.addColorStop(0,"#ff111e");i.addColorStop(1,"#aa3d5e");createLeaf(i);cntx.translate(0,20);createLeaf(i);cntx.translate(0,20);createLeaf(i);cntx.translate(0,20);createLeaf("#44aa55");cntx.restore();var a=100;for(var r=0;r<2;r++){var e=30;for(var s=0;s<60;s++){e+=4+6*r9();if(e>780){continue}var n=20+4*r9();a=100+r*16-n+r9()*12;if(r9()>.5){k4("#44aa55");m0(e,a,2,n);k4("#66cc88");m0(e,a,1,n)}else{k4("#449955");m0(e,a,2,n);k4("#66aa88");m0(e,a,1,n)}var h=m8(2)*20;var v=e-2;var f=a-6;s3();j4(v+3,f);p9(.3);i5(t,0,h,6,11,0,0,6,11);n0();s3();j4(v-3,f+1);p9(-.3);i5(t,0,h,6,11,0,0,6,11);n0();s3();j4(v,f);i5(t,0,h,6,11,0,0,6,11);n0();s3();j4(v+6,f+10);p9(.6);i5(t,0,60,6,11,0,0,6,11);n0()}}cntx.clearRect(0,0,22,300);e8=q3()}function o7(t,i){k3();k4(i);p0(t[0],t[1]);for(var a=2;a<t.length;a+=2){o8(t[a],t[a+1])}k0();s9()}function drawLine(t,i,a,r){k3();p0(t,i);o8(a,r);cntx.stroke()}function r1(){m3();cntx=j9.x;var t=[8,194,11,206,14,214,18,216,41,215,46,213,47,205];o7(t,r4);var t=[227,193,230,200,241,204,258,203,265,197,268,191];o7(t,r4);var t=[5,192,25,206,296,190,302,164,298,149,296,145,292,111,289,103,294,101,294,91,297,84,263,72,208,14,167,2,66,3,45,7,8,55,5,65,7,88,2,97,1,151];o7(t,"#a9fb78");var t=[25,206,296,190,302,164,298,149,296,145,292,111,289,103,294,101,294,91,297,84,17,93,22,122,20,162,20,170,2,145,3,160,6,187];o7(t,"#4abf74");var t=[20,108,294,96,296,89,19,98];o7(t,"#226d7d");var t=[21,162,296,149,292,112,22,122];o7(t,"#226d7d");var t=[42,86,260,79,208,21,60,24];var i=a6(0,19,0,90);i.addColorStop(0,"#4fa8f7");i.addColorStop(1,"#2d3c7c");o7(t,i);t=[51,62,238,57,253,76,196,67,159,64,125,66,81,72,45,82];o7(t,"#95eef7");var t=[27,83,33,77,46,27,21,70];o7(t,"#4773dd");var t=[19,61,46,17,43,12,19,51];o7(t,"#4773dd");var t=[3,99,10,113,18,120,17,106,11,86,5,91];o7(t,"#ffd47e");var t=[21,127,19,145,20,158,106,153,105,124];o7(t,"#b44258");var t=[20,158,106,153,105,142,19,146];o7(t,"#5d2959");var t=[217,120,218,149,296,145,296,134,293,116];o7(t,"#b44258");var t=[218,149,296,145,296,133,218,137];o7(t,"#5d2959");var t=[21,173,300,159,299,149,21,162];o7(t,"#a9fb78");f1=q3(0);d3=q3(1)}function p6(){m3();cntx=j9.x;var t=j9.c;var i=[5,197,143,197,141,87,1,87,4,106,1,121,1,180];o7(i,"#4abf74");var i=[141,87,143,1,87,3,72,6,61,17,31,67,1,87];o7(i,"#a9fb78");i=[4,100,143,100,143,93,3,93];o7(i,"#226d7d");i=[4,155,143,155,143,113,4,113];o7(i,"#226d7d");i=[4,150,86,149,86,121,5,121,3,139];o7(i,"#b44258");i=[4,149,86,149,86,138,4,138];o7(i,"#5d2959");i=[22,131,22,134,73,134,73,131];o7(i,"#d65d5b");i=[32,82,143,82,143,19,66,19];var a=a6(0,19,0,90);a.addColorStop(0,"#4fa8f7");a.addColorStop(1,"#2d3c7c");o7(i,a);i=[47,59,143,59,143,64,78,68,38,77];o7(i,"#95eef7");i=[13,197,16,205,23,208,49,207,56,202,58,197];o7(i,r4);var i=[1,155,1,167,143,167,143,155];o7(i,"#a9fb78");s3();cntx.scale(-1,1);i5(j9.c,0,0,143,210,-143-132,0,143,210);n0();b7=q3(0)}function o6(){r1();p6()}function b2(t,i){return t%i/i}function g4(t,i,a){return t+(i-t)*a}function l0(t,i,a){var r=t+i;while(r>=a)r-=a;while(r<0)r+=a;return r}var m5=function(t,i){this.canvas=t;this.t6=i};m5.prototype={init:function(){v0.reset();v3.buildv20()},keyDown:function(t){if(t.keyCode===88){startGame()}},keyUp:function(t){},p5:function(){n3=true;var t=height;v0.y=400;v0.depth=.83909963117728;v0.x=0;var i=v3.n1(v0.z);var a=b2(v0.z,v2.u0Length);v0.y=500+g4(i.p1.v8.y,i.p3.v8.y,a);var r,e,s,n,h,v,f,c;var u=0;for(r=0;r<v0.l3;r++){s=v3.o9((i.index+r)%v3.o9Count());s.u9=s.index<i.index;s.clip=t;s.clip=0;v0.t2(s.p1,0,s.u9,width,height,q4);v0.t2(s.p2,0,s.u9,width,height,q4);v0.t2(s.p3,0,s.u9,width,height,q4);v0.t2(s.p4,0,s.u9,width,height,q4);if(s.p1.v0.z<=v0.depth||s.p3.u6.y>=s.p1.u6.y||s.p3.u6.y>=t)continue;k2(s);t=s.p1.u6.y}},render:function(t){cntx=this.t6;var i=l2();k4(r4);m0(0,0,this.canvas.width,this.canvas.height);for(var a=0;a<30;a++){var r=100+a*10;t6.font="italic "+r+"px "+q6;t6.fontStyle="italic";var e=80+a*4;e=(e+i/6)%200;if(a==29){e=255}k4("rgb("+e+","+e+","+e+")");k9("racer",400-a*11,300-a)}t6.font="44px "+q6;k9("Arrow keys to drive, x for Turbo, z for Handbrake",38,570);k9("x To Start",423,460);v0.z=l0(v0.z,t*120,v3.r2());this.p5()}};var u3=function(){this.fieldOfView=100;this.y=0;this.z=0;this.l3=300;this.depth=0;this.fogDensity=25;this.t7=0;this.t9=740;this.t7=700};u3.prototype={reset:function(){this.depth=1/Math.tan(this.fieldOfView/2*Math.PI/180);this.t9=740;this.t7=700},t2:function(t,i,a,r,e){var s=this.z;if(a){s-=v3.r2()}var n=this.x+i;t.v0.x=(t.v8.x||0)-n;t.v0.y=(t.v8.y||0)-this.y;t.v0.z=(t.v8.z||0)-s;t.u6.scale=this.depth/t.v0.z;t.u6.x=Math.round(r/2+t.u6.scale*t.v0.x*r/2);t.u6.y=Math.round(e/2-t.u6.scale*t.v0.y*e/2)},update:function(t){this.z=cars[0].z-this.t7;if(this.z<0){this.z+=v3.r2()}v0.x=cars[0].x+cars[0].width/2;var i=v3.n1(cars[0].z);var a=b2(cars[0].z,v2.u0Length);this.y=this.t9+g4(i.p1.v8.y,i.p3.v8.y,a)}};var width=1024;var height=768;var resolution=height/480;var i2=.001;var i3=.002;var i4=.003;var h3=0;var h4=0;var h6=0;var n3=false;var lastDriftDraw=0;function j6(t,i,a,r,e,s,n,h,v){var f=t6;k4(v);k3();p0(t,i);o8(a,r);o8(e,s);o8(n,h);k0();if(n3){g0(q2);p2()}else{s9()}}function k2(t){var i,a,r,e,s;var n=Math.floor(t.index/2)%2;var h=e4;var v=d4;if(n){h=g2;v=g3}if(!n3){k4(v);m0(0,t.p3.u6.y,width,t.p1.u6.y-t.p3.u6.y)}var f=t.r0*t.p1.u6.scale*width/2;var c=t.r0*t.p4.u6.scale*width/2;j6(t.p1.u6.x-f,t.p1.u6.y,t.p1.u6.x,t.p1.u6.y,t.p4.u6.x,t.p4.u6.y,t.p4.u6.x-c,t.p4.u6.y,h);j6(t.p2.u6.x,t.p2.u6.y,t.p2.u6.x+f,t.p2.u6.y,t.p3.u6.x+c,t.p3.u6.y,t.p3.u6.x,t.p3.u6.y,h);if(!n3){var u=n9;if(t.index==0){u=q2}j6(t.p1.u6.x,t.p1.u6.y,t.p2.u6.x,t.p2.u6.y,t.p3.u6.x,t.p3.u6.y,t.p4.u6.x,t.p4.u6.y,u)}var o=50*t.p1.u6.scale*width/2;var l=50*t.p4.u6.scale*width/2;r=t.p1.u6.x+100*t.p1.u6.scale*width/2;e=t.p4.u6.x+100*t.p4.u6.scale*width/2;j6(r-o/2,t.p1.u6.y,r+o/2,t.p1.u6.y,e+l/2,t.p3.u6.y,e-l/2,t.p3.u6.y,c6);r=t.p2.u6.x-100*t.p1.u6.scale*width/2;e=t.p3.u6.x-100*t.p4.u6.scale*width/2;j6(r-o/2,t.p1.u6.y,r+o/2,t.p1.u6.y,e+l/2,t.p3.u6.y,e-l/2,t.p3.u6.y,c6);lanes=2;if(n){i=(t.p2.u6.x-t.p1.u6.x)/lanes;a=(t.p3.u6.x-t.p4.u6.x)/lanes;r=t.p1.u6.x+i;e=t.p4.u6.x+a;for(s=1;s<lanes;r+=i,e+=a,s++){j6(r-o/2,t.p1.u6.y,r+o/2,t.p1.u6.y,e+l/2,t.p3.u6.y,e-l/2,t.p3.u6.y,c6)}}if(q1!=0){q9(0,t.p1.u6.y,width,t.p3.u6.y-t.p1.u6.y,t.fog)}}function e0(t,i,a,r,e){r=r||0;e=e||0;var s=b4/2;var n=a9;var h=Math.floor(b4*r);var v=0;var f=Math.min(s,b4-h);var c=n;var u=0;var o=e;var l=Math.floor(i*(f/s));var d=a;t6.drawImage(t.c,h,v,f,c,u,o,l,d);if(f<s)t6.drawImage(t.c,0,v,s-f,c,l-1,o,i-l,d)}function m1(t,i,a,r,e,s){var n=t.w*i*width/2;var h=t.h*i*width/2;r=r-h;var v=e?Math.max(0,r+h-e):0;if(v<h){t6.drawImage(j8,t.x,t.y,t.w,t.h-t.h*v/h,a,r,n,h-v);if(s!==false&&q1!=0){q9(a,r,n,h,s)}}}function b3(t,i){return 1/Math.pow(Math.E,t*t*i)}function m2(t,i,a,r,e,s){var n;if(r<0){n=f1}else if(r>0){n=d3}else{n=b7}var h=u1.width*t/n.w;var v,f;if(u1.h2>0||u1.p8>0){cars[0].b6();var c=0;if(u1.h2<=0){c=u1.p8;while(c>1){c-=1}}g1(1-c);for(v=0;v<cars[0].f2.length;v++){var u=cars[0].f2[v];k3();p0(u[0].u6.x,u[0].u6.y);for(f=1;f<u.length;f++){o8(u[f].u6.x,u[f].u6.y)}k4(q2);s9()}g1(1)}m1(n,h,i,a+u1.u8,false);if(u1.m6>0){var o=l2();if(o-lastDriftDraw>100){g1(.8);k4(q2);var l=i+12;var d=a-4;m0(l,d,50,10);l=i+260;m0(l,d,50,10);g1(1);lastDriftDraw=o}}if(u1.v5){var p=i+82;var x=a-10;e6(p,x,10,"#dd9925");e6(p,x,5,"#cccc55");p=i+230;e6(p,x,10,"#dd9925");e6(p,x,5,"#cccc55")}}function q9(t,i,a,r,e){if(e<1){g1(1-e);k4(q1);m0(t,i,a,r);g1(1)}}function l7(){cntx=t6;var t=v3.n1(v0.z);var i=b2(v0.z,v2.u0Length);var a=v3.n1(u1.z);var r=b2(u1.z,v2.u0Length);var e=g4(a.p1.v8.y,a.p3.v8.y,r);var s=height;var n=0;var h=-(t.v4*i);t6.fillStyle="#4576aa";m0(0,0,width,height);e0(e3,width,height,h3,resolution*i2*e);e0(e2,width,height,h4,resolution*i3*e);e0(e1,width,height,h6,resolution*i4*e);var v,f,c,u,o,l,d,p;for(v=0;v<v0.l3;v++){c=v3.o9((t.index+v)%v3.o9Count());c.u9=c.index<t.index;c.fog=b3(v/v0.l3,v0.fogDensity);c.clip=s;v0.t2(c.p1,-n,c.u9,width,height);v0.t2(c.p2,-n,c.u9,width,height);v0.t2(c.p3,-n-h,c.u9,width,height);v0.t2(c.p4,-n-h,c.u9,width,height);n=n+h;h=h+c.v4;if(c.p1.v0.z<=v0.depth||c.p3.u6.y>=c.p1.u6.y||c.p3.u6.y>=s)continue;k2(c);s=c.p1.u6.y}for(v=v0.l3-1;v>0;v--){c=v3.o9((t.index+v)%v3.o9Count());for(f=0;f<c.cars.length;f++){u=c.cars[f];if(u.index!==0){o=u.sprite;var x=g4(c.p1.u6.scale,c.p3.u6.scale,u.percent);d=g4((c.p1.u6.x+c.p2.u6.x)/2,(c.p3.u6.x+c.p4.u6.x)/2,u.percent)+x*u.x*width/2;p=g4(c.p1.u6.y,c.p4.u6.y,u.percent);var o=b7;l=u.width*x/o.w;if(u.s4){o=f1}else if(u.q8){o=d3}m1(o,l,d,p,c.clip,c.fog)}}for(f=0;f<c.t1.length;f++){o=c.t1[f];l=c.p1.u6.scale;d=c.p1.u6.x-c.p1.v8.x*c.p1.u6.scale*width/2+l*o.x*width/2;p=c.p1.u6.y;l=o.s*l;m1(o.u5,l,d,p,c.clip,false);var g=o.u5.w*l*width/2;var m=-0;var w=d+g*(m||0);l=c.p1.u6.scale;l=o.s*l;var k=o.u5.cx*l*width/2;var y=o.u5.cw*l*width/2;d=w+k}if(c==a){var b=g4(a.p1.u6.y,a.p3.u6.y,r);b=height/2-v0.depth/v0.t7*g4(a.p1.v0.y,a.p3.v0.y,r)*height/2;var q=b;if(cars[0].t9>0){b-=cars[0].t9*v0.depth/v0.t7*height/2}var z=width/2;var x=g4(a.p1.u6.scale,a.p3.u6.scale,r);d=g4((a.p1.u6.x+a.p2.u6.x)/2,(a.p3.u6.x+a.p4.u6.x)/2,r)+x*cars[0].x*width/2;var I={v8:{x:u1.x,y:u1.y,z:u1.z},v0:{},u6:{}};v0.t2(I,0,a.index<t.index,width,height);z=I.u6.x;var j=0;if(u1.v7>0){if(u1.h8!=0){j=u1.h8}else{j=u1.s4?-1:u1.q8?1:0}}m2(v0.depth/v0.t7,z,b,j,a.p3.v8.y-a.p1.v8.y,q);if(race.state==4){t6.drawImage(v3.m7,-40,200,400,400)}}}}var Car=function(){var t=this;t.sprite=0;t.index=0;t.width=500;t.height=0;t.x=0;t.y=0;t.lastY=false;t.t9=0;t.z=0;t.lap=0;t.lapStarted=false;t.position=0;t.n4=.3;t.f2=[];t.c7=false;t.p8=0;t.h2=0;t.percent=0;t.v7=0;t.v1=0;t.v5StartTime=0;t.q0=t.brake=t.s4=t.q8=t.v5=t.l5=t.l8=false;t.m6=0;t.h8=0;t.o1=100;t.lapStarted=false;t.n4=.3;t.r6=26e3;t.i8=28e3;t.v7Percent=0;t.accel=6800;t.r8=-16e3;t.decel=-8e3;t.h5=0;t.lastLapTime=null;t.position=0;t.r3=3e3;t.slowOnCorners=false;t.c5=false;t.u8=1.5;t.g5=0};Car.prototype={k7:function(t,i,a){return t+i*a},b6:function(){this.f2=[];var t=400;var i=this.z+500;var a=t-40;var r=700;var e,s;var n=20;var h=0;if(this.c7===false){this.c7=[];for(e=0;e<n;e++){this.c7.push(r9())}}for(e=0;e<n;e++){this.c7[e]+=.03;if(this.c7[e]>=.8){this.c7[e]=0}var v=t+60;if(h>PI/6&&h<PI/2){v=t+60+(h-PI/6)*128}if(h>=PI/2&&h<5*PI/6){v=t+60+(5*PI/6-h)*128}var f=this.x+this.width/2+a*Math.cos(h-.05);var c=this.y+a*sin(h-.02);var u=this.x+this.width/2+a*Math.cos(h+.05);var o=this.y+a*sin(h+.02);var l=this.x+this.width/2+v*Math.cos(h-.05);var d=this.y+v*sin(h-.05);var p=this.x+this.width/2+v*Math.cos(h+.05);var x=this.y+v*sin(h+.05);var g=f+(l-f)*this.c7[e];var m=u+(p-u)*this.c7[e];var w=c+(d-c)*this.c7[e];var k=o+(x-o)*this.c7[e];var y=f+(l-f)*(this.c7[e]+.4);var b=u+(p-u)*(this.c7[e]+.4);var q=c+(d-c)*(this.c7[e]+.4);var z=o+(x-o)*(this.c7[e]+.4);var I=i-r*this.c7[e];var j=i-r*(this.c7[e]+.4);var T=[];T.push({v8:{x:g,y:w,z:I},v0:{},u6:{}});T.push({v8:{x:m,y:k,z:I},v0:{},u6:{}});T.push({v8:{x:b,y:z,z:j},v0:{},u6:{}});T.push({v8:{x:y,y:q,z:j},v0:{},u6:{}});this.f2.push(T);h+=PI/n}for(e=0;e<this.f2.length;e++){var M=this.f2[e];for(s=0;s<M.length;s++){v0.t2(M[s],0,0,width,height)}}},limit:function(t,i,a){return Math.max(i,Math.min(t,a))},t0:function(t,i,a,r,e){var s=t-(e-1)*i/2;var n=t+i*e;var h=a-(e-1)*r/2;var v=a+r*e;return!(n<h||s>v)},setTurnLeft:function(t){this.s4=t},k8:function(t){this.q8=t},j0:function(t){this.q0=t},r5:function(t){this.brake=t},s2:function(t){this.l5=t},setDrift:function(t){this.l8=t},d2:function(){return this.h5},getLap:function(){if(this.lap<1){return 1}return this.lap},n2:function(){var t=this.position,i=t%10,a=t%100;if(i==1&&a!=11){return t+"st"}if(i==2&&a!=12){return t+"nd"}if(i==3&&a!=13){return t+"rd"}return t+"th"},r7:function(){return this.v7},update:function(t){var i=this.r6;this.v7Percent=this.v7/this.r6;var a=v3.n1(this.z);var r=v3.n1(cars[0].z);var e=this.v7Percent;this.percent=b2(this.z,v2.u0Length);var s=t*this.r3*e;var n=a.p1.v8.x;var h=a.p2.v8.x;var v=this.x;var f=this.x+this.width;var c=v-n;var u=h-f;var o=h-n;var l=1;if(a.v4<0&&c>0){if(this.index==0){l=1+(o-this.width-c)*-a.v4/(o*80)}}else if(a.v4>0&&u>0){if(this.index==0){l=1+(o-this.width-u)*a.v4/(o*80)}}if(l<1){l=1}var d=.8;var p=1;if(this.h2>0){d+=.4}if(this.l8){if(this.v7>8e3){if(!this.v6&&!this.q0){this.m6=1.2;this.v6=true}}else{d-=.5;this.v6=false}}else{this.v6=false}if(this.m6>0&&this.v7>8e3){this.m6-=t;d-=.04;if(this.h8==0){if(this.s4){this.h8=-1}if(this.q8){this.h8=1}}}else{this.v6=false;this.m6=0;this.h8=0}var x=this.v5;if(this.l5){this.v5=this.o1>0&&this.v7>8e3&&this.q0}else{this.v5=false}if(this.v5){p=1.2;i=this.i8}this.u8=3.4;if(c<-this.width*.1||u<-this.width*.1){if(c+this.width*.1<-r.r0||u+this.width*.1<-r.r0){this.u8=9.5;d-=.6;p-=.2}else{d-=.1;this.u8=6}}this.u8=this.u8*r9()*e;if(this.index==0&&race.state!=5){this.x=this.x-s*e*r.v4*this.n4;if(this.h8!=0){s=s*.5}if(this.s4)this.x=this.x-s;else if(this.q8)this.x=this.x+s;var g=this.h8*this.v7*55e-5;this.x+=g;this.z=l0(this.z,t*this.v7*l,v3.r2());this.y=g4(a.p1.v8.y,a.p3.v8.y,this.percent);this.t9=0;if(this.q0){if(this.v5){var m=l2();if(!x){this.v5StartTime=m}this.o1-=t*2.45;b0(m-this.v5StartTime)}if(this.v7<i*d){this.v7=this.k7(this.v7,this.accel*p,t)}else{this.v7=this.k7(this.v7,this.decel,t);if(this.v7<i*d){this.v7=i*d}}}else if(this.brake){this.v7=this.k7(this.v7,this.r8,t)}else{this.v7=this.k7(this.v7,this.decel,t)}for(var w=0;w<r.t1.length;w++){var k=r.t1[w];var y=k.s*k.u5.cw;var b=k.x+k.u5.cx*k.s;var q=this.x;if(this.t0(q,this.width,b,y,1)){if(this.index==0){g8();this.p8=0;this.h2=0}this.v7=i/5;this.z=l0(r.p1.v8.z,0,v3.r2());break}}var z=false;for(var I=0;I<cars.length;I++){var j=cars[I].z-u1.z;if(u1.z>v3.r2()-1200){j-=v3.r2()}if(j>0&&j<1800){var T=(u1.x-cars[I].x)/cars[I].width;if(T<0){T=-T}if(T<.4){z=true}}}if(z&&this.v7>8e3){this.p8+=t*1;if(this.p8>.14){this.h2=2}}else{this.p8=0}if(this.h2>0){this.h2-=t}}else{if(this.v7<i){this.v7=this.k7(this.v7,this.accel,t)}var M=this.d1(a,r,u1.width);var C=this.x+M*s;if(a.v4==0){this.s4=M==-1;this.q8=M==1}else{this.s4=a.v4<-.5;this.q8=a.v4>.5}if(C+this.width<h*.6&&C>n*.8){this.x=C}this.z=l0(this.z,t*this.v7,v3.r2())}this.percent=b2(this.z,v2.u0Length);var L=v3.n1(this.z);if(this.index===0){for(w=0;w<L.cars.length;w++){var P=L.cars[w];if(P.index!=this.index){if(this.v7>P.v7){if(this.t0(this.x,this.width,P.x,P.width,1)){if(this.index!==0){this.v7=P.v7/2;if(P.index!==0){P.v7=P.v7*1.2}}else{if(this.index==0){g8();this.p8=0;this.h2=0}this.v7=P.v7;this.z=P.z-100}break}}}}}if(this.x+this.width/2<n-1.2*this.width){this.x=n-1.2*this.width-this.width/2}if(this.x+this.width/2>h+1.2*this.width){this.x=h+1.2*this.width-this.width/2}this.v7=this.limit(this.v7,0,i);if(this.index==0){b5(this.v7Percent)}if(a!=L){var S=a.cars.indexOf(this);a.cars.splice(S,1);L.cars.push(this)}if(this.z<v2.u0Length*1.2&&!this.lapStarted){this.lap++;this.lapStarted=true;this.lastLapTime=this.h5;if(this.lap==2&&this.index==0){speak("lap time "+this.d2().toFixed(2))}this.h5=0}else{if(this.z>v2.u0Length*1.2){this.lapStarted=false}this.h5+=t}var R=this.position;this.position=1;for(var I=0;I<cars.length;I++){if(I!=this.index){if(cars[I].lap>this.lap){this.position++}else if(cars[I].lap===this.lap){if(cars[I].z>this.z){this.position++}}}}if(this.index==0){if(this.e7>0){this.e7-=t}if(this.position!==R){this.newPosition=this.n2();this.e7=1}}if(this.index===0&&this.lap===3&&race.state!=5){this.g5=this.n2();speak("Race. Over.");speak(this.g5+" Place");this.v5=false;this.p8=0;this.h2=0;race.raceOver()}},d1:function(t,i,a){var r=60;var e=null;var s=v3.o9Count();for(var h=1;h<r;h++){e=v3.o9((t.index+h)%s);var v=e.p1.v8.x;var f=e.p2.v8.x;var c=0;if(h<8){for(n=0;n<e.cars.length;n++){var u=e.cars[n];var o=u.x;var l=u.width;var d=u.x+u.width;if(f-d<this.width*1.4){c=-1}else if(o-v<this.width*1.4){c=1}else{if(o-v>f-d){c=-1}else{c=1}}return c*3/h}}}if(this.c5){for(var h=1;h<r;h++){e=v3.o9((t.index+h)%s);var v=e.p1.v8.x;var f=e.p2.v8.x;if(e.v4>0){if(h<5){return 1/5}return 2/h}if(e.v4<0){if(h<5){return-1/5}return 2/h}}}return 0}};var e4="#a02222",g2="#BBBBBB",d4="#000000",g3="#000000",n9="#000000";var v2=function(){this.v3Length=0;this.l4=0;this.u0s=[];this.map=null};var q4=1200;v2.u0Length=300;var lanes=1;v2.prototype={buildv20:function(){q1=0;this.u0s=[];this.m9(200);this.e9()},createStreetLights:function(){var t=this.o9Count();for(var i=0;i<t;i++){var a=this.u0s[i];if(i%20==0){var r=a.p1.v8.x;a.t1.push({u5:a7,s:12,x:r-12*a7.w+700});var r=a.p2.v8.x;a.t1.push({u5:a5,s:12,x:r-700})}}},createRoadsideObjects:function(t,i,a,r,e){var s=this.o9Count();var n=0;for(var h=0;h<s;h++){var v=this.u0s[h];var f=r9();if(v.v4!=0&&e){if(n%20==0){if(v.v4>0){var c=v.p1.v8.x;v.t1.push({u5:d0,s:3,x:c-3*d0.w-400})}else{var c=v.p2.v8.x;v.t1.push({u5:d8,s:3,x:c+400})}}n++}else{n=0;var u=t[m8(t.length)];if(f>i){var c=v.p1.v8.x;v.t1.push({u5:u,s:a,x:c-a*u.w/2-r});var c=v.p2.v8.x;v.t1.push({u5:u,s:a,x:c-a*u.w/2+r})}}}},o3:function(){n9="#3a3a3a";d4="#047804",g3="#006A00";c6=q2;q1=0;j2();e5();createTrees();b1();a3();o6();var t=this;t.m9(50);t.g6(1,0);t.t3(50,50,39,0,40,0);t.g6(1,0);t.m9(25);t.g9(-1,0);t.g9(1,0);t.addHill(50,40);t.g6(1,0);t.g9(-1,0);t.g9(1,0);t.g6(1,-40);t.m9(50,-40);t.m9(55,0);t.e9();t.drawMap();t.createRoadsideObjects(k1,.9,10,900,true)},o2:function(){n9="#3a3a3a";d4="#047804";g3="#006A00";c6=q2;q1=0;j2();o6();e5();createTrees();b1();a3();j5();var t=this;t.m9(20);t.m9(46,0);t.g6(1,30);t.m9(90,0);t.d7(1,0);t.m9(25,0);t.d7(1,50);t.m9(25,0);t.d7(-1,0);t.m9(68,-50);t.d7(-1,0);t.d7(1,0);t.d7(1,0);t.m9(48,0);t.g6(1,-30);t.m9(38,0);t.g9(-1,0);t.g9(1,0);t.e9();t.drawMap();t.createRoadsideObjects([e8],.3,6,1300,true)},n8:function(){n9="#3a3a3a";d4="#5a5a5a";g3="#626262";c6=q2;q1=0;j2();o6();f8(false);c3(false);a4(false);var t=this;t.m9(100);t.d7(1,0);t.m9(151,0);t.h1(1,0);t.m9(30,0);t.h1(1,0);t.m9(80,0);t.d7(-1,0);t.d7(-1,0);t.m9(20,0);t.d7(1,0);t.m9(10,0);t.h1(1,0);t.m9(50,0);t.d7(-1,0);t.d7(1,0);t.d7(1,0);t.m9(62,0);t.e9();t.drawMap();t.createRoadsideObjects(c8,.95,20,3300,false);t.createStreetLights()},o4:function(){n9="#111111";c6="#555555";q1="#000000";d4="#090909";g3="#030303";j2();o6();f8(true);c3(true);a4(true);i0();var t=this;t.m9(100);t.addHardCurve180(1,0);t.h1(-1,0);t.m9(40,0);t.h1(1,0);t.h1(-1,0);t.h1(1,0);t.m9(50,0);t.d7(-1,0);t.m9(20,0);t.d7(1,0);t.h1(1,0);t.m9(60,0);t.d7(-1,0);t.d7(1,0);t.m9(51,0);t.h1(1,0);t.m9(110,0);t.e9();t.drawMap();t.createRoadsideObjects(c8,.95,20,3300,false);t.createStreetLights()},lastY:function(){return this.u0s.length==0?0:this.u0s[this.u0s.length-1].p3.v8.y},o9:function(t){return this.u0s[t]},o9Count:function(){return this.u0s.length},r2:function(){return this.v3Length},e9:function(){this.v3Length=v3.u0s.length*v2.u0Length},addSegment:function(t,i){var a=this.u0s.length;var r=this.lastY();var e=i;var s=a*v2.u0Length;var n=(a+1)*v2.u0Length;var h=-q4;var v=q4;var f=0;if(t!=0){f=t*40;if(f<0){f=-f}f+=60}this.u0s.push({index:a,p1:{v8:{x:h,y:r,z:s},v0:{},u6:{}},p2:{v8:{x:v,y:r,z:s},v0:{},u6:{}},p3:{v8:{x:v,y:e,z:n},v0:{},u6:{}},p4:{v8:{x:h,y:e,z:n},v0:{},u6:{}},v4:t,r0:f,t1:[],cars:[],color:false?u4.DARK:u4.LIGHT})},easeIn:function(t,i,a){return t+(i-t)*Math.pow(a,2)},easeOut:function(t,i,a){return t+(i-t)*(1-Math.pow(1-a,2))},easeInOut:function(t,i,a){return t+(i-t)*(-Math.cos(a*Math.PI)/2+.5)},t3:function(t,i,a,r,e,s){var s=s||0;var n=this.l4+s;var h=this.lastY();var v=h+Math.floor(e)*v2.u0Length;var f,c=t+i+a;var u=0;var o=0;var l=this.u0s.length;for(f=0;f<t;f++){u=this.easeIn(0,r,f/t);o+=u;this.addSegment(u,this.easeInOut(h,v,f/c))}for(f=0;f<i;f++){u=r;o+=u;this.addSegment(r,this.easeInOut(h,v,(t+f)/c))}for(f=0;f<a;f++){u=this.easeInOut(r,0,f/a);o+=u;this.addSegment(u,this.easeInOut(h,v,(t+i+f)/c))}var d=0;if(o!=0){d=(n-this.l4)/o}for(var p=l;p<this.u0s.length;p++){this.l4+=this.u0s[p].v4*d;this.u0s[p].angle=this.l4}this.l4=n;this.u0s[this.u0s.length-1].angle=n},m9:function(t,i){i=i||0;this.t3(t,t,t,0,i,0)},addBumps:function(){this.t3(10,10,10,0,5);this.t3(10,10,10,0,-2);this.t3(10,10,10,0,-5);this.t3(10,10,10,0,8);this.t3(10,10,10,0,5);this.t3(10,10,10,0,-7);this.t3(10,10,10,0,5);this.t3(10,10,10,0,-2)},g6:function(t,i){this.t3(25,100*1.4,25,t*4.25,i,t*90)},g9:function(t,i){this.t3(25,50,25,t*4.25,i,t*30)},d7:function(t,i){this.t3(25,50*1.5,25,t*6*.96,i,t*90)},h1:function(t){this.t3(18,50*.8,18,t*8,0,t*90)},addHardCurve180:function(){this.t3(50,50,50,7.5,0,180)},addHill:function(t,i){this.t3(t,t,t,0,i,0)},t3sideObject:function(t,i,a){var r=this.u0s[t];var e=0;if(a<0){e=r.p1.v8.x-600}else{e=r.p2.v8.x+600}r.t1.push({u5:i,x:e})},n1:function(t){return this.u0s[Math.floor(t/v2.u0Length)%this.u0s.length]},drawMap:function(){if(this.map==null){this.map=document.createElement("canvas")}this.map.width=600;this.map.height=600;cntx=this.map.getContext("2d");var t=canvas.width;var i=canvas.height;j7(600,600);g0("#666666");cntx.lineWidth=5;var a=0;var r=300;var e=30;k3();var s=.5;p0(r,e);for(var n=0;n<this.u0s.length;n++){a=this.u0s[n].angle/180*PI;r+=s*cos(a);e+=s*sin(a);o8(r,e);this.u0s[n].x=r;this.u0s[n].y=e}p2();g0(q7);cntx.lineWidth=4;p2();s=4;t6.lineWidth=3;g0(q7);k3();a=(this.u0s[0].angle+90)/180*PI;r-=s*cos(a);e-=s*sin(a);p0(r,e);r+=2*s*cos(a);e+=2*s*sin(a);o8(r,e);p2()},c9:function(){cntx=j1.x;this.m7=j1.c;j7(600,600);i5(this.map,0,0,600,600,0,0,600,600);for(var t=0;t<cars.length;t++){var i=cars[t].z;var a=v3.n1(i);k3();t4(a.x,a.y,5,0,2*PI,false);k4(r4);s9();cntx.lineWidth=2;g0("#999999");p2()}var r=cars[0].z;var e=v3.n1(r);k3();t4(e.x,e.y,5,0,2*PI,false);k4("#ff0000");s9();t6.lineWidth=2;g0(q2);p2()}};var v3=null;var numbers=["ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT"];var Race=function(){this.v3=null;this.state=0;this.f0=3;this.lastTime=0;this.s1=15;this.v3Number=0;this.zIsDown=false;this.xIsDown=false;this.raceNumber=0};Race.c4=800;Race.prototype={init:function(){},start:function(t){b5(0);if(t>=4){t=0}this.raceNumber=t;v3=new v2;switch(t){case 0:v3.o3();break;case 1:v3.o2();break;case 2:v3.n8();break;case 3:v3.o4();break}this.resetCars();u1=cars[0];u1.b6();this.state=0;this.f0=4;this.lastTime=l2()},raceOver:function(){this.state=5},keyDown:function(t){if(this.state!==5){switch(t.keyCode){case 90:this.zIsDown=true;u1.setDrift(true);break;case 88:this.xIsDown=true;u1.s2(true);break;case 38:u1.j0(true);break;case 40:u1.r5(true);break;case 37:u1.setTurnLeft(true);break;case 39:u1.k8(true);break}}else{}},keyUp:function(t){if(this.state!=5){switch(t.keyCode){case 90:this.zIsDown=false;u1.setDrift(false);break;case 88:this.xIsDown=false;u1.s2(false);break;case 38:u1.j0(false);break;case 40:u1.r5(false);break;case 37:u1.setTurnLeft(false);break;case 39:u1.k8(false);break}}else{if(t.keyCode==90){if(!this.zIsDown){this.start(this.raceNumber)}this.zIsDown=false}if(t.keyCode==88){if(!this.xIsDown){if(cars[0].g5=="1st"){this.start(this.raceNumber+1)}}this.xIsDown=false}}},resetCars:function(){cars=[];var t,i,a,r,e,s,n;for(var t=0;t<this.s1;t++){e=v3.r2()-(this.s1-t)*v2.u0Length*13;a=v3.n1(e);var h=a.p1.v8.x;var v=a.p2.v8.x;i=new Car;var f=0;if(t%2){f=h/2}else{f=v/2-i.width}i.index=t;i.x=f;i.z=e;i.sprite=s;i.v7=0;i.percent=b2(i.z,v2.u0Length);if(i.index!==0){var c=23e3;if(i.index<8&&i.index>3){i.r6=c*.905-r9()*(this.s1-t-1)*c/55}else if(i.index>12){i.r6=c*.905-(this.s1-t-1)*c/65}else{i.r6=c*.905-(this.s1-t-1)*c/45}i.accel=c/2;if(i.index<4){i.c5=false}else if(i.index<8){i.c5=r9()>.4;i.slowOnCorners=r9()>.6}}a.cars.push(i);cars.push(i)}},j3:function(t){var i=l2();if(i-this.lastTime>Race.c4){this.lastTime=l2();this.f0--;if(this.f0==3){speak("RACE")}if(this.f0==2){speak(numbers[this.raceNumber])}if(this.f0<=0){this.state=1;this.f0=3;i7(220,1/4)}}v0.update(t)},f9:function(t){var i=l2();if(i-this.lastTime>Race.c4){this.lastTime=l2();this.f0--;if(this.f0<=0){i7(440,1/2);this.state=4}else{i7(220,1/4)}}v0.update(t)},updateRace:function(t){var i=v3.n1(u1.z);var a=u1.v7Percent;var r=t*2*a;var e=v0.z;for(var s=0;s<cars.length;s++){cars[s].update(t)}v0.update(t);h3=l0(h3,i2*i.v4*(v0.z-e)/v2.u0Length,1);h4=l0(h4,i3*i.v4*(v0.z-e)/v2.u0Length,1);h6=l0(h6,i4*i.v4*(v0.z-e)/v2.u0Length,1)},h7:function(){},update:function(t){switch(this.state){case 0:this.j3(t);break;case 1:this.f9(t);break;case 5:case 4:this.updateRace(t);break}},render:function(){l7();if(this.state==0){t6.font="italic bold 350px "+q6;if(this.f0<4){k4(r4);k9("RACE",14,304);k4(q7);k9("RACE",10,300)}if(this.f0<3){if(this.raceNumber==0){t6.font="italic bold 440px "+q6}else if(this.raceNumber==1){t6.font="italic bold 430px "+q6}else if(this.raceNumber==2){t6.font="italic bold 290px "+q6}else if(this.raceNumber==3){t6.font="italic bold 358px "+q6}k4(r4);k9(numbers[this.raceNumber],14,674);k4(q7);k9(numbers[this.raceNumber],10,670)}}if(this.state==1){t6.font=" 300px "+q6;t6.fillStyle="#111111";t6.fillText(this.f0,449,254);t6.fillStyle=q7;t6.fillText(this.f0,445,250)}if(this.state==4){k4(q7);g0(q7);t6.font=" 80px "+q6;t6.fillText(u1.n2(),10,80);t6.font=" 40px "+q6;t6.fillText("Lap "+u1.getLap()+" of 2",10,130);t6.fillText("Lap Time: "+u1.d2().toFixed(2),10,180);t6.font=" 80px "+q6;var t=("000"+Math.round(u1.r7()/100).toString(10)).substr(-3);t6.fillText(t+"km/h",695,80);t6.font=" 40px "+q6;t6.fillText("Turbo ",670,136);k3();t6.rect(796,110,208,28);p2();m0(800,114,u1.o1*2,20);if(cars[0].e7>0){t6.font=" 160px "+q6;k4(q7);t6.fillText(cars[0].n2(),334,184)}}if(this.state==5){t6.font=" 300px "+q6;k4(q7);t6.fillText(cars[0].g5,300,290);t6.font=" 40px "+q6;var i=380;if(cars[0].g5=="1st"){t6.fillText("x: Next Race",397,i);i+=80}t6.fillText("z: Retry",445,i)}}};var canvas=document.getElementById("gameCanvas");var t6=canvas.getContext("2d");var u7=false;var l2=function(){return performance.now()};document.addEventListener("keydown",function(t){if(u7){race.keyDown(t)}else{m4.keyDown(t)}});document.addEventListener("keyup",function(t){if(u7){race.keyUp(t)}else{m4.keyUp(t)}});var now=l2();var last=l2();var dt=0;var gdt=0;var cars=[];var u1=null;var v0=new u3;var race=new Race;v3=new v2;var m4=new m5(canvas,t6);function startGame(t){i6();speak("Start");u7=true;v0.reset();race.start(0)}m4.init();function frame(){now=l2();dt=Math.min(1,(now-last)/1e3);gdt=gdt+dt;if(!u7){m4.render(dt);gdt=0}else{n3=false;var t=1/180;while(gdt>t){gdt=gdt-t;race.update(t)}v3.c9();race.render();last=now}requestAnimationFrame(frame)}frame();var s0=null;var n7=null;var f6=null;var f5=null;var d5=0;var f4=0;var d6=1;var f3=1;var f7=[];var g7=[];function b0(t){f3=1+t/1e4}function i6(){if(s0==null){s0=new(window.AudioContext||window.webkitAudioContext);a0();a1();a2();f6=s0.createScriptProcessor(1024,1,1);f6.onaudioprocess=function(t){var i=t.outputBuffer.getChannelData(0);var a;for(var r=0;r<i.length;++r){if(u1.v5){d5+=d6+Math.random();f4+=f3;a=Math.floor(f4)%g7.length;i[r]=g7[a];a=Math.floor(d5)%f7.length;i[r]+=f7[a]+Math.random()*.01}else{d5+=d6+Math.random()*1;a=Math.floor(d5)%f7.length;i[r]=f7[a]+Math.random()*.01}if(u1.h2>0){i[r]+=Math.random()*.4}}d5%=f7.length;f4%=g7.length};f5=s0.createGain();f5.gain.value=.14;f6.connect(f5);f5.connect(s0.destination)}}function a1(){var t=1024;g7=[];var i=0;for(var a=0;a<t;a++){for(var r=0;r<12;r++){g7[i++]=Math.random()*.01;if(i>=t){break}}var e=.2;if(i<t){for(var s=0;s<2;s++){g7[i++]=e;if(i>=t){break}}}}for(var a=0;a<t;a++){g7[a]+=Math.random()*.5-.05}}function a0(){var t=1024;f7=[];var i=1;var a,r;var e=0;f7[e++]=1;for(var s=.05;s<1;s+=Math.random()/8+.01){r=Math.floor(s*t);a=Math.random()*2-1;var n=r-(e-1);var h=(a-i)/n;for(var v=0;v<n;v++){f7[e++]=i+h*v}i=a}n=t-(e-1);var h=(1-i)/n;for(var v=0;v<n;v++){f7[e++]=i+h*v}}function a2(){var t=2*s0.sampleRate;n7=s0.createBuffer(1,t,s0.sampleRate);var i=n7.getChannelData(0);for(var a=0;a<t;a++){i[a]=Math.random()*2-1}}function i7(t,i){var a=s0.createGain();var r=s0.createOscillator();r.connect(a);a.connect(s0.destination);r.type="triangle";r.frequency.value=t;a.gain.value=.1;r.start(s0.currentTime);r.stop(s0.currentTime+i)}function b5(t){d6=.2+t*2}function b8(){}var i1=0;function g8(){var t=l2();if(t-i1<1e3){return}i1=t;var i=1/2;var a=s0.createGain();var r=null;r=s0.createBufferSource();r.connect(a);a.connect(s0.destination);r.buffer=n7;a.gain.linearRampToValueAtTime(.5,s0.currentTime);a.gain.linearRampToValueAtTime(0,s0.currentTime+i*.7);r.playbackRate.setValueAtTime(.035,s0.currentTime);r.playbackRate.setValueAtTime(.002,s0.currentTime+i);r.start(s0.currentTime);r.stop(s0.currentTime+i)}var i9="";function speak(t){var i=window.speechSynthesis.getVoices();if(i9==""){for(var a=0;a<i.length;a++){if(i[a].lang==="en-GB"){i9=i[a];break}}if(i9===""&&i.length>0){i9=i[0]}}var r=new SpeechSynthesisUtterance;r.text=t;if(i9!=""){r.voice=i9}window.speechSynthesis.speak(r)}
</script>
</body>
</html>