js实现扑克牌游戏

js实现扑克牌游戏

实现有三位玩家各执一方,点击中间出牌按钮随机三方牌和三张底牌

在这里插入图片描述

html代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>扑克牌,发牌器</title>
    <style>
        body {
            user-select: none;
        }
        ul{
            margin: 0;
        }
        #main {
            width: 700px;
            height: 750px;
            border: 1px solid;
            margin: auto;
        }

        #top {
            width: 100%;
            height: 100px;
            /* background-color: aqua; */
            
        }
        ul.top{
            display: flex;
            margin-left: 24px;
        }
        #din{
            width: 300px;
            height: 100%;
            /* background-color: royalblue; */
            margin: auto;
        }
        #center {
            width: 100%;
            height: 450px;
            /* background-color: aquamarine; */
            display: flex;
            overflow: hidden;
        }

        #left {
            width: 200px;
            height: 100%;
            /* background-color: coral; */
            display: flex;
        }

        #left_l {
            width: 70px;
            height: 100%;
            display: flex;
            align-items: center;
        }

        #left_l>p {
            width: 70px;
            display: inline-block;
            height: 70px;
            background-color: red;
            border-radius: 50%;
            text-align: center;
            line-height: 70px;
        }

        /* 右边排的位置 */
        #left_r {
            width: 130px;
            height: 100%;
            display: flex;
            flex-direction: column;
            /* background-color: cornflowerblue; */
        }

        #cen {
            width: 300px;
            height: 100%;
            display: flex;
            justify-content: center;
            align-items: center;
            /* background-color: rgb(155, 141, 137); */
        }

        #btn {
            width: 150px;
            height: 150px;
            border-radius: 50%;
            text-align: center;
            line-height: 150px;
            font-size: 25px;
            background-color: red;
        }

        #right {
            width: 200px;
            height: 100%;
            display: flex;
            /* background-color: coral; */
        }

        /* 左边排的位置 */
        #right_r {
            width: 70px;
            height: 100%;
            display: flex;
            align-items: center;
        }

        #right_r>p {
            width: 70px;
            display: inline-block;
            height: 70px;
            background-color: red;
            border-radius: 50%;
            text-align: center;
            line-height: 70px;
        }

        #right_l {
            width: 130px;
            height: 100%;
            /* background-color: cornflowerblue; */
        }

        #lower {
            width: 100%;
            height: 200px;
           
            /* background-color: cadetblue; */
        }
         /* 下边排的位置 */
         #lower_r {
            width: 100%;
            height: 70px;
           text-align: center;
        }

        #lower_r>p {
            width: 70px;
            display: inline-block;
            height: 70px;
            background-color: red;
            border-radius: 50%;
            text-align: center;
            line-height: 70px;
            margin: 0;
        }

        #lower_l {
            width: 100%;
            height: 130px;
            /* background-color: cornflowerblue; */
        }
        img{
            width: 60px;
            height: 80px;
            background-size: 100%;
        }
       ul{
           list-style: none;
       }
       ul.left>li:not(li:nth-of-type(1)){
           margin-top: -63px;
       }
       ul.right>li:not(li:nth-of-type(1)){
           margin-top: -63px;
       }
       ul.lower{
           display: flex;
       }
       ul.lower>li:not(li:nth-of-type(1)){
           margin-left: -25px;
       }
    </style>
</head>

<body>
    <div id="main">
        <div id="top">
            <div id="din">
                <ul class="top">
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                </ul>
            </div>
        </div>      
        <div id="center">
            <div id="left">
                <div id="left_l">
                    <p>玩家1</p>
                </div>
                <div id="left_r">
                    <ul class="left">
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                    </ul>
                </div>
            </div>
            <div id="cen">
                <div id="btn">发牌</div>
            </div>
            <div id="right">
                <div id="right_l">
                    <ul class="right">
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                        <li><img src="" ></li>
                    </ul>
                </div>
                <div id="right_r">
                    <p>玩家2</p>
                </div>
            </div>
        </div>
        <div id="lower">
            <div id="lower_l">
                <ul class="lower">
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                    <li><img src="" ></li>
                </ul>
            </div>
            <div id="lower_r">
                <p>玩家3</p>
            </div>
        </div>
    </div>
    <script src="./index5.js"></script>
</body>

</html>
js代码
function puka() {

    //总的集合
    let setAll = new Set();
    for (let i = 3; i <= 15; i++) {
        for (let j = 1; j <= 4; j++) {
            setAll.add(`${i}.${j}`);
        }
    }
    setAll.add(`16.1`).add(`17.1`);
    let setTwo1 = addTwo(17, setAll);
    let setTwo2 = addTwo(17, setAll);
    let setTwo4 = addTwo(3, setAll);
    // console.log(setTwo1,setTwo2,setAll,setTwo4,);
    setTwo1 = [...setTwo1].sort((a, b) => a - b).join(" ").split(".").join("_").split(" ");
    setTwo2 = [...setTwo2].sort((a, b) => a - b).join(" ").split(".").join("_").split(" ");
    setAll = [...setAll].sort((a, b) => a - b).join(" ").split(".").join("_").split(" ");
    setTwo4 = [...setTwo4].sort((a, b) => a - b).join(" ").split(".").join("_").split(" ");

    console.log(setTwo1, setTwo2, setAll, setTwo4);

    let top = document.querySelectorAll(".top>li>img");
    let left = document.querySelectorAll(".left>li>img");
    let right = document.querySelectorAll(".right>li>img");
    let lower = document.querySelectorAll(".lower>li>img");
    console.log(top, left, right, lower);
    foo(top, setTwo4);
    foo(left, setTwo2);
    foo(right, setTwo1);
    foo(lower, setAll);

}


