Advertisement
Guest User

code

a guest
Jan 18th, 2020
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 4.83 KB | None | 0 0
  1. <!doctype html>
  2. <html>
  3. <body onKeyDown="vira(event.keyCode);" onKeyUp="para(event.keyCode);" bgcolor=#e1e1e1>
  4.     <center>
  5.         <canvas id=canvas width=460 height=460 style='border:4px solid #497894; border-radius:10px;'></canvas>
  6.         <div style='position:absolute; margin:auto; left:0; right:0; z-index:2; top:420px; width:20px; height:40px; background-color:#000000; border-radius:4px;'><div style='width:10px; height:4px; background-color:#000000; border:5px solid #ff4444; border-top:none; border-bottom:none;'></div><div style='width:14px; height:20px; background-color:#ffffff; border:3px solid #000000;'></div></div>
  7.         <div id=score style='font-size:24px; font-family:Courier;'></div>
  8.     </center>
  9. </body>
  10. <script>
  11. ctx=document.getElementById("canvas").getContext("2d");
  12. fatorx=[0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1];
  13. fatory=[9,8,7,6,5,4,3,2,1,0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8];
  14. pista=[
  15. [2,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,2,3,3,3,3,3,0],
  16. [2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,1,0],
  17. [2,0,4,4,4,4,4,4,4,4,2,0,1,0,0,0,2,0,4,4,4,1,0],
  18. [2,0,1,0,0,0,0,0,0,0,2,0,1,0,0,0,2,0,1,0,0,0,0],
  19. [2,0,1,0,2,3,3,0,0,0,2,0,1,0,0,0,2,0,1,3,3,3,3],
  20. [2,0,1,0,2,0,1,0,0,0,2,0,1,0,0,0,2,0,0,0,0,0,1],
  21. [2,0,1,0,2,0,1,0,0,0,4,4,1,0,0,0,4,4,4,4,2,0,1],
  22. [2,0,1,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1],
  23. [2,0,1,0,2,0,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,1],
  24. [2,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
  25. [2,0,1,0,4,4,4,4,2,0,4,4,2,0,4,4,4,4,4,4,4,4,1],
  26. [2,0,1,0,0,0,0,0,2,0,1,0,2,0,1,0,0,0,0,0,0,0,0],
  27. [2,0,1,3,3,3,3,3,3,0,1,0,2,0,1,0,0,0,0,0,0,0,0],
  28. [2,0,0,0,0,0,0,0,0,0,1,0,2,0,1,0,0,0,0,0,0,0,0],
  29. [4,4,4,4,4,4,4,4,4,4,1,0,4,4,1,0,0,0,0,0,0,0,0]
  30. ];
  31. angulo=0;
  32. function inicia(){
  33.     ctx.translate(230,460);
  34.     ctx.rotate(Math.PI/18*angulo);
  35.     ctx.translate(-230,-460);
  36.     tempo=0;
  37.     angulo=0;
  38.     px=-1120;
  39.     py=-1072;
  40.     esq=false;
  41.     dir=false;
  42.     ctx.fillStyle="#9aba9a";
  43.     ctx.fillRect(-1000,-1000,2000,2000);
  44.     for(x=0;x<3;x++){
  45.         ctx.fillStyle="#385383";
  46.         ctx.fillRect(128,(200*x),200,200);
  47.         ctx.fillStyle="#444444";
  48.         ctx.moveTo((128)+80,(200*x)+30);
  49.         ctx.lineTo((128)+120,(200*x)+30);
  50.         ctx.lineTo((128)+120,(200*x)-20);
  51.         ctx.lineTo((128)+150,(200*x)-20);
  52.         ctx.lineTo((128)+100,(200*x)-70);
  53.         ctx.lineTo((128)+50,(200*x)-20);
  54.         ctx.lineTo((128)+80,(200*x)-20);
  55.         ctx.fill();
  56.     }
  57. }
  58. inicia();
  59. function vira(k){
  60.     if(k==37)esq=true;
  61.     if(k==39)dir=true;
  62.     if(tempo==0)move();
  63. }
  64. function para(k){
  65.     esq=false;
  66.     dir=false;
  67. }
  68. function move(){
  69.     if(esq)angulo=(angulo+35)%36;
  70.     if(dir)angulo=(angulo+1)%36;
  71.     ctx.translate(230,460);
  72.     if(esq)ctx.rotate(Math.PI/18);
  73.     if(dir)ctx.rotate(-Math.PI/18);
  74.     ctx.translate(-230,-460);
  75.     ctx.fillStyle="#9aba9a";
  76.     ctx.fillRect(-1000,-1000,2000,2000);
  77.     for(x=0;x<pista.length;x++)for(y=0;y<pista[x].length;y++)if(pista[x][y]!=0){
  78.         ctx.fillStyle="#385383";
  79.         ctx.fillRect((200*y)+py,(200*x)+px,200,200);
  80.         ctx.fillStyle="#444444";
  81.         ctx.beginPath();
  82.         if(pista[x][y]==1){
  83.             ctx.moveTo((200*y)+80+py,(200*x)+150+px);
  84.             ctx.lineTo((200*y)+120+py,(200*x)+150+px);
  85.             ctx.lineTo((200*y)+120+py,(200*x)+100+px);
  86.             ctx.lineTo((200*y)+150+py,(200*x)+100+px);
  87.             ctx.lineTo((200*y)+100+py,(200*x)+50+px);
  88.             ctx.lineTo((200*y)+50+py,(200*x)+100+px);
  89.             ctx.lineTo((200*y)+80+py,(200*x)+100+px);
  90.             ctx.fill();
  91.         }
  92.         if(pista[x][y]==2){
  93.             ctx.moveTo((200*y)+80+py,(200*x)+50+px);
  94.             ctx.lineTo((200*y)+120+py,(200*x)+50+px);
  95.             ctx.lineTo((200*y)+120+py,(200*x)+100+px);
  96.             ctx.lineTo((200*y)+150+py,(200*x)+100+px);
  97.             ctx.lineTo((200*y)+100+py,(200*x)+150+px);
  98.             ctx.lineTo((200*y)+50+py,(200*x)+100+px);
  99.             ctx.lineTo((200*y)+80+py,(200*x)+100+px);
  100.             ctx.fill();
  101.         }
  102.         if(pista[x][y]==3){
  103.             ctx.moveTo((200*y)+150+py,(200*x)+80+px);
  104.             ctx.lineTo((200*y)+150+py,(200*x)+120+px);
  105.             ctx.lineTo((200*y)+100+py,(200*x)+120+px);
  106.             ctx.lineTo((200*y)+100+py,(200*x)+150+px);
  107.             ctx.lineTo((200*y)+50+py,(200*x)+100+px);
  108.             ctx.lineTo((200*y)+100+py,(200*x)+50+px);
  109.             ctx.lineTo((200*y)+100+py,(200*x)+80+px);
  110.         }
  111.         if(pista[x][y]==4){
  112.             ctx.moveTo((200*y)+50+py,(200*x)+80+px);
  113.             ctx.lineTo((200*y)+50+py,(200*x)+120+px);
  114.             ctx.lineTo((200*y)+100+py,(200*x)+120+px);
  115.             ctx.lineTo((200*y)+100+py,(200*x)+150+px);
  116.             ctx.lineTo((200*y)+150+py,(200*x)+100+px);
  117.             ctx.lineTo((200*y)+100+py,(200*x)+50+px);
  118.             ctx.lineTo((200*y)+100+py,(200*x)+80+px);
  119.         }
  120.         ctx.fill();
  121.     }
  122.     document.getElementById('score').innerHTML=(100-(parseInt((680-(tempo))/20)))+' Km/H';
  123.     lx=Math.ceil((-px+60)/200)+1;
  124.     ly=Math.ceil((-py+26)/200);
  125.     if(lx>=0&&ly>=0&&lx<pista.length&&ly<pista[0].length&&pista[lx][ly]!=0){
  126.         py+=fatorx[angulo]*3.7;
  127.         px+=fatory[angulo]*3.7;
  128.         setTimeout('move();',30+(parseInt((680-(tempo++))/40)));
  129.     }
  130.     else{
  131.         if(tempo>38)alert('You reached '+parseInt(Math.min(tempo,1000)/10)+' percent !');
  132.         inicia();
  133.     }
  134. }
  135. </script>
  136. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement