• Javascript----实现21点游戏


    1、效果

    洗牌:

    要牌:

    亮牌:

    2、html代码

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="utf-8">
        <title>21点游戏</title>
        <link rel="stylesheet" type="text/css" href="css/21pointGame.less">
    </head>
    <body>
        <div class="container">
            <div class="header">
    	        <div class="nav">
    	            <h2>21点游戏</h2>
    	        </div>
            </div>
            <div class="banker">
                <div class="banker-point point" id='banker-point'>12</div>
                <div class="box" id='zhaungjia-box'>
                </div>
                <div class="img">
                	<img src="/imgs/banker.png">
                </div>
            </div>
            <div class="player">
                <div class="player-point point" id='player-point'>21</div>
                <div class="box" id='player-box'>
                </div>
                <div class="img">
                	<img src="/imgs/player.png">
                </div>
            </div>
            <div class='option'>
                <fieldset>
                    <legend>玩家</legend>
                    <a href="#" class='player-add' id='player-add'>要牌</a>
                    <a href="#" class='player-show' id='player-show'>亮牌</a>
                    <a href="#" class='refresh' id='refresh'>洗牌</a>
                </fieldset>
            </div>
            <div class="winner">
                <span>赢家:</span>
                <span class='winner-val' id='winner-val'></span>
            </div>
        </div>
        <script type="text/javascript" src = 'js/21pointGame.js'></script>
    </body>
    
    </html>
    

      3、less代码

        .container {
             1080px;
            height: 700px;
            box-shadow: 0 0 100px 10px gray;
            margin: 0 auto;
        }
        .header {
             100%;
            height: 150px;
            line-height: 30px;
            text-align: right;
            background-image: url("/imgs/nav.jpg");
            background-size: 1080px 100%;
    
        }
    
        .header span {
            margin: 0 20px 0 0;
        }
    
        .nav {
            height: 150px;
            line-height: 150px;
            text-align: center;
            font-weight: bold;
            font-size: 40px;
        }
        .img{
            position: absolute;
            left: 0;
            height: 160px;
             120px;
            overflow: hidden;
            img{
                height: 100%;
                 120px;
    
            }
        }
        
        .banker,
        .player {
             100%;
            height: 200px;
            position: relative;
            margin: 0 20px 0 20px;
            top: 0;
            left: 0;
        }
        .box{
            position: absolute;
            top: 20px;
            left: 140px;
        }
    
        .point {
            height: 40px;
            line-height: 40px;
             100px;
            text-align: center;
            font-size: 20px;
        }
    
        .puke-list1 {
            position: absolute;
            top: 40px;
            left: 0;
             72px;
            height: 107px;
            overflow: hidden;
            box-shadow: 0 0 10px 3px gray;
            img {
                 72px;
                height: 107px;
            }
        }
    
        .puke-list2 {
            position: absolute;
            top: 40px;
            left: 0;
             72px;
            height: 107px;
            overflow: hidden;
            box-shadow: 0 0 10px 1px gray;
            img {
                 72px;
                height: 107px;
            }
        }
    
        .option {}
    
        .winner-val {
            color: red;
            font-size: 30px;
        }
    

      4、js代码

    var timeSpan = document.getElementById("time");
        var point1 = document.getElementById("banker-point");
        var point2 = document.getElementById("player-point");
        var box1 = document.getElementById("zhaungjia-box");
        var box2 = document.getElementById("player-box");
        var add = document.getElementById("player-add");
        var show = document.getElementById("player-show");
        var refresh = document.getElementById("refresh");
        var winnerVal = document.getElementById("winner-val");
    
        var left1 = 0;
        var left2 = 0;
        var left3 = 0;
        var bankerPoint = 0;
        var playerPoint = 0;
        var is_finish = false;
        var is_over = false;
        ////console.log(show);
    
        init();
        //初始化
        function init() {
            box1.innerHTML = "";
            box2.innerHTML = "";
            var pai1 = getPai();
            var n1 = pai1.number > 9 ? 10 : pai1.number;
            bankerPoint += n1;
            point1.innerText = "庄家:"+bankerPoint+"点";
            var obj = "<div class='puke-list1' style = 'left: 0px'>" +
                "<img src='static/imgs/" + pai1.url + ".jpg'>" +
                "</div>";
            box1.innerHTML += obj;
    
            var pai2 = getPai();
            var n2 = pai2.number > 9 ? 10 : pai2.number;
            playerPoint += n2;
            point2.innerText = "玩家:"+playerPoint+"点";
            var obj = "<div class='puke-list1' style = 'left: 0px'>" +
                "<img src='static/imgs/" + pai2.url + ".jpg'>" +
                "</div>";
            box2.innerHTML += obj;
            //console.log("洗牌:"+bankerPoint + "," + playerPoint);
        }
    
    
        //玩家要牌
        add.addEventListener("click", function() {
            if (!is_finish) {
                left2 += 40;
                var pai = getPai();
                var n = pai.number > 9 ? 10 : pai.number;
                playerPoint += n;
                point2.innerText = "玩家:"+playerPoint+"点";
                //console.log("玩家:"+bankerPoint + "," + playerPoint);
                var obj = "<div class='puke-list2' style = 'left:" + left2 + "px'>" +
                    "<img src='static/imgs/" + pai.url + ".jpg'>" +
                    "</div>";
                box2.innerHTML += obj;
                if (playerPoint > 21) {
                    winnerVal.innerText = "玩家已爆,庄家赢!";
                    is_finish = true;
                }
            }
        })
    
         //亮牌
         var clock;
        show.addEventListener("click", function() {
             clock = setInterval(function() {
                if (bankerPoint <= 21 && bankerPoint < playerPoint) {
                    var pai = getPai();
                    var n = pai.number > 9 ? 10 : pai.number;
                    bankerPoint += n;
                    point1.innerText = "庄家:"+bankerPoint+"点";
                   //console.log("庄家:"+bankerPoint + "," + playerPoint);
                    left1 += 40;
                    var obj = "<div class='puke-list1' style = 'left:" + left1 + "px'>" +
                        "<img src='static/imgs/" + pai.url + ".jpg'>" +
                        "</div>";
                    box1.innerHTML += obj;
    
                    if (bankerPoint > 21) {
                        winnerVal.innerHTML = "庄家已爆,玩家赢!";
                        clearInterval(clock);
                          is_over  = true;
                    }
    
                } else {
                    if (bankerPoint > playerPoint) {
                        winnerVal.innerText = "庄家点数大,庄家赢!";
                    } else if (bankerPoint == playerPoint) {
                        winnerVal.innerText = "点数相同,平局!";
    
                    } else {
                        winnerVal.innerText = "玩家点数大,玩家赢!";
                    }
                }
    
            }, 1000)
        })
    
        //洗牌
        refresh.addEventListener("click", function() {
            bankerPoint = 0;
            playerPoint = 0;
            init();
            is_finish = false;
            left1 = 0;
            left2 = 0;
            winnerVal.innerText = "";
             clearInterval(clock);
        })
    
        //获取随机牌
        function getPai() {
            var ran = parseInt(Math.random() * 51) + 1;
            //console.log("ran:" + ran);
            var imgUrl = "";
            var number;
            if (ran >= 1 && ran <= 52) {
                if (ran < 10) {
                    imgUrl = "0" + ran;
                } else {
                    imgUrl = ran;
                }
                if(ran>13){
                   number = ran % 13;
                   if(number == 0){
                   	number = 13;
                   }
                }
                else{
                	number = ran;
                }
    
            } else {
                return -1;
            }
            var pai = {
                "number": number,
                "url": imgUrl
            }
            return pai;
        }
    
    
    
    
    
    
    
        function getTime() {
            var date = new Date();
            var year = date.getFullYear();
            var month = date.getMonth();
            var day = date.getDate();
            var hour = date.getHours();
            var minute = date.getMinutes();
            var second = date.getSeconds();
            var weekday = date.getDay();
    
            switch (weekday) {
                case "1":
                    "星期一";
                    break;
                case "2":
                    "星期二";
                    break;
                case "3":
                    "星期三";
                    break;
                case "4":
                    "星期四";
                    break;
                case "5":
                    "星期五";
                    break;
                case "6":
                    "星期六";
                    break;
                case "7":
                    "星期日";
                    break;
            }
    
            var s = year + "年" + month + "月" + day + "日 " + hour + ":" + minute + ":" + second;
            return s;
        }
    

      

      3、总结:

    游戏规则还不能灵活设定

  • 相关阅读:
    HTTP——Web服务器、代理、缓存
    nginx配置文件详解2
    nginx配置文件详解
    shell笔记2
    django笔记
    python 发请求,urllib,urllib2
    nginx配置
    python os模块学习
    mac 终端命令小结
    mac常用命令笔记
  • 原文地址:https://www.cnblogs.com/SunlikeLWL/p/7336981.html
Copyright © 2020-2023  润新知