function main() {
    puka();
    document.getElementById("btn").onclick = puka;
}

main();



//点击事件
//封装函数
function foo(arr, imgs) {
    for (let i = 0; i < arr.length; i++) {
        arr[i].src = `./puke/${imgs[i]}.jpg`;

    }
}

//三玩家的集合
function addTwo(num, setAll) {
    let setTwo = new Set();
    let str;
    for (let i = 0; i < num; i++) {
        let front = rand(17, 1);
        if (front == 16 || front == 17) {
            str = `${front}.1`;
            // setAll.delete(str);
            if (setAll.delete(str)) {
                setTwo.add(str);
            } else {
                i--;
            }
        } else {
            str = `${front}.${rand(4, 1)}`;
            // setAll.delete(str);
            if (setAll.delete(str)) {
                setTwo.add(str);
            } else {
                i--;
            }
        }

    }
    return setTwo;
}

//获取随机数
function rand(max, min) {
    return Math.round(Math.random() * (max - min) + min);
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是一份简单的 JavaScript 扑克牌游戏代码: ``` // 定义花色和点数数组 const suits = ["♠️", "♣️", "♥️", "♦️"]; const values = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]; // 创建一副扑克牌 class Deck { constructor() { this.deck = []; for (let suit in suits) { for (let value in values) { this.deck.push(values[value] + " " + suits[suit]); } } } // 洗牌 shuffle() { let m = this.deck.length, t, i; while (m) { i = Math.floor(Math.random() * m--); t = this.deck[m]; this.deck[m] = this.deck[i]; this.deck[i] = t; } return this; } // 发牌 deal() { return this.deck.pop(); } } // 创建玩家 class Player { constructor(name) { this.name = name; this.hand = []; } draw(deck) { this.hand.push(deck.deal()); return this; } showHand() { console.log(this.name + "'s hand: " + this.hand.join(", ")); } } // 创建游戏 let deck1 = new Deck(); let player1 = new Player("Player 1"); let player2 = new Player("Player 2"); deck1.shuffle(); player1.draw(deck1).draw(deck1); player2.draw(deck1).draw(deck1); player1.showHand(); player2.showHand(); ``` 这是一个简单的 JavaScript 扑克牌游戏代码,它可以实现创建一副扑克牌,洗牌,发牌等功能。 ### 回答2: 以下是一个基于JavaScript扑克牌游戏代码示例: ```javascript // 定义扑克牌花色和点数数组 const suits = ['♠', '♥', '♦', '♣']; const ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']; // 生成扑克牌的函数 function createDeck() { const deck = []; for (let suit of suits) { for (let rank of ranks) { deck.push({ suit, rank }); } } return deck; } // 洗牌函数 function shuffle(deck) { for (let i = deck.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [deck[i], deck[j]] = [deck[j], deck[i]]; } } // 发牌函数 function deal(deck, numPlayers, numCards) { const hands = Array.from({ length: numPlayers }, () => []); for (let i = 0; i < numCards; i++) { for (let j = 0; j < numPlayers; j++) { hands[j].push(deck.pop()); } } return hands; } // 示例用法 const deck = createDeck(); shuffle(deck); const hands = deal(deck, 4, 5); console.log(hands); ``` 这段代码定义了 `suit`(花色) 和 `rank`(点数)数组,通过 `createDeck` 函数生成一副完整的扑克牌。随后使用 `shuffle` 函数进行洗牌,并使用 `deal` 函数按照指定的玩家数量和发牌数量进行发牌。最后将发牌结果打印输出。 注意,这只是一个简单的扑克牌游戏代码示例,还有很多游戏规则和逻辑需要添加进去才能完成一个完整的游戏。 ### 回答3: 以下是一个简单的JavaScript扑克牌游戏代码示例: ```javascript // 创建一副扑克牌 function createDeck() { const suits = ['♠', '♣', '♦', '♥']; const ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']; const deck = []; for (let suit of suits) { for (let rank of ranks) { deck.push({ suit, rank }); } } return deck; } // 洗牌算法 function shuffle(deck) { for (let i = deck.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [deck[i], deck[j]] = [deck[j], deck[i]]; } return deck; } // 发牌 function deal(deck, numCards) { if (deck.length < numCards) { throw new Error("牌不够了"); } const hand = deck.slice(0, numCards); deck.splice(0, numCards); return hand; } // 使用示例 const deck = createDeck(); shuffle(deck); const hand = deal(deck, 5); console.log(hand); ``` 这个代码创建了一个扑克牌游戏的基本框架。`createDeck`函数用来创建一副扑克牌,`shuffle`函数使用洗牌算法对扑克牌进行洗牌操作,`deal`函数用来发牌。使用示例中,我们首先创建一副扑克牌,然后进行洗牌操作,最后发5张牌并输出到控制台。这只是一个简单示例,你可以根据自己的需求对代码进行扩展和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值