let play = document.querySelectorAll(".play");
let dizhupai = document.getElementById("dizhupai");
function creatPoker(){
    let paidui = [];
    let color = ["黑桃", "红桃", "梅花", "方块"];
    let number = ["3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"]
    for (let i = 0; i < number.length; i++) {
        let forColor = number[i];
        for (let j = 0; j < color.length; j++) {
            let forNum = color[j];
            paidui.push(
{
                    name:forColor + forNum,
                    order:i * 4 + j,
                    path:"../img/" + (i + 3) + "_" + (j + 1) + ".jpg"
                }
            )
        }
    }
    paidui.push(
        {
            name:"小王",
            order:52,
            path:"../img/16_1.jpg"
        }
    );
    paidui.push(
        {
            name:"大王",
            order:53,
            path:"../img/17_1.jpg"
        }
    );
    return paidui;
}
function shufflePoker(pokers){
    for (let i = 0; i < pokers.length; i++) {//通过循环随机的将牌进行交换,实现洗牌
        let ranNum = parseInt(Math.random() * pokers.length);
        [pokers[i], pokers[ranNum]] = [pokers[ranNum], pokers[i]];
    }
}
function dealPoker(pokers,...players){
    // let player = [[], [], []];
    while (pokers.length > 3) {//只要牌堆的牌大于3张,玩家继续摸牌
        for (let i = 0; i < players.length; i++) {//玩家3人轮流摸牌
            players[i].push(pokers.pop());
        }
    }
}
function orderPoker(...players){
    players.forEach(function (player) {//每个玩家将手里的牌理好
        //  players
        player.sort(function (a, b) {//a,b代表着排序过程中两个相互比较的元素
            return a.order - b.order;
        })
    });
}
function renderPocker(pokers,...players){
    dizhupai.innerHTML = "";
    let flag = true;
    for (let i = 0; i < players.length; i++) {
        let nowPlay = play[i];
        nowPlay.innerHTML = "";
        let k = 0;
        let timer = setInterval(function(){
            let newImg = document.createElement("img");
                nowPlay.appendChild(newImg);
                newImg.src = players[i][k].path;
                if (i == 0) {
                    newImg.style.left = (k * 20) + "px"
                } else if (i == 1 || i == 2) {
                    newImg.style.top = (k * 27) + "px"
                }
                if(k == players[i].length - 1){
                    clearInterval(timer);
                    if(flag){
                        for (let i = 0; i < pokers.length; i++) {
                            let pokerImg = document.createElement("img");
                            dizhupai.appendChild(pokerImg);
                            pokerImg.src = pokers[i].path;
                            pokerImg.style.left = (i * 20) + "px";
                        }
                    }
                    flag = false;
                }
                k++;
        },200);
        // for (let k = 0; k < players[i].length; k++) {
        //     let newImg = document.createElement("img");
        //     nowPlay.appendChild(newImg);
        //     newImg.src = players[i][k].path;
        //     if (i == 0) {
        //         newImg.style.left = (k * 20) + "px"
        //     } else if (i == 1 || i == 2) {
        //         newImg.style.top = (k * 27) + "px"
        //     }
        // }
    }
 
}
function run(){
    let pokers = creatPoker()
    shufflePoker(pokers);
    let players = [[],[],[]];
    dealPoker(pokers,...players)
    orderPoker(...players)
    renderPocker(pokers,...players)
}
let rePlaybtn = document.getElementById("rePlayBtn");
rePlaybtn.addEventListener("click", () => {
    run();
});

