Javascript Shortcode Area
-----Version 110606-----
 t_test2 

<!DOCTYPE html><html><head><title>t-test2</title>
<style>canvas {border: 1px solid black;}</style></head>
<body>
<canvas id="gameCanvas" width="400" height="400"></canvas>
<div><p id="dis1"></p><p id="dis2"></p></div>
<script>

// 要素取得
const canvas = document.getElementById("gameCanvas");
const context = canvas.getContext("2d");

// 初期位置と移動速度
let snakeX = 1;let snakeY = 1;let snakeSpeedX = 1;let snakeSpeedY = 0;

// ゲームループ
function gameLoop() {
snakeX += snakeSpeedX;snakeY += snakeSpeedY;
context.clearRect(0, 0, canvas.width, canvas.height);
context.fillStyle = "green";context.fillRect(snakeX, snakeY, 10, 10);
document.getElementById("dis1").textContent = `X: ${snakeX} Y: ${snakeY}`;
requestAnimationFrame(gameLoop);// ゲームループを再帰的に呼び出し
}

function handleTouch(event) {// タッチ位置を取得
const touchX = event.touches[0].clientX - canvas.offsetLeft;
const touchY = event.touches[0].clientY - canvas.offsetTop;
xx = touchX - snakeX;yy = touchY - snakeY;
document.getElementById("dis2").textContent = `X: ${touchX} Y: ${touchY} X: ${xx} Y: ${yy}`;


// タッチ位置とヘビの位置を比較して、移動方向を設定
if (xx < 0 && Math.abs(xx) > Math.abs(yy)) {snakeSpeedX = -1;snakeSpeedY = 0;
} else if (xx > 0 && Math.abs(xx) > Math.abs(yy)) {snakeSpeedX = 1;snakeSpeedY = 0;
} else if (yy < 0 && Math.abs(xx) < Math.abs(yy)) {snakeSpeedX = 0;snakeSpeedY = -1;
} else if (yy > 0 && Math.abs(xx) < Math.abs(yy)) {snakeSpeedX = 0;snakeSpeedY = 1;
}
}

// タッチイベントを監視
canvas.addEventListener("touchstart", handleTouch);

// ゲームループを開始
gameLoop();

</script>
</body></html>


使用変数

canvas
context
fillStyle
gameLoop -------( Function )
handleTouch -------( Function )
height
id
snakeSpeedX
snakeSpeedY
snakeX
snakeY
textContent
touchX
touchY
width
xx
yy