用JavaScript做的贪吃蛇小游戏

<!doctype html>
<html><head><meta charset="utf-8"><title></title><style type="text/css">*{margin: 0px;padding: 0px;}#main{margin: 100px;}.btn{width: 100px;height: 40px;}.aaa{position: relative;top: 40px;border: solid 1px darkred;background-color: #fafafa;}</style></head><body><div id="main"><button type="button" class="btn" id="begin">开始游戏</button><button type="button" class="btn" id="pause">暂停游戏</button><span class="gtitle">第一关 分数:<span id="fs">0</span></span></div></body><script type="text/javascript">var tase=0;console.time(tase);var fs =document.getElementById('fs');var main = document.getElementById('main');var showcanvas = true; //是否开启画布格子function Map(atom,xnum,ynum){this.atom = atom;  //原子大小宽和高一样 10this.xnum = xnum;  //横向原子数量this.ynum = ynum;  //纵向原子数量this.canvas = null;//创建画布方法this.create = function(){this.canvas = document.createElement('div');this.canvas.style.cssText="position: relative;top: 40px;border: solid 2px darkred;background: black"this.canvas.style.width = this.atom * this.xnum +'px'; //画布的宽this.canvas.style.height = this.atom * this.ynum +'px'; //画布的高main.appendChild(this.canvas);if(showcanvas){for(var y=0;y<ynum;y++){for(var x=0;x<xnum;x++){var a =document.createElement('div');a.style.cssText='border: 1px solid yellow;';a.style.width = this.atom +'px';a.style.height = this.atom +'px';a.style.background='#61ffb8';this.canvas.appendChild(a);a.style.position='absolute';a.style.left=x*this.atom+'px'a.style.top =y*this.ynum+'px'}}}}}// 食物function Food(map){this.width = map.atom;this.height = map.atom;//随机颜色this.bgcolor="rgb("+Math.floor(Math.random()*200)+","+Math.floor(Math.random()*200)+","+Math.floor(Math.random()*200)+")";// this.bgcolor='pink'this.x = Math.floor(Math.random()*map.xnum);this.y = Math.floor(Math.random()*map.ynum);this.flag = document.createElement('div');this.flag.style.width = this.width +'px';this.flag.style.height = this.height +'px';this.flag.style.backgroundColor = this.bgcolor;this.flag.borderRadius='50%';this.flag.style.position='absolute';this.flag.style.left = this.x * this.width +'px';this.flag.style.top = this.y * this.height +'px';map.canvas.appendChild(this.flag);}function Snake(map){//设置宽,高this.width = map.atom;this.height = map.atom;//默走的方向this.direction = "right";this.body=[{x:2,y:0}, //蛇头 1{x:1,y:0}, //蛇身 2{x:0,y:0}, //蛇尾 3];//显示蛇this.display = function(){for(var i=0;i<this.body.length;i++){if(this.body[i].x !=null){ //当吃到食物时x=null,不能新建,不然会在0,0处理新建一个var s =document.createElement('div');//将节点保存到一个状态变量中this.body[i].flag = s;//设置蛇的样式;s.style.width = this.width +'px';s.style.height = this.height +'px';// s.style.backgroundColor="rgb("+Math.floor(Math.random()*200)+","+Math.floor(Math.random()*200)+","+Math.floor(Math.random()*200)+")";s.style.backgroundColor='pink'//设置位置s.style.position = 'absolute's.style.left = this.body[i].x *this.width +'px';s.style.top =this.body[i].y *this.height +'px'map.canvas.appendChild(s)}}}//蛇运动this.run = function(event){for(var i=this.body.length-1;i>0;i--){this.body[i].x = this.body[i-1].x;this.body[i].y = this.body[i-1].y;}//根据方向梳理蛇头switch(this.direction){case "left":this.body[0].x -=1;break;case "right":this.body[0].x +=1;break;case "up":this.body[0].y -=1;break;case "down":this.body[0].y +=1;break;}//判断蛇头吃到食物if(this.body[0].x == food.x && this.body[0].y == food.y){//蛇加一节,根据最后节点定this.body.push({x:null,y:null,flag:null});map.canvas.removeChild(food.flag);//查看长度fs.innerHTML = this.body.length-3;food = new Food(map)}//判断是否出界if(this.body[0].x<0 || this.body[0].x>map.xnum-1 || this.body[0].y<0 || this.body[0].y>map.ynum-1 ){clearInterval(timer);alert('游戏失败');//重新开始游戏restart(map,snake)return false;}//判断是否和自己重和for(var i=4;i<this.body.length;i++){if(this.body[0].x == this.body[i].x && this.body[0].y == this.body[i].y){clearInterval(timer);alert('游戏失败');//重新开始游戏restart(map,snake)return false;}}for(var i=0; i<this.body.length;i++){if(this.body[i].flag !=null) {  //map.canvas.removeChild(this.body[i].flag)}}this.display();}}//重新开始游戏function restart(map,snake){for(var i=0;i<snake.body.length;i++){map.canvas.removeChild(snake.body[i].flag);}snake.body =[{x:2,y:0}, //蛇头 1{x:1,y:0}, //蛇身 2{x:0,y:0}, //蛇尾 3];snake.direction = 'right';snake.display();map.canvas.removeChild(food.flag);food = new Food(map); fs.innerHTML=0;}//地图var map = new Map(20,40,20);//画布map.create();//食物var food = new Food(map);//蛇var snake = new Snake(map);snake.display();//给body加方向事件window.onkeydown = function(e){var event = e || window.event;switch(event.keyCode){case 38:if(snake.direction !="down"){snake.direction = "up";}break;case 40:if(snake.direction !="up"){snake.direction = "down";}break;case 37:if(snake.direction !="right"){snake.direction = "left";}break;case 39:if(snake.direction !="left"){snake.direction = "right";}break;}}var timer //变量提升var shudu=180;       document.getElementById('begin').onclick = function (){clearInterval(timer);timer = setInterval(function(){snake.run()},shudu)}document.getElementById('pause').onclick = function (){clearInterval(timer);}     console.timeEnd(tase)</script>
</html>

