私はSnakeをコーディングしようとしていますが、少し問題があります。javascript - 変数を変更しない
var ctx = document.getElementById('ctx').getContext('2d');
var canvas = document.getElementById('ctx');
var y = [240, 230, 220];
var x = [240, 240, 240];
var xSpeed = 0;
var ySpeed = 0;
function load() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
for (p = 0; p < x.length; p++) {
ctx.fillStyle = "black";
ctx.fillRect(x[p], y[p], 10, 10);
}
}
function keyDown() {
var key = event.keyCode; /*getting keyCode of pressed key*/
ctx.fillStyle = "black"; /*color of rectangle*/
if (key == 39) { //RIGHT
var xSpeed = 10;
var ySpeed = 0;
console.log("right");
} else if (key == 37) { //LEFT
var xSpeed = -10;
var ySpeed = 0;
console.log("left");
} else if (key == 38) { //UP
var xSpeed = 0;
var ySpeed = -10;
console.log("up");
} else if (key == 40) { //DOWN
var xSpeed = 0;
var ySpeed = 10;
console.log("down");
}
}
function update() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
/*if (x[0] >= 490) {
xSpeed = 0;
} else if (y[0] >= 490) {
ySpeed = 0;
}*/
for (w = 0; w < x.length; w++) {
y[w] += ySpeed;
x[w] += xSpeed;
}
for (i = 0; i < x.length; i++) {
ctx.fillStyle = "black";
ctx.fillRect(x[i], y[i], 10, 10);
}
console.log(xSpeed);
console.log(ySpeed);
}
setInterval(update, 500);
<!DOCTYPE html>
<html>
<head>
<link rel="shortcut icon" href="#">
<title>The Snake Game</title>
</head>
<style>
#ctx {
position: absolute;
/*it can be fixed too*/
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
/*this to solve "the content will not be cut when the window is smaller than the content":*/
max-width: 100%;
max-height: 100%;
overflow: auto;
}
</style>
<body onkeydown="keyDown()" onload="load()">
<center><canvas id="ctx" width="500" height="500" style="border:1px solid black"></canvas></center>
</body>
<script src="script.js"></script>
</html>
あなたがコードを実行した場合、あなたは変数が& ySpeedが変更されていないxSpeedこと、が分かりました。私はラバーダッキーdebbugingを試みたが、私は何も見つかりませんでした。私は14歳なので、笑ってはいけません。 :Dアドバイスありがとうございます。トーマス
VAR 『が、それはうまくいきませんでした。スイッチを追加した後、「 –
は私が退治しようとしているあなたのコード – CodeWizard
にいくつかのより多くの改善点を追加しました「』ありがとうございました仕事を始めましたので、もう一度あなたに感謝します。 –