2017-08-06 13 views
0

矢印キーを押したときに2番目の四角形が消えるのはなぜですか? そして消えていく代わりに、2番目の四角は最初の四角に続くはずです。私はコードのすべての行をチェックし、何も間違っていると私は使用しているブラウザはGoogle Chromeです。なぜ2番目の四角形が消えますか

<!doctype html> 
    <html> 
    <head> 
    <title></title> 
    </head> 
    <body> 
    <canvas id="canvas" style="border:1px solid #000;"></canvas> 
    <script> 
    var canvas = document.getElementById("canvas"); 
    var ctx = canvas.getContext("2d"); 
    var width = 500; 
    var height = 500; 
    var win = false; 
    var player = { 
     x:250, 
     y:250, 
     speed:5, 
     width:100, 
     height:100 
    }; 
    var ai = { 
     x:150, 
     y:150, 
     mox:0, 
     moy:0, 
     speed:1, 
     width:50, 
     height:50 
    }; 
    canvas.width = width; 
    canvas.height = height; 
    ctx.fillRect(player.x, player.y, player.width, player.height); 
    ctx.stroke(); 
    ctx.fillRect(ai.x, ai.y, ai.width, ai.height); 
    ctx.stroke(); 
    function a() { 
     if(player.x < ai.x && win==false) { 
      ai.mox-=ai.speed; 
     } 
     if(player.x > ai.x && win==false) { 
      ai.mox = ai.speed; 
     } 
     if(player.y < ai.y && win==false) { 
      ai.moy -= ai.speed; 
     } 
     if(player.y > ai.y && win==false) { 
      ai.moy = ai.speed; 
     } 
     canvas.width = canvas.width; 
     var ctx = canvas.getContext("2d"); 
     ctx.fillRect(ai.x, ai.y, ai.width, ai.height); 
     ctx.stroke(); 
    } 
function move(e) { 
    // alert(e.keyCode); 
    if(e.keyCode==37) { 
     player.x -= player.speed; 
    } 
    if(e.keyCode==39) { 
     player.x += player.speed; 
    } 
    if(e.keyCode==38) { 
     player.y -= player.speed; 
    } 
    if(e.keyCode==40) { 
     player.y+=player.speed; 
    } 
    ai.x += ai.mox; 
    ai.y += ai.moy; 
    a(); 
    canvas.width = canvas.width; 
    var ctx = canvas.getContext("2d"); 
    ctx.fillRect(player.x, player.y, player.width, player.height); 
    ctx.stroke(); 
} 
document.onkeydown = move; 
</script> 
</body> 
</html> 

私のコードが間違っているものを私に教えてください:

は、ここに私のコードです。また、シンタックスチェッカーは構文的に正しいと私に言った。

+0

実際に人間が読めるように、コードをフォーマットしてください。それから、あなたを助けることができるかもしれません。 – MarthyM

答えて

0

これにはいくつか問題がありますが、後でその問題に取り掛かります。 はすぐにあなたの問題を解決するには、すぐに戻って問題に

ctx.fillRect(player.x, player.y, player.width, player.height);


さて、後

ctx.fillRect(ai.x, ai.y, ai.width, ai.height);

を追加する必要があります。ほとんどのHTML5キャンバスゲームには、毎x MSと呼ばれるティック機能があります。これはまったく持っていないようです。コードには他にもいくつか微妙な問題がありますが、あなたがもっと学ぶにつれてそれらを理解することができると思います。運が良ければ:)

関連する問題