2017-01-01 2 views
0

J'essaye de faire une page Web pour stocker tous mes jeux sur j'ai juste commencé et j'ai essayé de faire un bouton pour charger mon jeu de pong mais quand j'appuie sur le bouton rien ne se passe est ici mon codeLe bouton HTML et Javascript ne fonctionne pas

<!DOCTYPE html> 
<html lang = "en"> 
    <head> 
     <title>Title</title> 
     <meta charset="UTF-8"> 
     <style> 
      canvas { 
       position: absolute; 
       margin: auto; 
       top: 0; 
       bottom: 0; 
       left: 0; 
       right: 0; 
      } 
     </style> 
    </head> 
    <body> 
    <center> 
     <h1>Games</h1> 

bouton code

 <input id="Pong" type="button" value="Pong" onclick="go();" /> 

code pong

 <script> 
      function go(){ 
      var WIDTH = 700, HEIGHT = 600, pi = Math.PI; 
      var UpArrow = 38, DownArrow = 40; 
      var canvas, ctx, keystate; 
      var player, ai, ball, score; 

      player = { 
       x: null, 
       y: null, 
       width: 20, 
       height: 100, 

       update: function(){ 
        if(keystate[UpArrow]) this.y -= 7; 
        if(keystate[DownArrow]) this.y += 7; 
       }, 
       draw: function(){ 
        ctx.fillRect(this.x, this.y, this.width, this.height); 
       } 
      }; 
      ai = { 
       x: null, 
       y: null, 
       width: 20, 
       height: 100, 

       update: function(){ 
        var desty = ball.y - (this.height - ball.side)*0.5; 
        this.y += (desty - this.y) * 0.1; 
       }, 
       draw: function(){ 
        ctx.fillRect(this.x, this.y, this.width, this.height); 
       } 
      }; 
      ball = { 
       x: null, 
       y: null, 
       vel: null, 
       side: 20, 
       speed: 9, 

       serve: function(side){ 
        var r = Math.random(); 
        this.x = side===1 ? player.x : ai.x - this.side; 
        this.y = (HEIGHT - this.side)*r; 
        score.count += 1; 

        var phi = 0.1*pi*(1 - 2*r); 
        this.vel = { 
         x: side*this.speed*Math.cos(phi), 
         y: this.speed*Math.sin(phi) 
        }; 
       score = { 
        x: null, 
        y: null, 
        count: 0, 
        width: 10, 
        height: 10, 


        update: function(){ 
         Console.log(this.count); 
        }, 
        draw: function(){ 
         ctx.fillRect(this.x, this.y, this.width, this.height); 
       } 
      }; 
       }, 
       update: function(){ 
        this.x += this.vel.x; 
        this.y += this.vel.y; 

        if(0 > this.y || this.y+this.side > HEIGHT){ 
         var offset = this.vel.y < 0 ? 0 - this.y : HEIGHT - (this.y+this.side); 
         this.y += 2*offset; 
         this.vel.y *= -1; 
        } 

        var AABBIntersect = function(ax, ay, aw, ah, bx, by, bw, bh){ 
         return ax < bx+bw && ay < by+bh && bx < ax+aw && by < ay+ah; 
        }; 

        var pdle = this.vel.x < 0 ? player : ai; 
        if(AABBIntersect(pdle.x, pdle.y, pdle.width, pdle.height, this.x, this.y, this.side, this.side)){ 
         this.x = pdle===player ? player.x+player.width : ai.x - this.side; 
         var n = (this.y + this.side - pdle.y)/(pdle.height+this.side); 
         var phi = 0.25*pi*(2*n - 1); 

         var smash = Math.abs(phi) > 0.2*pi ? 1.5 : 1; 
         this.vel.x = smash*(pdle === player ? 1 : -1)*this.speed*Math.cos(phi); 
         this.vel.y = smash*this.speed*Math.sin(phi); 
        } 

        if(0 > this.x+this.side || this.x > WIDTH){ 
         this.serve(pdle === player ? 1 : -1); 
        } 
       }, 
       draw: function(){ 
        ctx.fillRect(this.x, this.y, this.side, this.side); 
       } 
      }; 

      function main(){ 
       canvas = document.createElement("canvas"); 
       canvas.width = WIDTH; 
       canvas.height = HEIGHT; 
       ctx = canvas.getContext("2d"); 
       document.body.appendChild(canvas); 

       keystate = {}; 
       document.addEventListener("keydown", function(evt) { 
        keystate[evt.keyCode] = true; 
       }); 
       document.addEventListener("keyup", function(evt) { 
        delete keystate[evt.keyCode]; 
       }); 

       init(); 

       var loop = function(){ 
        update(); 
        draw(); 
        window.requestAnimationFrame(loop, canvas); 
       }; 
       window.requestAnimationFrame(loop, canvas); 
      } 

      function init(){ 
       player.x = player.width; 
       player.y = (HEIGHT - player.height)/2; 

       ai.x = WIDTH - (player.width + ai.width); 
       ai.y = (HEIGHT - ai.height)/2; 

       ball.serve(1); 
      } 

      function update(){ 
       ball.update(); 
       player.update(); 
       ai.update(); 
      } 

      function draw(){ 

       ctx.fillRect(0, 0, WIDTH, HEIGHT); 

       ctx.save(); 
       ctx.fillStyle = "#fff"; 

       ball.draw(); 
       player.draw(); 
       ai.draw(); 

       var w = 4; 
       var x = (WIDTH - w) * 0.5; 
       var y = 0; 
       var step = HEIGHT/15; 
       while (y < HEIGHT){ 
        ctx.fillRect(x, y + step * 0.25, w, step * 0.5); 
        y += step; 
       } 

       ctx.restore(); 
      } 

      main(); 
     } 
     </script> 

