fork download
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5. int i, j;
  6. long dec; /* ให้รับค่าอินพุทแบบ Long Integer - เลขจำนวนเต็มแบบยาว */
  7. int bit[32]; /* จองพื้นที่ในการเก็บข้อมูลเลขฐาน 2 ลงใน Array */
  8.  
  9. clrscr(); /* เคลียร์หน้าจอ */
  10. printf("Decimal Number : "); /* แจ้งผู้ใช้เพื่อเตรียมป้อนค่าเลขฐาน 10 */
  11. scanf("%ld", &dec); /* ต้องใช้ ld เพราะ Input มันเป็นแบบ Long Integer */
  12. i = 0; /* กำหนดค่าเริ่มต้นของ Array */
  13. /* ทำตามที่ได้ออกแบบโปรแกรมเอาไว้ ... ยังไงยังงั้นเลย 55555+ */
  14. do {
  15. bit[i++] = dec % 2; /* การหารเอาเศษ เพื่อให้เป็นคำตอบ */
  16.  
  17. /* การหารทั่วไป แต่ตัวแปร dec ของภาษา C มันเป็น Integer หรือ เลขจำนวนเต็ม */
  18. /* ดังนั้นมันจึงตัดเศษ (หรือทศนิยม) ทิ้งไปโดยอัตโนมัติ */
  19. dec = dec / 2;
  20.  
  21. } while (dec > 0); /* เงื่อนไขที่ทำจนกระทั่ง dec = 0 ก็ออกจากวังวนเงื่อนไข */
  22.  
  23. /* การแสดงผลของการแปลงเลขฐาน 10 เป็นเลขฐาน 2*/
  24. /* j = i - 1 และให้ j ลดค่าลงทีละ 1 ... ก็คืออ่านข้อมูลถอยหลังกลับเท่านั้นเองครับ */
  25. /* เพราะตัวแปรแบบ Array ในภาษา C มันเก็บข้อมูลจากซ้ายไปขวา */
  26. /* ทำให้ LSB มันไปอยู่ทางซ้าย ส่วน MSB มันไปอยู่ทางขวา */
  27. for(j = i - 1; j >= 0; j--)
  28. printf("%d", bit[j]);
  29.  
  30. printf("\n");
  31. return 0;
  32.  
  33. }
