{"id":396,"date":"2026-04-03T12:35:11","date_gmt":"2026-04-03T12:35:11","guid":{"rendered":"https:\/\/decktoon.com\/?page_id=396"},"modified":"2026-04-03T12:37:25","modified_gmt":"2026-04-03T12:37:25","slug":"mining","status":"publish","type":"page","link":"https:\/\/decktoon.com\/?page_id=396","title":{"rendered":"mining"},"content":{"rendered":"\n<style>\n    \/* \uc804\uccb4 \ud14c\ub9c8 \ubc0f \ucee8\ud14c\uc774\ub108 *\/\n    :root {\n        --bg-color: #1a1d21;\n        --container-bg: #24292e;\n        --text-color: #e1e4e8;\n        --accent-blue: #0366d6;\n        --accent-orange: #f97316;\n        --dcc-gold: #f1c40f;\n    }\n    #dcc-game-v2 { \n        max-width: 450px; margin: 20px auto; padding: 30px; \n        background-color: var(--container-bg); color: var(--text-color); \n        border-radius: 16px; text-align: center; font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif; \n        box-shadow: 0 10px 25px rgba(0,0,0,0.5); border: 1px solid #30363d;\n    }\n    #dcc-game-v2 h2 { margin-top: 0; color: #fff; font-size: 24px; font-weight: 600; }\n\n    \/* \uc9c4\ud589 \ubc14 \uacf5\ud1b5 \uc2a4\ud0c0\uc77c *\/\n    .bar-bg { background: #30363d; height: 14px; border-radius: 7px; overflow: hidden; margin: 6px 0 16px 0; border: 1px solid #444c56; }\n    .bar-fill { height: 100%; transition: width 0.1s ease-out; border-radius: 7px; }\n    \n    \/* HP Bar: Red to Orange gradient *\/\n    #hp-bar { background: linear-gradient(90deg, #ef4444 0%, #f97316 100%); width: 100%; }\n    \n    \/* Energy Bar: Blue gradient *\/\n    #energy-bar { background: linear-gradient(90deg, #38bdf8 0%, #0366d6 100%); width: 100%; }\n\n    \/* \uba54\uc778 \uad11\ubb3c (\ud074\ub9ad \uc601\uc5ed) *\/\n    #rock-area { position: relative; display: inline-block; margin: 20px 0; cursor: pointer; user-select: none; }\n    #rock-emoji { font-size: 90px; transition: transform 0.05s; display: inline-block; }\n    #rock-area:active #rock-emoji { transform: scale(0.85) rotate(-5deg); }\n    #rock-area.disabled { filter: grayscale(100%) opacity(0.5); cursor: not-allowed; }\n    #mole-status { font-size: 15px; color: #8b949e; margin-bottom: 15px; min-height: 20px; }\n\n    \/* \ud1b5\uacc4 \ubc0f \ud14d\uc2a4\ud2b8 *\/\n    .stats-row { display: flex; justify-content: space-between; font-size: 13px; color: #8b949e; font-weight: 500; }\n    .stats-val { color: var(--text-color); font-weight: 600; }\n    .main-balance { font-size: 28px; color: var(--dcc-gold); font-weight: 700; margin-bottom: 25px; border-bottom: 1px solid #30363d; padding-bottom: 15px; }\n\n    \/* \uc54c\ub9bc \uba54\uc2dc\uc9c0 (\ucf54\uc778 \ud68d\ub4dd \ub4f1) *\/\n    #message-area { min-height: 50px; margin: 10px 0; padding: 10px; border-radius: 8px; font-size: 14px; font-weight: 500; }\n    .msg-reward { background-color: rgba(241, 196, 15, 0.1); color: var(--dcc-gold); border: 1px solid rgba(241, 196, 15, 0.3); }\n    .msg-error { background-color: rgba(239, 68, 68, 0.1); color: #ef4444; border: 1px solid rgba(239, 68, 68, 0.3); }\n\n    \/* \ucf54\uc778 \uc778\ubca4\ud1a0\ub9ac (\uc870\uac01 \ud604\ud669) *\/\n    #inventory { margin-top: 25px; text-align: left; background: rgba(0,0,0,0.2); padding: 15px; border-radius: 10px; border: 1px solid #30363d; }\n    #inventory h4 { margin: 0 0 10px 0; color: #fff; font-size: 16px; }\n    .coin-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }\n    .coin-item { background: #2d333b; padding: 8px 12px; border-radius: 6px; border: 1px solid #444c56; display: flex; justify-content: space-between; font-size: 12px; align-items: center;}\n    .coin-symbol { font-weight: 700; color: #fff; }\n    .coin-frag-count { color: #8b949e; }\n    .coin-complete { color: var(--dcc-gold); font-weight: bold;}\n<\/style>\n\n<div id=\"dcc-game-v2\">\n    <h2>\u26cf\ufe0f DCC \ud558\ub4dc\ucf54\uc5b4 \uc2ec\uce35 \uad11\uc0b0<\/h2>\n    \n    <div class=\"main-balance\">\n        <span style=\"font-size: 16px; color: #8b949e;\">\ubcf4\uc720 DCC:<\/span> \n        <span id=\"dcc-total\">0.0000<\/span>\n    <\/div>\n    \n    <div class=\"stats-row\">\n        <span>\ud83e\udea8 \uad11\ubb3c \uccb4\ub825 <span class=\"stats-val\">(Lv.<span id=\"level\">1<\/span>)<\/span><\/span> \n        <span id=\"hp-text\" class=\"stats-val\">50\/50<\/span>\n    <\/div>\n    <div class=\"bar-bg\"><div id=\"hp-bar\" class=\"bar-fill\"><\/div><\/div>\n    \n    <div id=\"message-area\"><\/div>\n    \n    <div id=\"rock-area\" onclick=\"hitRock()\">\n        <span id=\"rock-emoji\">\ud83e\udea8<\/span>\n    <\/div>\n    <div id=\"mole-status\">\ub450\ub354\uc9c0 \ub300\uae30\uc911 \ud83d\udc39<\/div>\n    \n    <div class=\"stats-row\">\n        <span>\u26a1 \ub450\ub354\uc9c0 \uc5d0\ub108\uc9c0<\/span> \n        <span id=\"energy-text\" class=\"stats-val\">30\/30<\/span>\n    <\/div>\n    <div class=\"bar-bg\"><div id=\"energy-bar\" class=\"bar-fill\"><\/div><\/div>\n\n    <div id=\"inventory\">\n        <h4>\ud83d\udce6 \ucf54\uc778 \uc870\uac01 \ucc3d\uace0<\/h4>\n        <div id=\"coin-grid\" class=\"coin-grid\">\n            <\/div>\n    <\/div>\n<\/div>\n\n<script>\n    \/\/ --- \uac8c\uc784 \ub370\uc774\ud130 & \uc124\uc815 ---\n    \n    \/\/ 1. \ucf54\uc778 \uc815\ubcf4 \ubc0f \ucc44\uad74 \ud655\ub960 (\ud569\uacc4\uac00 100\uc774 \ub418\uc5b4\uc57c \ud568)\n    \/\/ BTC \ud655\ub960: 0.0001%\n    const COIN_CONFIG = {\n        'DCC':   { name: 'DCC Coin',   symbol: 'DCC',  fragsNeeded: 5,   probability: 85.0000, color: '#f1c40f' },\n        'USDT':  { name: 'Tether',     symbol: 'USDT', fragsNeeded: 10,  probability: 8.0000,  color: '#26a17b' },\n        'TRX':   { name: 'TRON',       symbol: 'TRX',  fragsNeeded: 10,  probability: 4.0000,  color: '#ef192c' },\n        'XRP':   { name: 'Ripple',     symbol: 'XRP',  fragsNeeded: 12,  probability: 1.5000,  color: '#23292f' },\n        'ADA':   { name: 'Cardano',    symbol: 'ADA',  fragsNeeded: 15,  probability: 1.0000,  color: '#0033ad' },\n        'DOGE':  { name: 'Dogecoin',   symbol: 'DOGE', fragsNeeded: 15,  probability: 0.3000,  color: '#ba9f33' },\n        'SOL':   { name: 'Solana',     symbol: 'SOL',  fragsNeeded: 20,  probability: 0.1500,  color: '#9945FF' },\n        'BNB':   { name: 'BNB',        symbol: 'BNB',  fragsNeeded: 20,  probability: 0.0400,  color: '#f3ba2f' },\n        'ETH':   { name: 'Ethereum',   symbol: 'ETH',  fragsNeeded: 25,  probability: 0.0099,  color: '#627eea' },\n        'BTC':   { name: 'Bitcoin',    symbol: 'BTC',  fragsNeeded: 30,  probability: 0.0001,  color: '#f7931a' } \/\/ \uadf9\uc545\uc758 \ud655\ub960\n    };\n\n    \/\/ 2. \uac8c\uc784 \uc0c1\ud0dc \ubcc0\uc218 (\ucd08\uae30\uac12)\n    let gameState = {\n        dccBalance: 0,\n        level: 1,\n        maxHp: 50, \/\/ \uc2dc\uc791 HP \uc99d\uac00 (\uace0\ub09c\uc774\ub3c4)\n        hp: 50,\n        maxEnergy: 30, \/\/ \uc2dc\uc791 \uc5d0\ub108\uc9c0 \uc99d\uac00\n        energy: 30,\n        frags: {}, \/\/ { 'BTC': 5, 'ETH': 2 } \ud615\ud0dc\ub85c \uc800\uc7a5\n        completedCoins: {} \/\/ { 'BTC': 1, 'DCC': 10 } \ud615\ud0dc\ub85c \uc800\uc7a5\n    };\n\n    \/\/ \uc778\ubca4\ud1a0\ub9ac \ucd08\uae30\ud654\n    Object.keys(COIN_CONFIG).forEach(symbol => {\n        gameState.frags[symbol] = 0;\n        gameState.completedCoins[symbol] = 0;\n    });\n\n    \/\/ --- \uc720\ud2f8\ub9ac\ud2f0 \ud568\uc218 ---\n\n    \/\/ \uac00\uc911\uce58 \ud655\ub960 \uc120\ud0dd \ud568\uc218\n    function getRandomCoinSymbol() {\n        const rand = Math.random() * 100; \/\/ 0 ~ 100 \uc0ac\uc774 \ub09c\uc218\n        let cumulativeProb = 0;\n        \n        for (const symbol in COIN_CONFIG) {\n            cumulativeProb += COIN_CONFIG[symbol].probability;\n            if (rand <= cumulativeProb) {\n                return symbol;\n            }\n        }\n        return 'DCC'; \/\/ \ub9cc\uc57d\uc758 \uacbd\uc6b0 \ub300\ube44 \ub514\ud3f4\ud2b8\n    }\n\n    \/\/ \uba54\uc2dc\uc9c0 \ud45c\uc2dc \ud568\uc218\n    function displayMessage(text, type = 'reward') {\n        const msgArea = document.getElementById('message-area');\n        msgArea.innerText = text;\n        msgArea.className = type === 'reward' ? 'msg-reward' : 'msg-error';\n        \n        \/\/ 4\ucd08 \ud6c4 \uba54\uc2dc\uc9c0 \ucd08\uae30\ud654\n        clearTimeout(msgArea.timer);\n        msgArea.timer = setTimeout(() => {\n            msgArea.innerText = '';\n            msgArea.className = '';\n        }, 4000);\n    }\n\n    \/\/ --- \ud575\uc2ec \uac8c\uc784 \ub85c\uc9c1 ---\n\n    \/\/ UI \uc5c5\ub370\uc774\ud2b8\n    function updateUI() {\n        \/\/ \uba54\uc778 \uc2a4\ud0ef\n        document.getElementById('dcc-total').innerText = gameState.dccBalance.toFixed(4);\n        document.getElementById('hp-text').innerText = gameState.hp + '\/' + gameState.maxHp;\n        document.getElementById('level').innerText = gameState.level;\n        document.getElementById('energy-text').innerText = gameState.energy + '\/' + gameState.maxEnergy;\n\n        \/\/ \uc9c4\ud589 \ubc14\n        document.getElementById('hp-bar').style.width = (gameState.hp \/ gameState.maxHp * 100) + '%';\n        document.getElementById('energy-bar').style.width = (gameState.energy \/ gameState.maxEnergy * 100) + '%';\n\n        \/\/ \ub450\ub354\uc9c0\/\uad11\ubb3c \uc0c1\ud0dc\n        const rockArea = document.getElementById('rock-area');\n        const moleStatus = document.getElementById('mole-status');\n        \n        if (gameState.energy <= 0) {\n            rockArea.classList.add('disabled');\n            moleStatus.innerHTML = '\uc9c0\ucce4\uc2b5\ub2c8\ub2e4... \uccb4\ub825 \ud68c\ubcf5 \uc911 \ud83d\udca4 (1\ucd08\ub2f9 +1)';\n        } else {\n            rockArea.classList.remove('disabled');\n            moleStatus.innerHTML = '\uc2ec\uce35 \ucc44\uad74 \uc911! \uba54\uc774\uc800 \ucf54\uc778\uc744 \ub178\ub824\ubcf4\uc138\uc694! \ud83d\udc39\u26cf\ufe0f';\n        }\n\n        \/\/ \uc778\ubca4\ud1a0\ub9ac \uadf8\ub9ac\ub4dc \uc5c5\ub370\uc774\ud2b8\n        updateInventoryUI();\n    }\n\n    \/\/ \uc778\ubca4\ud1a0\ub9ac UI\ub9cc \ubcc4\ub3c4 \uc5c5\ub370\uc774\ud2b8\n    function updateInventoryUI() {\n        const grid = document.getElementById('coin-grid');\n        grid.innerHTML = ''; \/\/ \uae30\uc874 \ub0b4\uc6a9 \uc0ad\uc81c\n\n        Object.keys(COIN_CONFIG).forEach(symbol => {\n            const config = COIN_CONFIG[symbol];\n            const fragCount = gameState.frags[symbol];\n            const completeCount = gameState.completedCoins[symbol];\n\n            const itemDiv = document.createElement('div');\n            itemDiv.className = 'coin-item';\n            itemDiv.style.borderLeft = `3px solid ${config.color}`;\n\n            let content = `<span class=\"coin-symbol\">${symbol}<\/span>`;\n            \n            if (symbol === 'DCC') {\n                \/\/ DCC\ub294 \uc644\uc81c\ud488 \uac1c\uc218\ub9cc \ud45c\uc2dc (\uc870\uac01 \uba54\ucee4\ub2c8\uc998 \uc81c\uc678\ud558\uac70\ub098 \ub2e4\ub974\uac8c \ud45c\ud604 \uac00\ub2a5, \uc5ec\uae30\uc120 \ub2e8\uc21c\ud654)\n                \/\/ content += `<span class=\"coin-complete\">${completeCount} \uac1c<\/span>`;\n                \/\/ \uc6d0\uc694\uccad\ub300\ub85c \uc870\uac01 \ubaa8\uc73c\uae30\ub85c \ud1b5\uc77c:\n                content += `<span class=\"coin-frag-count\">${fragCount}\/${config.fragsNeeded} \uc870\uac01<\/span>`;\n                if (completeCount > 0) content += ` <span class=\"coin-complete\">(\uc644\ub8cc ${completeCount})<\/span>`;\n\n            } else {\n                content += `<span class=\"coin-frag-count\">${fragCount}\/${config.fragsNeeded} \uc870\uac01<\/span>`;\n                if (completeCount > 0) content += ` <span class=\"coin-complete\">(\uc644\ub8cc ${completeCount})<\/span>`;\n            }\n\n            itemDiv.innerHTML = content;\n            grid.appendChild(itemDiv);\n        });\n    }\n\n    \/\/ \ud074\ub9ad \uc774\ubca4\ud2b8 \ud578\ub4e4\ub7ec\n    function hitRock() {\n        if (gameState.energy <= 0) {\n            displayMessage('\uc5d0\ub108\uc9c0\uac00 \ubd80\uc871\ud569\ub2c8\ub2e4! \uc7a0\uc2dc \uc26c\uc5b4\uc57c \ud569\ub2c8\ub2e4.', 'error');\n            return;\n        }\n\n        \/\/ 1. \uc5d0\ub108\uc9c0 \ubc0f HP \uac10\uc18c\n        gameState.energy--;\n        gameState.hp--;\n\n        \/\/ 2. \uad11\ubb3c \ud30c\uad34 \uc5ec\ubd80 \ud655\uc778\n        if (gameState.hp <= 0) {\n            \/\/ --- \uad11\ubb3c \ud30c\uad34 \uc131\uacf5 \ubcf4\uc0c1 \ub85c\uc9c1 ---\n\n            \/\/ A. \uc5b4\ub5a4 \ucf54\uc778 \uc870\uac01\uc774 \ub098\uc62c\uc9c0 \uacb0\uc815 (\ud655\ub960)\n            const minedSymbol = getRandomCoinSymbol();\n            const coinInfo = COIN_CONFIG[minedSymbol];\n\n            \/\/ B. \uc870\uac01 \ucd94\uac00\n            gameState.frags[minedSymbol]++;\n            let msg = `\ud83c\udf89 \uad11\ubb3c \ud30c\uad34 \uc131\uacf5! [${coinInfo.name}] \uc870\uac01 1\uac1c \ud68d\ub4dd!`;\n\n            \/\/ C. \uc870\uac01\uc774 \ub2e4 \ubaa8\uc600\ub294\uc9c0 \ud655\uc778 (\ucf54\uc778 \uc644\uc131)\n            if (gameState.frags[minedSymbol] >= coinInfo.fragsNeeded) {\n                gameState.frags[minedSymbol] -= coinInfo.fragsNeeded; \/\/ \uc870\uac01 \ucc28\uac10\n                gameState.completedCoins[minedSymbol]++; \/\/ \uc644\uc81c\ud488 \ucd94\uac00\n\n                msg = `\ud83c\udf8a \ub300\ubc15! [${coinInfo.name}] \uc870\uac01\uc744 \ubaa8\ub450 \ubaa8\uc544 \ucf54\uc778 1\uac1c\ub97c \uc644\uc131\ud588\uc2b5\ub2c8\ub2e4!`;\n                \n                \/\/ \ub9cc\uc57d \uc644\uc131\ub41c \ucf54\uc778\uc774 DCC\ub77c\uba74 \uba54\uc778 \uc794\uc561\uc5d0 \uc989\uc2dc \ubc18\uc601 (\uc608\uc2dc)\n                if (minedSymbol === 'DCC') {\n                    gameState.dccBalance += 1.0; \n                }\n            }\n\n            displayMessage(msg, 'reward');\n\n            \/\/ D. \ub2e4\uc74c \ub808\ubca8 \uc124\uc815 (\uace0\ub09c\uc774\ub3c4 \ubc38\ub7f0\uc2a4)\n            gameState.level++;\n            \/\/ \ub808\ubca8\uc5c5 \uc2dc HP \uc99d\uac00 \ud3ed\uc744 \ud0a4\uc6c0 (1.5\ubc30 -> 1.8\ubc30 \ub4f1)\n            gameState.maxHp = Math.floor(gameState.maxHp * 1.7) + 20; \n            gameState.hp = gameState.maxHp; \/\/ HP \uc644\uce58\n            \n            \/\/ \ub808\ubca8\uc5c5 \ubcf4\ub108\uc2a4 \uc5d0\ub108\uc9c0 (\uc120\ud0dd \uc0ac\ud56d)\n            \/\/ gameState.energy = Math.min(gameState.maxEnergy, gameState.energy + 10); \n        }\n\n        updateUI();\n    }\n\n    \/\/ --- \uc790\ub3d9\ud654 \uc2dc\uc2a4\ud15c ---\n\n    \/\/ 1\ucd08\ub9c8\ub2e4 \uc5d0\ub108\uc9c0 \uc790\ub3d9 \ud68c\ubcf5\n    setInterval(() => {\n        if (gameState.energy < gameState.maxEnergy) {\n            gameState.energy++;\n            updateUI();\n        }\n    }, 1000);\n\n    \/\/ --- \uac8c\uc784 \uc2dc\uc791 ---\n    \/\/ \ucd08\uae30 \ub85c\ub4dc \uc2dc UI \uadf8\ub9ac\uae30\n    updateUI();\n\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u26cf\ufe0f DCC \ud558\ub4dc\ucf54\uc5b4 \uc2ec\uce35 \uad11\uc0b0 \ubcf4\uc720 DCC: 0.0000 \ud83e\udea8 \uad11\ubb3c \uccb4\ub825 (Lv.1) 50\/50 \ud83e\udea8 \ub450\ub354\uc9c0 \ub300\uae30\uc911 \ud83d\udc39 \u26a1 \ub450\ub354\uc9c0 \uc5d0\ub108\uc9c0 30\/30 \ud83d\udce6 \ucf54\uc778 \uc870\uac01 \ucc3d\uace0<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-396","page","type-page","status-publish","hentry"],"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"decktoon","author_link":"https:\/\/decktoon.com\/author\/decktoon"},"rttpg_comment":0,"rttpg_category":null,"rttpg_excerpt":"\u26cf\ufe0f DCC \ud558\ub4dc\ucf54\uc5b4 \uc2ec\uce35 \uad11\uc0b0 \ubcf4\uc720 DCC: 0.0000 \ud83e\udea8 \uad11\ubb3c \uccb4\ub825 (Lv.1) 50\/50 \ud83e\udea8 \ub450\ub354\uc9c0 \ub300\uae30\uc911 \ud83d\udc39 \u26a1 \ub450\ub354\uc9c0 \uc5d0\ub108\uc9c0 30\/30 \ud83d\udce6 \ucf54\uc778 \uc870\uac01 \ucc3d\uace0","_links":{"self":[{"href":"https:\/\/decktoon.com\/index.php?rest_route=\/wp\/v2\/pages\/396","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/decktoon.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/decktoon.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/decktoon.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/decktoon.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=396"}],"version-history":[{"count":2,"href":"https:\/\/decktoon.com\/index.php?rest_route=\/wp\/v2\/pages\/396\/revisions"}],"predecessor-version":[{"id":398,"href":"https:\/\/decktoon.com\/index.php?rest_route=\/wp\/v2\/pages\/396\/revisions\/398"}],"wp:attachment":[{"href":"https:\/\/decktoon.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}