fin de pong code

 </center> 
    </body> 
</html> 
+0

Vous définissez '' score' _inside_ ball.serve', après avoir utilisé une propriété inexistante de celui-ci. Vous devriez le définir à l'extérieur. En outre, c'est 'console.log', pas' Console.log'. Ensuite, vous appelez 'ball.update' qui n'existe pas. Utilisez la [console du navigateur] (http://webmasters.stackexchange.com/q/8525) et lisez les erreurs. Utilisez [JSHint] (http://jshint.com/) pour trouver immédiatement des problèmes avec votre code. – Xufox

Répondre

0

J'ai simplement pris les solutions de @ Xufox et les ai écrites. En outre serperated le JS, le CSS, et le HTML. profiter

function go(){ 
 
    score = { 
 
        x: null, 
 
        y: null, 
 
        count: 0, 
 
        width: 10, 
 
        height: 10, 
 

 

 
        update: function(){ 
 
         console.log(this.count); 
 
        }, 
 
        draw: function(){ 
 
         ctx.fillRect(this.x, this.y, this.width, this.height); 
 
       } 
 
      }; 
 
      var WIDTH = 700, HEIGHT = 600, pi = Math.PI; 
 
      var UpArrow = 38, DownArrow = 40; 
 
      var canvas, ctx, keystate; 
 
      var player, ai, ball, score; 
 

 
      player = { 
 
       x: null, 
 
       y: null, 
 
       width: 20, 
 
       height: 100, 
 

 
       update: function(){ 
 
        if(keystate[UpArrow]) this.y -= 7; 
 
        if(keystate[DownArrow]) this.y += 7; 
 
       }, 
 
       draw: function(){ 
 
        ctx.fillRect(this.x, this.y, this.width, this.height); 
 
       } 
 
      }; 
 
      ai = { 
 
       x: null, 
 
       y: null, 
 
       width: 20, 
 
       height: 100, 
 

 
       update: function(){ 
 
        var desty = ball.y - (this.height - ball.side)*0.5; 
 
        this.y += (desty - this.y) * 0.1; 
 
       }, 
 
       draw: function(){ 
 
        ctx.fillRect(this.x, this.y, this.width, this.height); 
 
       } 
 
      }; 
 
      ball = { 
 
       x: null, 
 
       y: null, 
 
       vel: null, 
 
       side: 20, 
 
       speed: 9, 
 

 
       serve: function(side){ 
 
        var r = Math.random(); 
 
        this.x = side===1 ? player.x : ai.x - this.side; 
 
        this.y = (HEIGHT - this.side)*r; 
 
        score.count += 1; 
 

 
        var phi = 0.1*pi*(1 - 2*r); 
 
        this.vel = { 
 
         x: side*this.speed*Math.cos(phi), 
 
         y: this.speed*Math.sin(phi) 
 
        }; 
 
     
 
       }, 
 
       update: function(){ 
 
        this.x += this.vel.x; 
 
        this.y += this.vel.y; 
 

 
        if(0 > this.y || this.y+this.side > HEIGHT){ 
 
         var offset = this.vel.y < 0 ? 0 - this.y : HEIGHT - (this.y+this.side); 
 
         this.y += 2*offset; 
 
         this.vel.y *= -1; 
 
        } 
 

 
        var AABBIntersect = function(ax, ay, aw, ah, bx, by, bw, bh){ 
 
         return ax < bx+bw && ay < by+bh && bx < ax+aw && by < ay+ah; 
 
        }; 
 

 
        var pdle = this.vel.x < 0 ? player : ai; 
 
        if(AABBIntersect(pdle.x, pdle.y, pdle.width, pdle.height, this.x, this.y, this.side, this.side)){ 
 
         this.x = pdle===player ? player.x+player.width : ai.x - this.side; 
 
         var n = (this.y + this.side - pdle.y)/(pdle.height+this.side); 
 
         var phi = 0.25*pi*(2*n - 1); 
 

 
         var smash = Math.abs(phi) > 0.2*pi ? 1.5 : 1; 
 
         this.vel.x = smash*(pdle === player ? 1 : -1)*this.speed*Math.cos(phi); 
 
         this.vel.y = smash*this.speed*Math.sin(phi); 
 
        } 
 

 
        if(0 > this.x+this.side || this.x > WIDTH){ 
 
         this.serve(pdle === player ? 1 : -1); 
 
        } 
 
       }, 
 
       draw: function(){ 
 
        ctx.fillRect(this.x, this.y, this.side, this.side); 
 
       } 
 
      }; 
 

 
      function main(){ 
 
       canvas = document.createElement("canvas"); 
 
       canvas.width = WIDTH; 
 
       canvas.height = HEIGHT; 
 
       ctx = canvas.getContext("2d"); 
 
       document.body.appendChild(canvas); 
 

 
       keystate = {}; 
 
       document.addEventListener("keydown", function(evt) { 
 
        keystate[evt.keyCode] = true; 
 
       }); 
 
       document.addEventListener("keyup", function(evt) { 
 
        delete keystate[evt.keyCode]; 
 
       }); 
 

 
       init(); 
 

 
       var loop = function(){ 
 
        update(); 
 
        draw(); 
 
        window.requestAnimationFrame(loop, canvas); 
 
       }; 
 
       window.requestAnimationFrame(loop, canvas); 
 
      } 
 

 
      function init(){ 
 
       player.x = player.width; 
 
       player.y = (HEIGHT - player.height)/2; 
 

 
       ai.x = WIDTH - (player.width + ai.width); 
 
       ai.y = (HEIGHT - ai.height)/2; 
 

 
       ball.serve(1); 
 
      } 
 

 
      function update(){ 
 
       ball.update(); 
 
       player.update(); 
 
       ai.update(); 
 
      } 
 

 
      function draw(){ 
 

 
       ctx.fillRect(0, 0, WIDTH, HEIGHT); 
 

 
       ctx.save(); 
 
       ctx.fillStyle = "#fff"; 
 

 
       ball.draw(); 
 
       player.draw(); 
 
       ai.draw(); 
 

 
       var w = 4; 
 
       var x = (WIDTH - w) * 0.5; 
 
       var y = 0; 
 
       var step = HEIGHT/15; 
 
       while (y < HEIGHT){ 
 
        ctx.fillRect(x, y + step * 0.25, w, step * 0.5); 
 
        y += step; 
 
       } 
 

 
       ctx.restore(); 
 
      } 
 

 
      main(); 
 
     }
canvas { 
 
       position: absolute; 
 
       margin: auto; 
 
       top: 0; 
 
       bottom: 0; 
 
       left: 0; 
 
       right: 0; 
 
      }
<!DOCTYPE html> 
 
<html lang = "en"> 
 
    <head> 
 
     <title>Title</title> 
 
     <meta charset="UTF-8"> 
 
    </head> 
 
    <body> 
 
    <center> 
 
     <h1>Games</h1> 
 

 
     <input id="Pong" type="button" value="Pong" onclick="go();" /> 
 

 

 

 

 
     </center> 
 
     <script type="text/javascript" src="javascript.js"></script> 
 
    </body> 
 
</html>