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>
使用変数
<!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 |