赞
踩
上下左右
控制 蛇 的移动canvas
: 相当于画布;行内元素,让方格在网页水平居中对齐先转块级( display: block
); 宽高设置用行内样式。
fillRect(x,y,width,height)
setInterval
: 定时器,蛇 移动的原理就是,利用每一张不同位置的蛇的位置图片,一直覆盖掉(并擦除掉上一次的图)上一张的图,通过定时器 1000/3 (1s执行3次这样的操作),让视觉效果看起来蛇平滑的移动。
addEventListener
: 事件监听(keydown)键盘按下监听,利用 e.keyCode 获取 上下左右
对应的键值(上: 38 下: 40 左:37 右:39)
pop()
: pop() 删除并返回数组的最后一个元素
unshift()
: 向数组的开头添加一个或多个元素,并返回新的长度
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>贪吃蛇绘制</title> <!-- 设置一个背景色、 --> <style> canvas { /* 在这里要居中的时候,要先转成块级元素 */ display: block; margin: 0 auto; background-color: #33cc99; } </style> </head> <body> <!-- 准备画布 --> <canvas width="500" height="500" id="huabu"> </canvas> </body> <script> // 通过 js 代码来绘制网格 // 获取画布对象 let huabu = document.getElementById('huabu'); // 获取绘制工具箱 let tools = huabu.getContext('2d'); // 从画图工具箱取出要使用的工具; // 随机生成x 和 y轴的坐标 let x = Math.floor(Math.random() * 20) * 25; let y = Math.floor(Math.random() * 20) * 25; let isEated = false; // 每次移动的距离为一格(默认就是在这个位置出发) let snake = [{ x: 3, y: 0 }, { x: 2, y: 0 }, { x: 1, y: 0 }] let directionX = 1; let directionY = 0; // 判断游戏是否结束 let isGameOver = false; document.addEventListener('keydown', (e) => { let k = event.keyCode; // 上: 38 下: 40 左:37 右:39 if (k === 38) { direc
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。