大富翁实现

目录

  • 思路
  • 效果
  • 代码

思路

扔骰子的整个过程可以拆分为:
1.扔骰子,获得点数
2.拿到点数,在dom元素上进行走步操作
3.走步操作结束后,如果有奖励判定,进行奖励判定操作

效果

大富翁实现_第1张图片

代码

css部分

  .map{
            display: grid;
            grid-template-columns: repeat(11,90px);//设置列数和每列宽
            grid-template-rows: repeat(11,90px);//设置行数和每行高
        }
        .map div{
            text-align: center;
            line-height: 90px;
            /* text-shadow:  4px 1px 2px  aquamarine; */
        }

html部分


   <div class="map">
        <div>起点div>
        <div id="1">1div>
        <div id="2">2div>
        <div id="3">初级福袋div>
        <div id="4">4div>
        <div id="5">5div>
        <div id="6">特效发言div>
        <div id="7">7div>
        <div id="8">8div>
        <div id="9">9div>
        <div id="10">初级福袋div>
        <div>div>
        <div id="36">36div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div id="11">11div>
        <div>div>
        <div id="35">35div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div id="12">炸弹div>
        <div>div>
        <div id="34">金豆div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div id="13">13div>
        <div>div>
        <div id="33">33div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div id="14">14div>
        <div>div>
        <div id="32">32div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div id="15">座位框div>
        <div>div>
        <div id="31">初级福袋div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div id="16">16div>
        <div>div>
        <div id="30">30div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div id="17">中级福袋div>
        <div>div>
        <div id="29">29div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div>div>
        <div id="18">18div>
        <div>div>
        <div id="28">28div>
        <div id="27">头像div>
        <div id="26">26div>
        <div id="25">金币div>
        <div id="24">中级福袋div>
        <div id="23">23div>
        <div id="22">22div>   
        <div id="21">21div>
        <div id="20">高级福袋div>
        <div id="19">19div>
    div>
    <button>扔骰子button>
    <button>扔10次button>

js部分

var map = document.getElementsByClassName('map')[0];//获取大富翁元素对象
var dice = document.getElementsByTagName('button')[0];
var dice1 = document.getElementsByTagName('button')[1];
// 生成随机颜色
function randomColor(){
    var n = Math.round(Math.random()*0xffffff);//随机生成16进制的数字
    n = n.toString(16)
    return "#" + n;
}
// 扔骰子
function randomdice(){//与后端交互的话在这一步进行扔骰子操作的请求,后端返回点数以及奖励,先拿点数进行走步操作,走步结束后,显示奖励详情
    return Math.round(Math.random()*5+1);//随机生成1-6的整数
}
function reset(){//重置每个格子的样式
    var grids = map.children;
    for(var i = 0 ; i <grids.length ; i ++){
        grids[i].style.backgroundColor ='#fff'
    }
}
var step = 0;//设置当前位置为0
var tag = true//设置锁保证当前roll点过程结束后,才能进行下一次roll点
dice.onclick = function(){
    if(tag){
        tag = false
        godice(1)
    }
}
dice1.onclick = function(){
    if(tag){
        tag = false
        godice(10)
    }
}
function godice(num){
    console.log(num,'次数')
    num--;
    var route = randomdice();//扔骰子,获取点数
    //走步操作
    var i =0 ;
    var tid = setInterval(() => {
        reset();
        i++;
        step += 1;//计时器每执行一次向前走一个格子
        if(step>36){//当位置大于当前最远的格子时要重置位置
            step = 1;
        }
        var dom = document.getElementById(step);//这里使用id作为查找当前格子的依据
        dom.style.backgroundColor =randomColor();//当走过当前格子时格子的颜色
        if(i>=route){//当走的步数等于扔出的点数时,表示整个过程走完,可以停止计时器
            clearInterval(tid);
            // 到达对应位置时候,查看相应奖励,进行数据请求,处理完之后再进行下一次roll点
            if(num>0){//次数不为0,说明还需要再次进行roll点
                godice(num);
            }else{//为0说明整个roll点过程结束
                tag = true
            }
        }
    }, 35);
}

你可能感兴趣的:(js,dom)