2020-10-13 用JavaScript做的贪吃蛇小游戏相关推荐

  1. 用 typescript 做一个贪吃蛇小游戏

    typescript 做一个贪吃蛇小游戏 搭建环境 创建 tscofig.json 文件 配置如下 {"compilerOptions": {"target": ...

  2. Easyx图形库+C++做一个贪吃蛇小游戏 数据结构课程设计

    Easyx图形库+C++做一个贪吃蛇小游戏 数据结构课程设计 程序界面 ① 游戏开始界面(如下图): 显示游戏标题,提供"开始游戏"."游戏模式"和" ...

  3. 10分钟用Python编写一个贪吃蛇小游戏

    贪吃蛇,大家应该都玩过.当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最主要 ...

  4. python编程小游戏-10分钟用Python编写一个贪吃蛇小游戏,简单

    贪吃蛇,大家应该都玩过.小编当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最 ...

  5. 10分钟用python编写贪吃蛇小游戏_牛得一批!10分钟用Python编写一个贪吃蛇小游戏...

    贪吃蛇,大家应该都玩过.当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最主要 ...

  6. 10分钟python游戏_牛得一批!10分钟用Python编写一个贪吃蛇小游戏

    贪吃蛇,大家应该都玩过.当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最主要 ...

  7. 10 分钟用 Python 编写一个贪吃蛇小游戏

    贪吃蛇,大家应该都玩过.当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最主要 ...

  8. 如何用python做一个贪吃蛇小游戏并给游戏加上背景音乐(pygame的应用)

    导入模块 import pygame import sys import time import random from pygame.locals import * 定义颜色变量 redColour ...

  9. JavaScript-一个贪吃蛇小游戏

    JavaScript做的贪吃蛇小游戏,有点长. 三个对象:地图对象,食物对象,蛇对象. 注意事项:见注释. 还没有设置关卡,失败重新开始.

  10. 手把手教你做一个Java贪吃蛇小游戏

    大家好,我是孙不坚1208,这篇博客给大家分享一下:如何做一个贪吃蛇小游戏(Java版)的exe应用程序,希望能给需要帮助的朋友带来方便. 手把手教你做一个Java贪吃蛇小游戏的exe应用程序 一.J ...

最新文章

  1. 计算机教师简介50字,教师风采个人简介50字数.docx
  2. 【项目实践】车距+车辆+车道线+行人检测项目实践
  3. [ubuntu] 摆脱一直敲打‘Y'('yes')的困境
  4. 隐私计算,企业数字化转型的BUFF之争
  5. 如何把meshlab中的圆环去掉_如何设计一座太空城?
  6. java error:编码gbk的不可映射字符
  7. 2020计算机二级取消vb,2020年计算机二级VB模拟试题及答案
  8. 渗透测试/应急演练过程中metasploit制作木马连接失败问题排查
  9. 干货文:企业 IT 基础架构|(精华篇)
  10. 新浪云 连接mysql数据库_新浪云php与java连接MySQL数据库
  11. 浏览器事件:为什么会有捕获过程和冒泡过程?
  12. 各省省际对外非金融类直接投资流量情况(2009-2018年)
  13. 证明厄米矩阵不同特征值对应特征向量正交
  14. Sql Server排序规则(转)
  15. 7段并行数码管显示实验C语言,七段数码管显示十进制数字 (15)
  16. 微信java tools_微信工具weixin-java-tools的使用总结
  17. MySQL死锁问题如何分析锁表后查看死锁和去除死锁快速解决方法
  18. Android设计模式(十六)-中介者模式
  19. RadiAnt DICOM Viewer Crack by Xacker
  20. Essentially No Barriers in Neural Network Energy Landscape

热门文章

  1. 252个基本词根详解
  2. 线性卡尔曼滤波和扩展卡尔曼滤波(KF,EKF)
  3. 微服务学习笔记 演进式架构 适应度函数概念
  4. 2012年软件评测师真题精选
  5. OA系统选型的那些事儿
  6. iptv直播服务器维护,IPTV机顶盒的智能化配置和维护方案介绍【详解】
  7. 基于混沌系统的文本加密算法研究(一)——混沌及混沌加密的基础知识
  8. Apache Ignite
  9. 计算机专业毕业论文谢辞,计算机毕业论文谢辞模板(精选模板三篇)
  10. 软件工程考研复试、工作面试常见问题及答案