欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

大富翁实现

程序员文章站 2022-05-04 11:56:38
目录思路效果代码思路扔骰子的整个过程可以拆分为:1.扔骰子,获得点数2.拿到点数,在dom元素上进行走步操作3.走步操作结束后,如果有奖励判定,进行奖励判定操作效果代码css部分 .map{ display: grid; grid-template-columns: repeat(11,90px);//设置列数和每列宽 grid-template-rows: repeat(11,90px);//设置行数和每行高...

思路

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

效果

大富翁实现

代码

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">1</div>
        <div id="2">2</div>
        <div id="3">初级福袋</div>
        <div id="4">4</div>
        <div id="5">5</div>
        <div id="6">特效发言</div>
        <div id="7">7</div>
        <div id="8">8</div>
        <div id="9">9</div>
        <div id="10">初级福袋</div>
        <div></div>
        <div id="36">36</div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div id="11">11</div>
        <div></div>
        <div id="35">35</div>
        <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">13</div>
        <div></div>
        <div id="33">33</div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div id="14">14</div>
        <div></div>
        <div id="32">32</div>
        <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">16</div>
        <div></div>
        <div id="30">30</div>
        <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">29</div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div id="18">18</div>
        <div></div>
        <div id="28">28</div>
        <div id="27">头像</div>
        <div id="26">26</div>
        <div id="25">金币</div>
        <div id="24">中级福袋</div>
        <div id="23">23</div>
        <div id="22">22</div>   
        <div id="21">21</div>
        <div id="20">高级福袋</div>
        <div id="19">19</div>
    </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);
}

本文地址:https://blog.csdn.net/O0_0O__/article/details/107604620

相关标签: js dom