HTML+CSS+JS实现 ❤️贪吃蛇游戏源码❤️

游戏 游戏 1462 人阅读 | 0 人回复

<
   结果演示:  

  
150342gaway0myik6za7yx.gif
  代码目录:

150342xyz88pytjyj3a9dw.jpg

  次要代码完成:

部分代码 :

  1. <head>
  2.     <meta charset="UTF-8">
  3.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  4.     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  5.     <title>Document</title>
  6.     <style>
  7.         canvas {
  8.             border: 1px solid #000000;
  9.         }
  10.     </style>
  11. </head>
  12. <body>
  13.     <canvas width="980" height="600" id="canvas"></canvas>
  14.     <script>
  15.         //初初化变量
  16.         var foods = new Array(); //寄存食品坐标
  17.         var gameover = false; //游戏完毕
  18.         var gridWidth = 10; //正圆形少度
  19.         var canvas = document.getElementById("canvas");
  20.         var ctx = canvas.getContext("2d"); //构建绘布
  21.         //食品按时器、蛇按时器、场景、蛇工具
  22.         var food_interval, snake_interval, Farm, Snake;
  23.         //圆格工具
  24.         function node(x, y, w) {
  25.             var self = this;
  26.             self.x = x;
  27.             self.y = y;
  28.             self.w = w;
  29.             //食品初初化
  30.             self.foodInit = function() {
  31.                 ctx.fillStyle = "#FF0000";
  32.                 ctx.fillRect(self.x, self.y, self.w, self.w);
  33.             }
  34.             //蛇的初初化
  35.             self.snakeInit = function() {
  36.                 ctx.fillStyle = "#000000";
  37.                 ctx.strokeStyle = "#FFFFFF";
  38.                 ctx.fillRect(x, y, w, w);
  39.                 ctx.strokeRect(x, y, w, w);
  40.             }
  41.             //判定两个圆块能否重开
  42.             self.equals = function(node) {
  43.                 if (self.x == node.x && self.y == node.y) {
  44.                     return true;
  45.                 } else {
  46.                     return false;
  47.                 }
  48.             }
  49.             //肃清格子  让格子跟布景色彩一样
  50.             self.clear = function() {
  51.                 ctx.fillStyle = "#E8FFFF";
  52.                 ctx.strokeStyle = "#E8FFFF";
  53.                 ctx.fillRect(x, y, w, w);
  54.                 ctx.strokeRect(x, y, w, w);
  55.             }
  56.         }
  57.         //创立场景工具
  58.         function farm() {
  59.             //保留感化域
  60.             var self = this;
  61.             ctx.fillStyle = "#E8FFFF"; //添补的场景色彩
  62.             ctx.fillRect(0, 0, canvas.width, canvas.height);
  63.             //增长食品的办法
  64.             self.addFood = function() {
  65.                 if (gameover) {
  66.                     return gameOver(); //游戏完毕办法
  67.                 } else {
  68.                     //计较随机地位
  69.                     var x = parseInt(canvas.width / gridWidth * Math.random()) * gridWidth;
  70.                     var y = parseInt(canvas.height / gridWidth * Math.random()) * gridWidth;
  71.                     //真例化一个圆格工具
  72.                     var food = new node(x, y, gridWidth);
  73.                     //获得工具以后,要把食品绘到界里上里
  74.                     food.foodInit();
  75.                     //逃减到数组内里
  76.                     foods.push(food);
  77.                 }
  78.             }
  79.         }
  80.         //蛇工具
  81.         function snake(x, y, len, speed) {
  82.             var self = this;
  83.             self.init = function() {
  84.                 self.len = len; //身材少度
  85.                 self.nodes = new Array(); //蛇的身材数组
  86.                 self.dir = "R"; //标的目的
  87.                 self.speed = speed; //速率
  88.                 //从左往左,逐格把蛇绘出去
  89.                 var nx = x,
  90.                     ny = y; //蛇的坐标面
  91.                 for (var i = 0; i < len; i++) {
  92.                     //创立一个圆格工具
  93.                     var tmpNode = new node(nx, ny, gridWidth);
  94.                     //把蛇的身材寄存起去
  95.                     self.nodes[i] = tmpNode;
  96.                     //寄存完了以后,把蛇绘出去
  97.                     tmpNode.snakeInit();
  98.                     nx -= gridWidth; //往右边绘
  99.                 }
  100.                 //让蛇动起去按时器
  101.                 snake_interval = setInterval(self.move, self.speed);
  102.                 //给蛇绑定标的目的按键
  103.                 document.onkeydown = function(e) {
  104.                     //按键的值
  105.                     var code = e.keyCode;
  106.                     //记载一下旧的标的目的
  107.                     self.odir = self.dir;
  108.                     switch (code) {
  109.                         //一组标的目的键 一组字母 WASD
  110.                         case 65:
  111.                             self.dir = "L";
  112.                             break;
  113.                         case 87:
  114.                             self.dir = "U";
  115.                             break;
  116.                         case 68:
  117.                             self.dir = "R";
  118.                             break;
  119.                         case 83:
  120.                             self.dir = "D";
  121.                             break;
  122.                         case 37:
  123.                             self.dir = "L";
  124.                             break;
  125.                         case 38:
  126.                             self.dir = "U";
  127.                             break;
  128.                         case 39:
  129.                             self.dir = "R";
  130.                             break;
  131.                         case 40:
  132.                             self.dir = "D";
  133.                             break;
  134.                     }
  135.                 }
  136.             }
复造代码
  源码获得

  检察专主主页或公疑专主获得
  出色保举更新中:
  HTML5高文业真战100套

    挨卡 文章 更新 40  /  100天
  各人能够面赞、珍藏、存眷、批评我啦 、需求完整文件随时联系我或交换哟~!
150342ctkw568ww5833lr7.jpg


免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作!
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则