程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何使用Javascript动态创建ludo板

发布于2022-03-07 12:25     阅读(699)     评论(0)     点赞(24)     收藏(2)


我正在制作棋盘游戏卢多。我包含四个玩家。卢多的董事会看起来像在此处输入图像描述

我已经设法使用 Javascript 动态地创建了其中的一部分。

const qs = str => document.querySelector(str);
const qsa = str => document.querySelectorAll(str);
const ce = (str, props) => {
    let elm = document.createElement(str);
    if(props){
        for(let k in props){
            elm[k] = props[k]
        }
    }
    return elm;
}

let main = qs('#main');


function createDiv(type, color){
    let div = ce('div');
    div.style.backgroundColor = color;
    div.style.display = type;
}

let game = Array(52).fill(0);

function createPlayer(color,angle){
    let div = ce('div', {className: 'player-cont'})
    let table = ce('table');
    div.style.transform = `rotate(${angle}deg)`
    
    function createRow(len,colorsSet){
        const tr = ce('tr',{className:'tile-row'});
        [...Array(len)].forEach((x,i) =>{
            let elm = ce('td', {className:'tile'});
            if(colorsSet.has(i)){
                elm.style.backgroundColor = color;
            }
            tr.appendChild(elm)
        }) 
        return tr;
    }
    function createBase(){
        const base = ce('table', {className: 'base'});    
        [...Array(2)].forEach(x => {
            let row = ce('tr', {className: 'base-row'});
            [...Array(2)].forEach(a => {
                let td = ce('td', {className: 'base-tile'})
                row.appendChild(td);
            })
            base.appendChild(row)
        })
        return base;
    }
    



    
    let colorSets = [
        new Set(),
        new Set([0,1,2,3,4]),
        new Set([4])
    ]
    
    colorSets.forEach(x => {
        table.appendChild(createRow(6, x))
    })
    
    div.appendChild(table);
    div.appendChild(createBase());
    return div;
}
let colors = ['red','blue','green','pink'];

colors.forEach((x, i) => {
    main.appendChild(createPlayer(x, (i * 90) - 180));
})
.tile {
    height: 50px;
    width: 50px;
    background: orange;
    border: 1px solid black;
    display: inline-block;
}
table.base td {
    height: 50px;
    background: orange;
    width: 50px;
    border-radius: 100px;
}
.player-cont {
    background: aliceblue;
    width: fit-content;
}
<div id = "main"></div>

但现在我不确定我将如何完成这件事。您可以忽略上图中的两件事:

  • 不同颜色的大正方形的大边框。我只需要一个单一的颜色。
  • 您可以忽略中心的彩色三角形。我只需要一个颜色框而不是那个。

解决方案


暂无回答




所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.qianduanheidong.com/blog/article/314994/314e11cfe2fc206bed56/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

24 0
收藏该文
已收藏

评论内容:(最多支持255个字符)