Success #stdin #stdout 0.02s 25636KB
stdin
<!DOCTYPE html>
<html lang="th">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>เกมต่อสู้ RPG</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
        
        body {
            background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
            color: #fff;
            min-height: 100vh;
            padding: 20px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
        }
        
        .container {
            max-width: 900px;
            width: 100%;
            background-color: rgba(0, 0, 0, 0.7);
            border-radius: 15px;
            padding: 25px;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
            border: 2px solid #00a8ff;
        }
        
        h1 {
            text-align: center;
            color: #00a8ff;
            margin-bottom: 20px;
            font-size: 2.5rem;
            text-shadow: 0 0 10px rgba(0, 168, 255, 0.5);
        }
        
        .game-info {
            display: flex;
            justify-content: space-between;
            margin-bottom: 20px;
            background-color: rgba(0, 0, 0, 0.5);
            padding: 15px;
            border-radius: 10px;
            border: 1px solid #333;
        }
        
        .player-info, .enemy-info {
            flex: 1;
            padding: 15px;
            border-radius: 10px;
        }
        
        .player-info {
            background-color: rgba(0, 100, 0, 0.3);
            border: 2px solid #4CAF50;
        }
        
        .enemy-info {
            background-color: rgba(100, 0, 0, 0.3);
            border: 2px solid #f44336;
        }
        
        .health-bar-container {
            background-color: #333;
            height: 25px;
            border-radius: 5px;
            margin: 10px 0;
            overflow: hidden;
        }
        
        .health-bar {
            height: 100%;
            background: linear-gradient(90deg, #f00 0%, #ff0 50%, #0f0 100%);
            transition: width 0.5s ease;
            border-radius: 5px;
        }
        
        .player-health-bar {
            background: linear-gradient(90deg, #0f0 0%, #ff0 50%, #f00 100%);
        }
        
        .battle-area {
            display: flex;
            justify-content: space-around;
            align-items: center;
            margin: 30px 0;
            min-height: 250px;
        }
        
        .character {
            text-align: center;
            padding: 20px;
            border-radius: 10px;
            width: 200px;
        }
        
        .player {
            background-color: rgba(0, 100, 0, 0.2);
            border: 2px solid #4CAF50;
        }
        
        .enemy {
            background-color: rgba(100, 0, 0, 0.2);
            border: 2px solid #f44336;
        }
        
        .character-img {
            font-size: 80px;
            margin-bottom: 10px;
        }
        
        .player-img {
            color: #4CAF50;
        }
        
        .enemy-img {
            color: #f44336;
        }
        
        .controls {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 15px;
            margin-top: 20px;
        }
        
        button {
            padding: 15px;
            background-color: #00a8ff;
            color: white;
            border: none;
            border-radius: 8px;
            font-size: 1.1rem;
            cursor: pointer;
            transition: all 0.3s ease;
            font-weight: bold;
        }
        
        button:hover {
            background-color: #0097e6;
            transform: translateY(-3px);
            box-shadow: 0 5px 15px rgba(0, 168, 255, 0.4);
        }
        
        button:disabled {
            background-color: #555;
            cursor: not-allowed;
            transform: none;
            box-shadow: none;
        }
        
        .attack-btn {
            background-color: #e74c3c;
        }
        
        .attack-btn:hover {
            background-color: #c0392b;
            box-shadow: 0 5px 15px rgba(231, 76, 60, 0.4);
        }
        
        .heal-btn {
            background-color: #2ecc71;
        }
        
        .heal-btn:hover {
            background-color: #27ae60;
            box-shadow: 0 5px 15px rgba(46, 204, 113, 0.4);
        }
        
        .special-btn {
            background-color: #9b59b6;
        }
        
        .special-btn:hover {
            background-color: #8e44ad;
            box-shadow: 0 5px 15px rgba(155, 89, 182, 0.4);
        }
        
        .defend-btn {
            background-color: #3498db;
        }
        
        .defend-btn:hover {
            background-color: #2980b9;
            box-shadow: 0 5px 15px rgba(52, 152, 219, 0.4);
        }
        
        .log {
            margin-top: 30px;
            background-color: rgba(0, 0, 0, 0.7);
            padding: 15px;
            border-radius: 10px;
            height: 150px;
            overflow-y: auto;
            border: 1px solid #555;
        }
        
        .log h3 {
            color: #00a8ff;
            margin-bottom: 10px;
            border-bottom: 1px solid #00a8ff;
            padding-bottom: 5px;
        }
        
        .log-message {
            padding: 5px 0;
            border-bottom: 1px dotted #333;
        }
        
        .player-log {
            color: #4CAF50;
        }
        
        .enemy-log {
            color: #f44336;
        }
        
        .system-log {
            color: #FFD700;
        }
        
        .game-status {
            text-align: center;
            font-size: 1.5rem;
            margin-top: 20px;
            padding: 15px;
            border-radius: 10px;
            display: none;
        }
        
        .win {
            background-color: rgba(46, 204, 113, 0.3);
            color: #2ecc71;
            border: 2px solid #2ecc71;
            display: block;
        }
        
        .lose {
            background-color: rgba(231, 76, 60, 0.3);
            color: #e74c3c;
            border: 2px solid #e74c3c;
            display: block;
        }
        
        .restart-btn {
            grid-column: span 2;
            background-color: #FFD700;
            color: #333;
        }
        
        .restart-btn:hover {
            background-color: #FFC400;
            box-shadow: 0 5px 15px rgba(255, 215, 0, 0.4);
        }
        
        @media (max-width: 768px) {
            .controls {
                grid-template-columns: 1fr;
            }
            
            .restart-btn {
                grid-column: span 1;
            }
            
            .battle-area {
                flex-direction: column;
                gap: 20px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>🗡️ เกมต่อสู้ RPG 🛡️</h1>
        
        <div class="game-info">
            <div class="player-info">
                <h2>ฮีโร่ 🦸</h2>
                <div>พลังชีวิต: <span id="player-health">100</span>/<span id="player-max-health">100</span></div>
                <div class="health-bar-container">
                    <div class="health-bar player-health-bar" id="player-health-bar" style="width: 100%"></div>
                </div>
                <div>พลังโจมตี: <span id="player-attack">15</span></div>
                <div>การป้องกัน: <span id="player-defense">10</span></div>
                <div>พลังเวท: <span id="player-mana">50</span>/<span id="player-max-mana">50</span></div>
            </div>
            
            <div class="enemy-info">
                <h2>มอนสเตอร์ 👹</h2>
                <div>พลังชีวิต: <span id="enemy-health">120</span>/<span id="enemy-max-health">120</span></div>
                <div class="health-bar-container">
                    <div class="health-bar" id="enemy-health-bar" style="width: 100%"></div>
                </div>
                <div>พลังโจมตี: <span id="enemy-attack">12</span></div>
                <div>การป้องกัน: <span id="enemy-defense">8</span></div>
                <div>พลังเวท: <span id="enemy-mana">30</span>/<span id="enemy-max-mana">30</span></div>
            </div>
        </div>
        
        <div class="battle-area">
            <div class="character player">
                <div class="character-img player-img">⚔️</div>
                <h3>ฮีโร่</h3>
                <div>พลังชีวิต: <span id="player-health-display">100</span></div>
            </div>
            
            <div class="character enemy">
                <div class="character-img enemy-img">👹</div>
                <h3>มอนสเตอร์</h3>
                <div>พลังชีวิต: <span id="enemy-health-display">120</span></div>
            </div>
        </div>
        
        <div class="controls">
            <button class="attack-btn" id="attack-btn">⚔️ โจมตี</button>
            <button class="heal-btn" id="heal-btn">❤️‍🩹 รักษา (ใช้ 20 พลังเวท)</button>
            <button class="special-btn" id="special-btn">🔥 โจมตีพิเศษ (ใช้ 30 พลังเวท)</button>
            <button class="defend-btn" id="defend-btn">🛡️ ตั้งรับ</button>
            <button class="restart-btn" id="restart-btn">🔄 เริ่มเกมใหม่</button>
        </div>
        
        <div class="game-status" id="game-status"></div>
        
        <div class="log">
            <h3>บันทึกการต่อสู้</h3>
            <div id="battle-log">
                <div class="log-message system-log">การต่อสู้เริ่มขึ้น! ฮีโร่พบกับมอนสเตอร์!</div>
            </div>
        </div>
    </div>

    <script>
        // ตัวแปรเกม
        let player = {
            health: 100,
            maxHealth: 100,
            attack: 15,
            defense: 10,
            mana: 50,
            maxMana: 50,
            isDefending: false
        };
        
        let enemy = {
            health: 120,
            maxHealth: 120,
            attack: 12,
            defense: 8,
            mana: 30,
            maxMana: 30,
            isDefending: false
        };
        
        let gameOver = false;
        let battleLog = document.getElementById('battle-log');
        
        // อัพเดต UI
        function updateUI() {
            // อัพเดตข้อมูลผู้เล่น
            document.getElementById('player-health').textContent = player.health;
            document.getElementById('player-max-health').textContent = player.maxHealth;
            document.getElementById('player-health-display').textContent = player.health;
            document.getElementById('player-attack').textContent = player.attack;
            document.getElementById('player-defense').textContent = player.defense;
            document.getElementById('player-mana').textContent = player.mana;
            document.getElementById('player-max-mana').textContent = player.maxMana;
            
            // อัพเดตแถบพลังชีวิตผู้เล่น
            let playerHealthPercent = (player.health / player.maxHealth) * 100;
            document.getElementById('player-health-bar').style.width = `${playerHealthPercent}%`;
            
            // อัพเดตข้อมูลศัตรู
            document.getElementById('enemy-health').textContent = enemy.health;
            document.getElementById('enemy-max-health').textContent = enemy.maxHealth;
            document.getElementById('enemy-health-display').textContent = enemy.health;
            document.getElementById('enemy-attack').textContent = enemy.attack;
            document.getElementById('enemy-defense').textContent = enemy.defense;
            document.getElementById('enemy-mana').textContent = enemy.mana;
            document.getElementById('enemy-max-mana').textContent = enemy.maxMana;
            
            // อัพเดตแถบพลังชีวิตศัตรู
            let enemyHealthPercent = (enemy.health / enemy.maxHealth) * 100;
            document.getElementById('enemy-health-bar').style.width = `${enemyHealthPercent}%`;
            
            // ตรวจสอบสถานะเกม
            if (player.health <= 0) {
                endGame(false);
            } else if (enemy.health <= 0) {
                endGame(true);
            }
            
            // อัพเดตสถานะปุ่ม
            document.getElementById('heal-btn').disabled = player.mana < 20;
            document.getElementById('special-btn').disabled = player.mana < 30;
        }
        
        // เพิ่มข้อความในบันทึกการต่อสู้
        function addLogMessage(message, type) {
            let logEntry = document.createElement('div');
            logEntry.className = `log-message ${type}-log`;
            logEntry.textContent = message;
            battleLog.appendChild(logEntry);
            battleLog.scrollTop = battleLog.scrollHeight;
        }
        
        // การโจมตีของผู้เล่น
        function playerAttack() {
            if (gameOver) return;
            
            let damage = player.attack;
            if (enemy.isDefending) {
                damage = Math.max(1, Math.floor(damage / 2));
                addLogMessage(`มอนสเตอร์ตั้งรับไว้ ลดความเสียหายลงครึ่งหนึ่ง!`, 'system');
                enemy.isDefending = false;
            }
            
            enemy.health -= damage;
            addLogMessage(`ฮีโร่โจมตีมอนสเตอร์และทำให้เสียหาย ${damage} หน่วย!`, 'player');
            
            // อัพเดต UI
            updateUI();
            
            // ถ้าเกมยังไม่จบให้ศัตรูตอบโต้
            if (enemy.health > 0 && !gameOver) {
                setTimeout(enemyTurn, 1000);
            }
        }
        
        // การรักษาของผู้เล่น
        function playerHeal() {
            if (gameOver || player.mana < 20) return;
            
            let healAmount = 25;
            player.health = Math.min(player.maxHealth, player.health + healAmount);
            player.mana -= 20;
            
            addLogMessage(`ฮีโร่ใช้เวทมนตร์รักษาตัวเองได้ ${healAmount} หน่วยชีวิต!`, 'player');
            
            // อัพเดต UI
            updateUI();
            
            // ถ้าเกมยังไม่จบให้ศัตรูตอบโต้
            if (!gameOver) {
                setTimeout(enemyTurn, 1000);
            }
        }
        
        // การโจมตีพิเศษของผู้เล่น
        function playerSpecialAttack() {
            if (gameOver || player.mana < 30) return;
            
            let damage = player.attack * 2;
            if (enemy.isDefending) {
                damage = Math.max(1, Math.floor(damage / 2));
                addLogMessage(`มอนสเตอร์ตั้งรับไว้ ลดความเสียหายลงครึ่งหนึ่ง!`, 'system');
                enemy.isDefending = false;
            }
            
            enemy.health -= damage;
            player.mana -= 30;
            
            addLogMessage(`ฮีโร่ใช้โจมตีพิเศษและทำให้มอนสเตอร์เสียหาย ${damage} หน่วย!`, 'player');
            
            // อัพเดต UI
            updateUI();
            
            // ถ้าเกมยังไม่จบให้ศัตรูตอบโต้
            if (enemy.health > 0 && !gameOver) {
                setTimeout(enemyTurn, 1000);
            }
        }
        
        // การตั้งรับของผู้เล่น
        function playerDefend() {
            if (gameOver) return;
            
            player.isDefending = true;
            addLogMessage(`ฮีโร่ตั้งท่าป้องกัน การโจมตีครั้งต่อไปจะได้รับความเสียหายลดลงครึ่งหนึ่ง!`, 'player');
            
            // อัพเดต UI
            updateUI();
            
            // ถ้าเกมยังไม่จบให้ศัตรูตอบโต้
            if (!gameOver) {
                setTimeout(enemyTurn, 1000);
            }
        }
        
        // เทิร์นของศัตรู
        function enemyTurn() {
            if (gameOver) return;
            
            // รีเซ็ตการตั้งรับของผู้เล่น
            player.isDefending = false;
            
            // ศัตรูเลือกการกระทำแบบสุ่ม
            let actions = ['attack', 'defend'];
            
            // เพิ่มโอกาสใช้เวทมนตร์ถ้ามีพลังเวทพอ
            if (enemy.mana >= 15) {
                actions.push('special');
            }
            
            // เพิ่มโอกาสรักษาตัวเองถ้าพลังชีวิตต่ำกว่า 50%
            if (enemy.health < enemy.maxHealth * 0.5 && enemy.mana >= 10) {
                actions.push('heal');
            }
            
            let action = actions[Math.floor(Math.random() * actions.length)];
            
            switch(action) {
                case 'attack':
                    let damage = enemy.attack;
                    if (player.isDefending) {
                        damage = Math.max(1, Math.floor(damage / 2));
                        addLogMessage(`ฮีโร่ตั้งรับไว้ ลดความเสียหายลงครึ่งหนึ่ง!`, 'system');
                    }
                    
                    player.health -= damage;
                    addLogMessage(`มอนสเตอร์โจมตีฮีโร่และทำให้เสียหาย ${damage} หน่วย!`, 'enemy');
                    break;
                    
                case 'defend':
                    enemy.isDefending = true;
                    addLogMessage(`มอนสเตอร์ตั้งท่าป้องกัน!`, 'enemy');
                    break;
                    
                case 'heal':
                    let healAmount = 20;
                    enemy.health = Math.min(enemy.maxHealth, enemy.health + healAmount);
                    enemy.mana -= 10;
                    addLogMessage(`มอนสเตอร์ใช้เวทมนตร์รักษาตัวเองได้ ${healAmount} หน่วยชีวิต!`, 'enemy');
                    break;
                    
                case 'special':
                    let specialDamage = enemy.attack * 1.5;
                    if (player.isDefending) {
                        specialDamage = Math.max(1, Math.floor(specialDamage / 2));
                        addLogMessage(`ฮีโร่ตั้งรับไว้ ลดความเสียหายลงครึ่งหนึ่ง!`, 'system');
                    }
                    
                    player.health -= specialDamage;
                    enemy.mana -= 15;
                    addLogMessage(`มอนสเตอร์ใช้โจมตีพิเศษและทำให้ฮีโร่เสียหาย ${specialDamage} หน่วย!`, 'enemy');
                    break;
            }
            
            // ฟื้นฟูพลังเวทเล็กน้อยในแต่ละเทิร์น
            player.mana = Math.min(player.maxMana, player.mana + 5);
            enemy.mana = Math.min(enemy.maxMana, enemy.mana + 5);
            
            // อัพเดต UI
            updateUI();
        }
        
        // จบเกม
        function endGame(playerWon) {
            gameOver = true;
            let gameStatus = document.getElementById('game-status');
            
            if (playerWon) {
                gameStatus.textContent = "🎉 ชนะ! คุณกำจัดมอนสเตอร์ได้! 🎉";
                gameStatus.className = "game-status win";
                addLogMessage("คุณชนะการต่อสู้!", 'system');
            } else {
                gameStatus.textContent = "💀 แพ้! มอนสเตอร์กำจัดคุณได้! 💀";
                gameStatus.className = "game-status lose";
                addLogMessage("คุณแพ้การต่อสู้!", 'system');
            }
            
            // ปิดใช้งานปุ่มการกระทำ
            document.querySelectorAll('.controls button:not(#restart-btn)').forEach(btn => {
                btn.disabled = true;
            });
        }
        
        // เริ่มเกมใหม่
        function restartGame() {
            // รีเซ็ตข้อมูลผู้เล่น
            player = {
                health: 100,
                maxHealth: 100,
                attack: 15,
                defense: 10,
                mana: 50,
                maxMana: 50,
                isDefending: false
            };
            
            // รีเซ็ตข้อมูลศัตรู
            enemy = {
                health: 120,
                maxHealth: 120,
                attack: 12,
                defense: 8,
                mana: 30,
                maxMana: 30,
                isDefending: false
            };
            
            gameOver = false;
            
            // ล้างบันทึกการต่อสู้
            battleLog.innerHTML = '<div class="log-message system-log">การต่อสู้เริ่มขึ้น! ฮีโร่พบกับมอนสเตอร์!</div>';
            
            // ซ่อนสถานะเกม
            document.getElementById('game-status').className = "game-status";
            
            // เปิดใช้งานปุ่มการกระทำ
            document.querySelectorAll('.controls button').forEach(btn => {
                btn.disabled = false;
            });
            
            // อัพเดต UI
            updateUI();
        }
        
        // กำหนด event listeners
        document.getElementById('attack-btn').addEventListener('click', playerAttack);
        document.getElementById('heal-btn').addEventListener('click', playerHeal);
        document.getElementById('special-btn').addEventListener('click', playerSpecialAttack);
        document.getElementById('defend-btn').addEventListener('click', playerDefend);
        document.getElementById('restart-btn').addEventListener('click', restartGame);
        
        // อัพเดต UI เริ่มต้น
        updateUI();
    </script>
</body>
</html>
stdout
#include <stdio.h>

int main(void)
{
int i, j;
long dec;  /* ให้รับค่าอินพุทแบบ Long Integer - เลขจำนวนเต็มแบบยาว */
int bit[32];  /* จองพื้นที่ในการเก็บข้อมูลเลขฐาน 2 ลงใน Array */

    clrscr();  /* เคลียร์หน้าจอ */
    printf("Decimal Number : ");  /* แจ้งผู้ใช้เพื่อเตรียมป้อนค่าเลขฐาน 10 */
    scanf("%ld", &dec);  /* ต้องใช้ ld เพราะ Input มันเป็นแบบ Long Integer */
    i = 0;  /* กำหนดค่าเริ่มต้นของ Array */
    /* ทำตามที่ได้ออกแบบโปรแกรมเอาไว้ ... ยังไงยังงั้นเลย 55555+ */
    do {
        bit[i++] = dec % 2;  /* การหารเอาเศษ เพื่อให้เป็นคำตอบ */

        /* การหารทั่วไป แต่ตัวแปร dec ของภาษา C มันเป็น Integer หรือ เลขจำนวนเต็ม */
        /* ดังนั้นมันจึงตัดเศษ (หรือทศนิยม) ทิ้งไปโดยอัตโนมัติ */
        dec = dec / 2;

    } while (dec > 0);  /* เงื่อนไขที่ทำจนกระทั่ง dec = 0 ก็ออกจากวังวนเงื่อนไข */

    /* การแสดงผลของการแปลงเลขฐาน 10 เป็นเลขฐาน 2*/
    /* j = i - 1 และให้ j ลดค่าลงทีละ 1 ... ก็คืออ่านข้อมูลถอยหลังกลับเท่านั้นเองครับ */
    /* เพราะตัวแปรแบบ Array ในภาษา C มันเก็บข้อมูลจากซ้ายไปขวา */
    /* ทำให้ LSB มันไปอยู่ทางซ้าย ส่วน MSB มันไปอยู่ทางขวา */
    for(j = i - 1; j >= 0; j--)
        printf("%d", bit[j]);

printf("\n");
return 0;

}