魔法卡片计算器

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="GBK" />
    <title>魔法卡片消耗计算器</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.0/dist/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
    <style>
        .table {
            width: 100%;
        }
 
            .table, .table th, .table td {
                border: solid 1px #eee;
                border-collapse: collapse;
            }
 
        .magic-card {
            width: 100px;
            height: 160px;
            border: solid 2px #888888;
        }
 
        .clear-both {
            clear: both;
            width: 0px;
            height: 0px;
            overflow: hidden;
        }
    </style>
</head>
 
<body>
    <nav aria-label="breadcrumb">
        <ol class="breadcrumb">
            <li class="breadcrumb-item active" aria-current="page">魔法卡片消耗计算器</li>
        </ol>
    </nav>
    <div class="container-fluid mt-1">
        <div class="row">
            <div class="col-12">
                <div class="form-inline">
                    套卡层数:<input class="form-control" type="number" id="numCardLevelCount" min="1" max="15" increment="1" value="3" /><button class="btn btn-primary ml-2" type="button" onclick="createCardSet();">确定</button>
                </div>
            </div>
        </div>
        <div class="row mt-1">
            <div class="col-12">
                <table class="table" id="tblCards">
                    <thead>
                        <tr>
                            <th>层级</th>
                            <th>卡片</th>
                        </tr>
                    </thead>
                    <tbody></tbody>
                </table>
            </div>
        </div>
        <div class="row mt-1">
            <div class="col-12 text-center">
                <button class="btn btn-success" onclick="computeConsume();">计算消耗</button>
            </div>
        </div>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.0/dist/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
    <script>
        function cl(obj) {
            if (console && console.log) {
                console.log(obj);
            }
        }
    </script>
    <script>
        function createOneCard(level) {
            var cardId = level + "-" + $("#tblCards tr[data-level=" + level + "]").find(".card").length;
            var html = "";
            html += "<div class='card float-left mr-2 mb-2' data-card-id='" + cardId + "' data-level='" + level + "'>";
            html += "<div class='card-header'>";
            html += cardId;
            html += "</div>";
            html += "<div class='card-body'>";
            if (level > 1) {
                html += "<div class='form-inline mb-1'>";
                html += "消耗卡片:";
                for (var i = 0; i < 3; i++) {
                    html += "<input class='form-control-sm mr-1' type='text' style='width: 60px;' data-card-id='" + cardId + "'/>";
                }
                html += "</div>";
            }
            html += "<div class='form-inline mb-1'>";
            html += "已有张数:<input class='form-control-sm mr-1' type='number' style='width: 90px;' data-card-id='" + cardId + "' min='0' value='0'/>";
            html += "</div>";
            html += "<div class='alert alert-info'>消耗数:" + "1" + "</div>";
            html += "</div>";
            html += "</div>";
            html += "";
            return html;
        }
 
        function createCards(level) {
            var $td = $("#tblCards tr[data-level=" + level + "]").find("td").eq(0);
            $td.children().remove();
            var cardCount = parseInt($("input[data-level=" + level + "]").val(), 10);
            for (var i = 0; i < cardCount; i++) {
                $td.append(createOneCard(level));
            }
        }
 
        function createOneRow(level) {
            var rowHtml = "<tr data-level='" + level + "'>";
            rowHtml += "<th>";
            rowHtml += "第" + level + "层";
            rowHtml += "<div class='form-inline'>";
            rowHtml += "卡数:" + "<input class='form-control' style='width: 90px;' type='number' data-level='" + level + "' min='1' max='15' value='1'/>";
            rowHtml += "<button class='btn btn-sm btn-primary ml-2' onclick='createCards(" + level + ")'>";
            rowHtml += "确定";
            rowHtml += "</button>";
            rowHtml += "</div>";
            rowHtml += "</th>";
            rowHtml += "<td>" + createOneCard(level) + "</td>";
            rowHtml += "</tr>";
            return rowHtml;
        }
 
        function createCardSet() {
            $("#tblCards tbody").children().remove();
            var levels = parseInt($("#numCardLevelCount").val(), 10);
            for (var i = levels; i >= 1; i--) {
                var rowHtml = createOneRow(i);
                $("#tblCards tbody").append(rowHtml);
            }
        }
 
        $(function () {
            createCardSet();
        });
    </script>
    <script>
        var hasCards = {};
        function computeConsume() {
            var $cards = $("#tblCards tbody tr").find("div[data-card-id]");
            var $hasCards = $cards.find("input[type=number][data-card-id]");
            for (var i = 0; i < $hasCards.length; i++) {
                hasCards[$hasCards.eq(i).data("card-id")] = parseInt($hasCards.eq(i).val(), 10);
            }
            var consumes = {};
            for (var i = 0; i < $cards.length; i++) {
                var consume = computeOneCardConsume($cards.eq(i).data("card-id"));
                for (var attr in consume) {
                    if (consumes[attr]) {
                        consumes[attr] += consume[attr];
                    } else {
                        consumes[attr] = consume[attr];
                    }
                }
            }
            for (var cardId in consumes) {
                $("#tblCards tbody tr").find("div[data-card-id=" + cardId + "]").find("div.alert-info")
                    .text("消耗数:" + consumes[cardId]);
            }
        }
 
        function computeOneCardConsume(cardId) {
            var ret = {};
            ret[cardId] = 1;
            var $card = $("div[data-card-id=" + cardId + "]");
            var level = parseInt($card.data("level"), 10);
            if (level > 1) {
                if (hasCards[cardId] > 0) {
                    hasCards[cardId]--;
                } else {
                    var $consumeCards = $card.find("input[type=text][data-card-id=" + cardId + "]");
                    for (var i = 0; i < $consumeCards.length; i++) {
                        var consume = computeOneCardConsume($consumeCards.eq(i).val());
                        for (var attr in consume) {
                            if (ret[attr]) {
                                ret[attr] += consume[attr];
                            } else {
                                ret[attr] = consume[attr];
                            }
                        }
                    }
                }
            }
            return ret;
        }
    </script>
</body>
 
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值