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. python基础知识16---函数补充

    一 数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因 ...

  2. 屏蔽F12审查元素,禁止使用右键菜单

    一.屏蔽F12审查元素 <script type="text/javascript"> document.onkeydown = function() { ) { al ...

  3. django 的后台管理

    class bcb(models.Model): name = models.CharField(max_length=64,verbose_name='班次名称') verbose_name = ' ...

  4. js判断数组里是否有重复元素的方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/longzhoufeng/article/details/78840974 第一种方法:但是下面的这种 ...

  5. IIS Express 域认证问题(https://stackoverflow.com/questions/4762538/iis-express-windows-authentication)

    option-1: edit \My Documents\IISExpress\config\applicationhost.config file and enable windowsAuthent ...

  6. Linux下搭建jmeter

    最近做性能测试,Windows下跑jmeter,并发跑不到100,CPU就100%,这还是在命令行模式下,真心头大.没办法,只好搞个Linux来跑了,下面说下如何玩转的. 1.下载Ubuntu操作系统 ...

  7. java.lang.Byte 类源码浅析

    Byte 类字节,属于Number. public final class Byte extends Number implements Comparable<Byte> { /** * ...

  8. C# Winform开发程序调用VLC播放器控件播放视频.

    VLC是个好东西,支持的格式多,还无广告,关键还有调用它的播放控件不用安装. 开个文章记录下调用这个控件的流水账,以便以后需要的时候查阅 创建工程 首先新建一个Winform工程. 这里姑且叫做VLC ...

  9. git push 本地项目推送到远程分支

    大家有的时候,会在本地新建项目,这里说一下在本地项目建立本地git仓库,然后push到远程仓库的步骤 1.在本地项目的文件夹下,git仓库初始化 git init 初始化本地git仓库 2. git ...

  10. JDK最新版 Jmeter最新版

    http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html http://jmeter.a ...