函子蛋糕 2022-01-15 23:09 采纳率: 80.6%
浏览 45
已结题

如何用原生js写出文字版贪食蛇(甚至连css也不用)?

如题,求完整代码,写在html中。先感谢了。

  • 写回答

2条回答 默认 最新

  • 关注

    我以前写的一个面向对象的贪吃蛇游戏


    你题目的解答代码如下:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title> 贪吃蛇 </title>
    <style>
    #mapbox {
      font-family: 宋体; font-size: 17px; line-height:100%;
      height:360; width:430;
    }
    </style>
     
    <script language="JavaScript">
    /*
    //     贪吃蛇      //
    //   OO+TextBox    //
    //  程序作者:海浪  //
    */
     
    var map;
    var gott;
     
    function play()
    {
      clearInterval(gott);
      map = new mapClass(25,20);
      document.onkeydown = keydown;
      gott = setInterval("map.snake.go()",150);
    }
     
    function keydown(e)
    {
      e = e||event;
      switch (e.keyCode)
      {
        case 38: map.snake.refx(0); break;
        case 39: map.snake.refx(1); break;
        case 40: map.snake.refx(2); break;
        case 37: map.snake.refx(3); break;
        case 17: map.snake.stoporrun(); break;
      }
    }
     
     
     
    function mapClass(x,y)
    {
      this.x = x;
      this.y = y;
      this.sq = "■";
      this.sk = " ";
      this.marr = [];
      for(var iy=0; iy<this.y; iy++)
      {
        this.marr[iy] = [];
        for(var ix=0; ix<this.x; ix++)
          this.marr[iy][ix] = (ix==0||iy==0||ix==this.x-1||iy==this.y-1)?this.sq:this.sk;
      }
      this.snake = new snakeClass(this);
      this.bean = new beanClass(this);
      this.bean.newbean();
      this.bean.addn();
    }
     
    mapClass.prototype.write = function()
    {
      var str = "";
      for(var ii=0; ii<this.y; ii++)
        str += this.marr[ii].join("")+"<br />";
      document.getElementById("mapbox").innerHTML = str;
    }
     
    mapClass.prototype.rexy = function(x,y,s)
    {
      var str = s || this.sk;
      this.marr[y][x] = str;
    }
     
    mapClass.prototype.jcxy = function(x,y,s)
    {
      var str = s || this.sk;
      return this.marr[y][x] == str;
    }
     
     
     
    function snakeClass(po)
    {
      this.parent = po;
      this.mt = "●";
      this.boarr = [];
      this.bolength = 4;
      this.fang = 1;
      this.fangtt = 1;
      this.stop = false;
      this.boarr[0] = this.addbody(3,5);
      this.parent.rexy(this.boarr[0].x,this.boarr[0].y,this.mt);
    }
     
    snakeClass.prototype.go = function()
    {
      if(this.stop) return;
      this.fang = this.fangtt;
      var x = this.boarr[0].x + [0,1,0,-1][this.fang];
      var y = this.boarr[0].y + [-1,0,1,0][this.fang];
      var chi = this.parent.jcxy(x,y,this.parent.bean.mt);
      if(!this.parent.jcxy(x,y) && !chi)
      {
        clearInterval(gott);
        alert("Game Over!");
        return;
      }
      if(chi)
      {
        this.bolength++;
        this.parent.bean.addn();
        this.parent.bean.newbean();
      }
      this.parent.rexy(x,y,this.mt);
      this.boarr = [].concat(this.addbody(x,y),this.boarr);
      if(this.boarr.length>this.bolength)
      {
        var tb = this.boarr.pop();
        this.parent.rexy(tb.x,tb.y);
      }
      this.parent.write();
    }
     
    snakeClass.prototype.addbody = function(x,y)
    {
      return { x:x, y:y };
    }
     
    snakeClass.prototype.refx = function(n)
    {
      if(Math.abs(this.fang-n)!=2)
        this.fangtt=n;
    }
     
    snakeClass.prototype.stoporrun = function()
    {
      this.stop = !this.stop;
    }
     
     
     
    function beanClass(po)
    {
      this.parent = po;
      this.mt = "◎";
      this.sne = -100;
    }
     
    beanClass.prototype.addn = function()
    {
      this.sne+=100;
      document.getElementById("fan").innerHTML = this.sne;
    }
     
    beanClass.prototype.newbean = function()
    {
      var x = Math.floor(Math.random()*(this.parent.x-2))+1;
      var y = Math.floor(Math.random()*(this.parent.y-2))+1;
      if(this.parent.jcxy(x,y))
        this.parent.rexy(x,y,this.mt);
      else
        this.newbean();
    }
    </script>
    </head>
     
    <body>
    <center>
    <h2>贪吃蛇</h2><hr>
    <div id="mapbox"></div>
    <input type="button" value="开始" onclick="play()"> 得分:<span id="fan"></span>
    <hr>
    程序作者:海浪
    </center>
    </body>
    </html>
    

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月24日
  • 已采纳回答 1月16日
  • 创建了问题 1月15日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题