互动应用开发p5.js——网页小游戏——贪吃蛇

简介: 贪吃蛇一、实验内容:基于课件改进贪吃蛇或者太空大战的小游戏,可以加入新的视觉效果,比如区分蛇头和蛇身;为食物增加特效;分数排行榜;行进改成可以循环等等;尽可能丰富游戏的玩法。评分标准:游戏界面及功能 (70分)用户体验 (10分)代码规范(20分)

 贪吃蛇

一、实验内容:

基于课件改进贪吃蛇或者太空大战的小游戏,可以加入新的视觉效果,比如区分蛇头和蛇身;为食物增加特效;分数排行榜;行进改成可以循环等等;

尽可能丰富游戏的玩法。

评分标准:

    1. 游戏界面及功能 (70分)
    2. 用户体验  (10分)
    3. 代码规范(20分)

    二、实验说明:

    所有实验是通过 Visual Studio Code引入p5.js包编写,所以首先要去p5.js官网下载相关包,或是在联网状态下把html中引入包的代码改成例如<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.1.9/p5.js"></script>等。

    三、实验代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>贪吃蛇</title>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.1.9/p5.js"></script>
    </head>
    <body>
      <script src="sketch.js"></script>
    </body>
    </html>

    image.gif

    var s;
    var scl = 20;//大小
    var food;
    var scoreElem;
    function setup() {
      scoreElem = createDiv('Score = 0');
      scoreElem.position(20, 20);
      scoreElem.id = 'score';
      scoreElem.style('color', 'white');
      createCanvas(500, 500);
      s = new Snake();//创建一个蛇
      frameRate(10);
      pickLocation();//放置食物的位置 
    }
    //控制食物流向
    function pickLocation() {
      var cols = floor(width / scl);
      var rows = floor(height / scl);
      food = createVector(floor(random(cols)), floor(random(rows)));
      food.mult(scl);
    }
    function draw() {
      background(51);
      //判断食物是否被吃,为食物选择另一个位置
      if (s.eat(food)) {
        pickLocation();
      }
      s.death();
      s.update();
      s.show();
      fill(255, 0, 100);//食物颜色
      rect(food.x, food.y, scl, scl);
    }
    function Snake() {
      this.x = 0;
      this.y = 0;
      this.xspeed = 1;
      this.yspeed = 0;
      this.total = 0;//蛇方块的数量
      this.tail = [];
      this.dir = function (x, y) {
        this.xspeed = x;
        this.yspeed = y;
      }
      //控制吃食物时的情况
      this.eat = function (pos) {
        var d = dist(this.x, this.y, pos.x, pos.y);
        if (d < 1) {
          this.total++;
          return true;
        } else {
          return false;
        }
      }
      //控制死亡情况
      this.death = function () {
        for (var i = 0; i < this.tail.length; i++) {
          var pos = this.tail[i];
          var d = dist(this.x, this.y, pos.x, pos.y);
          scoreElem.html('Score = '+this.total);
          if (d < 1) {
            this.total = 0;
            this.tail = [];
            scoreElem.html('Game ended!');
          }
        }
      }
      this.update = function () {
        for (var i = 0; i < this.tail.length - 1; i++) {
          this.tail[i] = this.tail[i + 1];
        }
        if (this.total >= 1) {
          this.tail[this.total - 1] = createVector(this.x, this.y);
        }
        this.x = this.x + this.xspeed * scl;
        this.y = this.y + this.yspeed * scl;
        this.x = constrain(this.x, 0, width - scl);
        this.y = constrain(this.y, 0, height - scl);
      }
      this.show = function () {
        fill(255);
        for (var i = 0; i < this.tail.length; i++) {
          rect(this.tail[i].x, this.tail[i].y, scl, scl);
        }
        rect(this.x, this.y, scl, scl);
      }
    }
    function keyPressed() {
      if (keyCode === UP_ARROW) {
        s.dir(0, -1);
      } else if (keyCode === DOWN_ARROW) {
        s.dir(0, 1);
      } else if (keyCode === RIGHT_ARROW) {
        s.dir(1, 0);
      } else if (keyCode === LEFT_ARROW) {
        s.dir(-1, 0);
      }
    }

    image.gif

    四、实验结果:

    image.gif编辑

    image.gif编辑


    相关文章
    |
    2月前
    |
    JavaScript
    JS实现简单的打地鼠小游戏源码
    这是一款基于JS实现简单的打地鼠小游戏源码。画面中的九宫格中随机出现一个地鼠,玩家移动并点击鼠标控制画面中的锤子打地鼠。打中地鼠会出现卡通爆破效果。同时左上角统计打地鼠获得的分数
    121 1
    |
    3月前
    |
    存储 JavaScript 前端开发
    使用JavaScript构建动态交互式网页:从基础到实践
    【10月更文挑战第12天】使用JavaScript构建动态交互式网页:从基础到实践
    180 1
    |
    4月前
    |
    编解码 前端开发 JavaScript
    javascript检测网页缩放演示代码
    javascript检测网页缩放演示代码
    |
    4月前
    |
    Web App开发 JavaScript 前端开发
    添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
    添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
    |
    2月前
    |
    JavaScript 前端开发
    js+jquery实现贪吃蛇经典小游戏
    本项目采用HTML、CSS、JavaScript和jQuery技术,无需游戏框架支持。通过下载项目文件至本地,双击index.html即可启动贪吃蛇游戏。游戏界面简洁,支持方向键控制蛇移动,空格键实现游戏暂停与恢复功能。
    68 14
    |
    2月前
    |
    JavaScript
    原生JS实现斗地主小游戏
    这是一个原生的JS网页版斗地主小游戏,代码注释全。带有斗地主游戏基本的地主、选牌、提示、出牌、倒计时等功能。简单好玩,欢迎下载
    43 7
    |
    2月前
    |
    缓存 JavaScript 前端开发
    JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
    本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
    54 5
    |
    2月前
    |
    JavaScript
    JS趣味打字金鱼小游戏特效源码
    hi fish是一款打字趣味小游戏,捞出海里的鱼,捞的越多越好。这款游戏用于电脑初学者练习打字。初学者可以根据自己的水平设置游戏难度。本段代码可以在各个网页使用,有需要的朋友可以直接下载使用,本段代码兼容目前最新的各类主流浏览器,是一款非常优秀的特效源码!
    36 3
    |
    2月前
    |
    JavaScript
    js实现简洁实用的网页计算器功能源码
    这是一款使用js实现简洁实用的网页计算器功能源码。可实现比较基本的加减乘除四则运算功能,界面简洁实用,是一款比较基本的js运算功能源码。该源码可兼容目前最新的各类主流浏览器。
    28 2
    |
    2月前
    |
    移动开发 HTML5
    html5+three.js公路开车小游戏源码
    html5公路开车小游戏是一款html5基于three.js制作的汽车开车小游戏源代码,在公路上开车网页小游戏源代码。
    69 0
    html5+three.js公路开车小游戏源码