JS实现简单斗地主效果的更多相关文章

  1. 原生JS封装简单动画效果

    原生JS封装简单动画效果 一致使用各种插件,有时候对原生JS陌生了起来,所以决定封装一个简单动画效果,熟悉JS原生代码 function animate(obj, target,num){ if(ob ...

  2. JS实现简单时钟效果

    老师上课需要我们做一个时钟的小作业 ,我把它放在上面记录一下啦 表盘和时针我都是用的背景图的形式,然后绝对定位,通过调整left和top确定时针.分针.秒针的位置,transform-origin设置 ...

  3. 原生js实现简单打字机效果

    快过年了,公司基本没活,闲着也是闲着,就写了一个 打字机效果玩玩,感觉挺有意思的. 具体代码 请参见我的github,请戳这里 预览效果,请戳这里

  4. 如何通过JS实现简单抖动效果

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. 用JavaScript编写简单斗地主效果Es6

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 利用JS实现简单的瀑布流效果

    哈哈, 我又来啦, 在这一段时间里, 我简单的学习了一下javascript(JS), 虽然不是很懂啦, 但是我也简单的尝试着做了点小东西, 就比如现在流行的瀑布流效果, 经过我的努力终于成功的完成了 ...

  7. 史上最简单的js+css3实现时钟效果

    今天我看到百度搜索的时间那个效果不错,于是就产生了模仿一下的效果,不过为了节省时间,就随便布了下局,废话不多说,先看看效果吧,顺便把百度的效果也拿过来. 对比样子差了好多啊,但是基本功能都是实现了的, ...

  8. Query 一些简单的效果

    Query 一些简单的效果 $(selector).hide(speed,callback); 隐藏 $(selector).show(speed,callback); 显示 $(selector). ...

  9. HTML(.js) – 最简单的方式操作 DOM 的 JS 库

    HTML(.js) 是一个轻量的(压缩后~2kb) JavaScript 库,简化了与 DOM 交互的方法. 这个 JavaScript 库的方法可读性很好,并具有搜索和遍历 DOM 的方法.相比 j ...

随机推荐

  1. Spring Data Solr相关配置

    1.增加Maven POM文件的存储库:pom配置如下: <repositories> <repository> <id>spring-milestone</ ...

  2. Busybox镜像

    使用docker多少还是要知道一些Busybox的知识,下面转载自https://blog.csdn.net/chengqiuming/article/details/79313539 一 简介 Bu ...

  3. centos 7刚安装后无法联网解决

    从6版本到7版本后, 7版本默认会关闭网卡 ,并且ifconfig 命令也换了 ip 命令来代替, 在这记录一下 ,希望 新人发现. 不是源的问题, 是压根没开网卡... 下面是写给萌新的: 先看一下 ...

  4. [UE4]接口

    一个椅子可以被抓起和放下,一扇门可以打开和关上.一个抽屉可以拉开和关上. 椅子.门.抽屉都可以用手拉,然后放下,但是它们的打开和关上的行为是不一样的,它们之间没有继承关系,没法共用“打开”和“关闭”的 ...

  5. MySQL MGR+ Consul之数据库高可用方案

    背景说明:     基于目前存在很多MySQL数据库单点故障,传统的MHA,PXC等方案用VIP或者DNS切换的方式可以实现.基于数据库的数据强一致性考虑,采用MGR集群,采用consul服务注册发现 ...

  6. linux下各安装包的安装方法

    <转>linux下各安装包的安装方法   一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root ...

  7. 搭建真正的zookeeper集群

    搭建zookeeper伪分布式集群 zookeeper是Hadop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调服务, 提供的功能包括配置维护,域名服务,分布式同步和组 ...

  8. Microsoft Speaker Recognition API

    azure说话人识别API 官方文档:https://westus.dev.cognitive.microsoft.com/docs/services/563309b6778daf02acc0a508 ...

  9. 设计模式<1>------单例模式和原型模式------创建型

    原文引自:http://www.cnblogs.com/lonelyxmas/p/3720808.html 单例模式 单例模式就是保证在整个应用程序的生命周期中,在任何时刻,被指定的类只有一个实例,并 ...

  10. [纯C#实现]基于BP神经网络的中文手写识别算法

    效果展示 这不是OCR,有些人可能会觉得这东西会和OCR一样,直接进行整个字的识别就行,然而并不是. OCR是2维像素矩阵的像素数据.而手写识别不一样,手写可以把用户写字的笔画时间顺序,抽象成一个维度 ...