互动应用开发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编辑


    相关文章
    |
    11月前
    |
    JavaScript 算法 开发者
    如何用JS实现在网页上通过鼠标移动批量选择元素的效果?
    本文介绍了类似电脑桌面通过鼠标选择多个图标的实现原理。主要通过监听mousedown、mousemove和mouseup事件,动态调整选择框大小并计算与元素的重叠情况。提供了角重叠和相交重叠的检测方法,并附有示例代码和在线演示链接,方便开发者参考与测试。
    368 56
    |
    10月前
    |
    人工智能 自然语言处理 JavaScript
    通义灵码2.5实战评测:Vue.js贪吃蛇游戏一键生成
    通义灵码基于自然语言需求,快速生成完整Vue组件。例如,用Vue 2和JavaScript实现贪吃蛇游戏:包含键盘控制、得分系统、游戏结束判定与Canvas动态渲染。AI生成的代码符合规范,支持响应式数据与事件监听,还能进阶优化(如增加启停按钮、速度随分数提升)。传统需1小时的工作量,使用通义灵码仅10分钟完成,大幅提升开发效率。操作简单:安装插件、输入需求、运行项目即可实现功能。
    485 4
     通义灵码2.5实战评测:Vue.js贪吃蛇游戏一键生成
    |
    10月前
    |
    Web App开发 数据采集 JavaScript
    动态网页爬取:Python如何获取JS加载的数据?
    动态网页爬取:Python如何获取JS加载的数据?
    1491 58
    |
    7月前
    |
    编解码 JavaScript 前端开发
    如何在网页播放英文的m3u8文件(基于Javascript搭建的在线网页工具)
    什么是m3u8?又该如何在网页中高效、便捷地播放英文的m3u8文件呢?今天这篇文章就带你一起了解,并推荐一种基于Javascript搭建的在线网页工具,让你轻松解决播放问题。
    1983 0
    |
    JavaScript
    JS实现简单的打地鼠小游戏源码
    这是一款基于JS实现简单的打地鼠小游戏源码。画面中的九宫格中随机出现一个地鼠,玩家移动并点击鼠标控制画面中的锤子打地鼠。打中地鼠会出现卡通爆破效果。同时左上角统计打地鼠获得的分数
    380 1
    |
    存储 JavaScript 前端开发
    使用JavaScript构建动态交互式网页:从基础到实践
    【10月更文挑战第12天】使用JavaScript构建动态交互式网页:从基础到实践
    714 1
    |
    10月前
    |
    数据采集 Web App开发 JavaScript
    Python爬虫如何获取JavaScript动态渲染后的网页内容?
    Python爬虫如何获取JavaScript动态渲染后的网页内容?
    |
    编解码 前端开发 JavaScript
    javascript检测网页缩放演示代码
    javascript检测网页缩放演示代码
    |
    JavaScript 前端开发
    js+jquery实现贪吃蛇经典小游戏
    本项目采用HTML、CSS、JavaScript和jQuery技术,无需游戏框架支持。通过下载项目文件至本地,双击index.html即可启动贪吃蛇游戏。游戏界面简洁,支持方向键控制蛇移动,空格键实现游戏暂停与恢复功能。
    442 14

    热门文章

    最新文章