企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 1、分析 小游戏中共有三个对象。一个是地图(Map)、一个是食物(Food)、一个是蛇(Snake)。 以面向对象的方式来开发,应该创建三个对象。 每个对象的特点: > 地图Map: * 宽width * 高height * 背景颜色backgroundColor * 显示方法:show > 食物Food: * 宽width * 高height * 背景颜色backgroundColor * x轴坐标:0~29(每个坐标实际像素是20px) * y轴坐标:0~19(每个坐标实际像素是20px) > 蛇Snake: * 身体body(默认有三个div组成,其中一个蛇头,两段蛇身,都有颜色) * 能够移动move * 能够拐弯,改变移动方向 * 能够吃食物,变长 # 2、创建地图 ![](https://img.kancloud.cn/ae/50/ae50eb159952585254a5b54e26003ef5_688x497.png) # 3、创建食物 创建一食物,让它显示在body中。 ![](https://img.kancloud.cn/62/77/6277c67774b39b61873455fbc62b87c1_731x532.png) 食物没有和地图对齐,解决办法是让父级元素地图position是relative,让子元素食物position是absolute,并且让食物显示在地图中,而不是显示在body中。 所以修改Map,添加position属性,并且用一个属性_map来保存地图: ![](https://img.kancloud.cn/d8/e8/d8e83f88a2df56f56c201951ff4b5fce_756x531.png) 然后修改食物,让其显示在地图中即可: ![](https://img.kancloud.cn/64/ed/64ed6290f6186e22199ceb96925596cb_775x583.png) # 4、创建蛇 ![](https://img.kancloud.cn/cb/25/cb25751a28a128fd2b7e6a4b87f66739_816x152.png) 蛇的每一节用一个div来表示,每一节都有宽度、高度、背景颜色、坐标。创建蛇,并让它显示到地图上。 ![](https://img.kancloud.cn/a6/b8/a6b8890ed311640c80b41d915f75809b_824x626.png) # 5、让蛇移动 移动方向:默认先向右移动。 ![](https://img.kancloud.cn/99/ec/99ecedd3b0bd6fe40b6cd53e63b9c819_739x445.png) 这样做有个问题,当蛇移动的时候,会调用show方法,让蛇从新显示。调用show方法,会一直循环创建div。所以看到的效果是蛇移动了,但是越走越长。 解决办法: ![](https://img.kancloud.cn/dc/44/dc44236de64a3863cc1a6cc7570acbd5_940x570.png) # 6、让蛇拐弯 控制蛇头即可,因为身体一直跟着蛇头走。 蛇头的方向肯定是上下左右四个方向,可以用一个属性来表示蛇的移动方向。 ![](https://img.kancloud.cn/db/9b/db9b40c15896ea2ec9dc37df845fb92e_896x248.png) 当蛇移动的时候,根据方向修改蛇头的坐标: ![](https://img.kancloud.cn/79/2c/792ccede7f8927f2b2d0dc40da525c6a_741x570.png) 下面添加键盘事件,修改蛇的运行方向: ![](https://img.kancloud.cn/53/a2/53a27b273eca5e8363b317510e7b814b_773x542.png) # 7、让蛇吃食物 蛇头和食物重叠,才算吃到食物。即在移动过程中,如果发现蛇头的坐标和食物的坐标一样,才表示吃到食物。 ![](https://img.kancloud.cn/fb/4b/fb4b9316c183be3b199d952456ded7da_835x383.png) 这样做,吃完食物,发现食物没有从新显示。修改Food函数: ![](https://img.kancloud.cn/0d/2d/0d2db750722ffccf5b725e0aa1bc9d2e_847x612.png) # 8、让蛇加速 ![](https://img.kancloud.cn/af/07/af07ce4141818ba85da6531e94568a16_618x385.png) 当蛇吃到食物的时候,让时间变小,速度加快: ![](https://img.kancloud.cn/48/53/4853205c8640335d6c1854144ebe487d_817x405.png)