JS实现贪吃蛇

本文分享了使用JavaScript实现贪吃蛇小游戏的过程,包括设置样式、创建地图、生成随机数、设计食物和蛇的逻辑,以及游戏开始按钮的实现。通过面向对象编程,详细讲解了各个部分的代码实现,提供了一款互动娱乐的小应用。
摘要由CSDN通过智能技术生成

javascript实现贪吃蛇

新学的用面向对象做一个贪吃蛇小游戏,和大家分享一下!
贪吃蛇总体分为三个部分:地图、食物、蛇

设置样式的函数

// 设置样式
function setStyle(ele,obj) {
   
    for(var attr in obj){
   
        ele.style[attr] = obj[attr];
    }
}

我先创建了一个设置样式的函数,方便之后调用。

地图

// 创建地图
function Map() {
    
    this.map = document.createElement("div");
    setStyle(this.map,{
            //调用setStyle给this.map设置样式
        width:"400px",
        height:"400px",
        background:"#abcdef",
        border:"3px solid #ccc",
        position:"relative",
    });
    document.body.appendChild(this.map);    //把this.map插入body
}
var map = new Map();
  1. 创建一个div标签
  2. 调用setStyle函数设置样式
    1.添加相对定位
  3. 把创建的map插入body中

获取随机数

// 获取随机数
function getRandom(a,b) {
   
    var max = Math.max(a,b);    //a,b中大的值赋给max
    var min = Math.min(a,b);    //a,b中小的值赋给min
    //((随机数 *(max-min)/10)取整)*10 + min ,并且把值返回函数  这样随机数会是10的倍数
    return parseInt((Math.random()*(max-min))/10)*10+min;
}

创建了一个获取随机数的函数,方便“食物”随机出现。

食物

// 创建食物
function Food(){
   
    this.food = document.createElement("span");
    setStyle(this.food,{
           //调用setStyle给this.food设置样式
        width:"10px",
        height:"10px",
        background:"red",
        position:"absolute",
        left:getRandom(0,map.map.clientWidth-10)+"px",      
        top:getRandom(0,map.map.clientHeight-10)+"px",
    });
    map.map.appendChild(this.food);         //把this.food插入map
}
var food = new Food();
  1. 创建一个span标签
  2. 调用setStyle函数设置样式
    1.添加j绝对定位
    2.left和top的值,就调用getRandom函数创建随机值
  3. 把创建的span插入map中

// 创建蛇
function Snake(){
   
    this.body = [       //定义蛇的身体
        {
   
            x:20,       //蛇头
            y:0,
        },
        {
   
            x:10,       //蛇身   第一节
            y:0,
        },
        {
   
            x:0,        //蛇身   第二节
            y:0,
        },
    ];
    this.direction = "right";       //蛇默认移动的方向
    this.timer = null;              //定时器
    this.flag = true;
    this.score = 0;                 //分数
    document.onkeypress=e=>{
           //监听键盘事件,敲击键盘改变方向
        var e = e || window.event;
        var keycode = e.keyCode || e.which;
        switch(keycode){
   
            case 119:   //"w键"
                this.direction = "up";
            break;
            case 115:   //"s键"
                this.direction = "down";
            break;
            case 97:   //"a键"
                this.direction = "left";
            break;
            case 100:   //"d键"
                this.direction = "right";
            break;
        }
    }
    this.Show();    //让蛇身显示
    // this.timer = setInterval(()=> {  //设置定时器
    //     this.Die();     //死亡
    //     if(this.flag){
   
    //         this.Move();    //让蛇移动
    //         this.Eat();     //吃食物
    //     }
    // },200);             //200毫秒执行一次
}
//死亡
Snake.prototype.Die = function(){
   
    // 撞墙
    if(this.body[0].x
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值