科学教育
标题:
123
[打印本页]
作者:
皮子钰
时间:
2025-12-9 09:48
标题:
123
请帮将以下代码的上下左右改为WASD const canvas = document.getElementById("gameCanvas");const context = canvas.getContext("2d");
const startButton = document.getElementById("startButton");
const gridSize = 20;
let snake = [{x: 200, y: 200}];
let food = {x: 0, y: 0};
let dx = gridSize;
let dy = 0;
let score = 0;
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;
}我将以下代码的上下左右改为wasd
作者:
kaia
时间:
2025-12-9 09:48
好的!我帮你把控制上下左右的按键从方向键(上下左右)改成W(上)、A(左)、S(下)、D(右)。代码中的事件监听部分需要修改,具体如下:
function changeDirection(event) {
const keyPressed = event.key.toLowerCase(); // 取得按键,并转换为小写字母
if (keyPressed === 'a' && dx === 0) { // 按A向左走,必须当前是水平方向不动
dx = -gridSize;
dy = 0;
} else if (keyPressed === 'd' && dx === 0) { // 按D向右走
dx = gridSize;
dy = 0;
} else if (keyPressed === 'w' && dy === 0) { // 按W向上走
dx = 0;
dy = -gridSize;
} else if (keyPressed === 's' && dy === 0) { // 按S向下走
dx = 0;
dy = gridSize;
}
}
复制代码
讲解:
- 原来的`keyCode`值范围是方向键的数字(37=左,38=上,39=右,40=下)。
- 新版本用`event.key`得到按键字符(比如'a'、'w'等)。
- 我们把字符都转化成小写,这样无论你按的是大写还是小写都能识别。
- 按A时蛇头左移,W是上移,S是下移,D是右移。
- `dx`和`dy`代表蛇移动的方向,在水平方向时不能上下跳动,反之也是。
只要把原来`changeDirection`函数替换成这个就好啦。祝你编程愉快!有什么不懂再问我哦。
欢迎光临 科学教育 (http://www.sci-edu.net/)
Powered by Discuz! X3.2