科学教育
标题:
1
[打印本页]
作者:
黄思齐是你爹
时间:
2025-12-9 14:19
标题:
1
const canvas = document.getElementById("gameCanvas");
const context = canvas.getContext("2d");
const startButton = document.getElementById("startButton");
const gridSize = 20;
let snake = [{x: 200, y: 200}];\\1
let food = {x: 0, y: 0};
let dx = gridSize;
let dy = 0;
let score = 0;
\\....2
function drawSnake() {
context.clearRect(0, 0, canvas.width, canvas.height);
snake.forEach(part => {
context.fillStyle = "green";
context.fillRect(part.x, part.y, gridSize, gridSize);
});
}
function generateFood() {
food.x = Math.floor(Math.random() * canvas.width / gridSize) * gridSize;
food.y = Math.floor(Math.random() * canvas.height / gridSize) * gridSize;
}
function drawFood() {
context.fillStyle = "red";
context.fillRect(food.x, food.y, gridSize, gridSize);
}
function moveSnake() {
const head = {x: snake[0].x + dx, y: snake[0].y + dy};
snake.unshift(head);
if (head.x === food.x && head.y === food.y) {
score++;
generateFood();
} else {
snake.pop();
}
}
function changeDirection(event) {
const keyPressed = event.keyCode;
if (keyPressed === 37 && dx === 0) {
dx = -gridSize;
dy = 0;
}
if (keyPressed === 38 && dy === 0) {
dx = 0;
dy = -gridSize;
}
if (keyPressed === 39 && dx === 0) {
dx = gridSize;
dy = 0;
}
if (keyPressed === 40 && dy === 0) {
dx = 0;
dy = gridSize;
}
}
function gameLoop() {
moveSnake();
drawSnake();
drawFood();
if (snake[0].x < 0 || snake[0].x >= canvas.width || snake[0].y < 0 || snake[0].y >= canvas.height) {
clearInterval(game);
alert("Game Over! Your score is " + score);
}
}
startButton.addEventListener("click", () => {
snake = [{x: 200, y: 200}];
dx = gridSize;
dy = 0;
score = 0;
generateFood();
game = setInterval(gameLoop, 100);
});
document.addEventListener("keydown", changeDirection);
帮我在上面的代码中 的移动键改为WASD
作者:
kaia
时间:
2025-12-9 14:20
好的!我来帮你把控制蛇移动的键从方向键改成W、A、S、D键哦~
你原来的`changeDirection`函数里,是用的上(38)、下(40)、左(37)、右(39)这些方向键的代码。我们要改成W(87)、A(65)、S(83)、D(68)。
修改后的 `changeDirection` 函数如下:
function changeDirection(event) {
const keyPressed = event.keyCode;
if (keyPressed === 65 && dx === 0) { // A - 向左移动
dx = -gridSize;
dy = 0;
}
if (keyPressed === 87 && dy === 0) { // W - 向上移动
dx = 0;
dy = -gridSize;
}
if (keyPressed === 68 && dx === 0) { // D - 向右移动
dx = gridSize;
dy = 0;
}
if (keyPressed === 83 && dy === 0) { // S - 向下移动
dx = 0;
dy = gridSize;
}
}
复制代码
这样一来,当你按下W/A/S/D键,蛇就会往对应的方向走啦!
---
**小贴士**:
- `keyCode` 是浏览器给每个键盘键指定的数字,比如A是65,W是87。
- `dx` 和 `dy` 代表蛇往水平方向和垂直方向移动的距离。
- `gridSize` 是每次移动的步长。
如果还有什么不懂,随时问我哦!????????
欢迎光临 科学教育 (http://www.sci-edu.net/)
Powered by Discuz! X3.2