{"id":25749,"date":"2024-12-21T16:08:34","date_gmt":"2024-12-21T07:08:34","guid":{"rendered":"http:\/\/www.tyosuke20xx.com\/blog\/?p=25749"},"modified":"2024-12-21T16:10:06","modified_gmt":"2024-12-21T07:10:06","slug":"javascript-rpg","status":"publish","type":"post","link":"http:\/\/www.tyosuke20xx.com\/blog\/?p=25749","title":{"rendered":"Javascript RPG"},"content":{"rendered":"<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n\n<\/pre><\/div>\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html>\n&lt;html lang=\"en\">\n&lt;head>\n  &lt;meta charset=\"UTF-8\">\n  &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  &lt;title>Epic RPG&lt;\/title>\n  &lt;style>\n    body {\n      font-family: Arial, sans-serif;\n      margin: 20px;\n    }\n    #game-log {\n      background: #f4f4f4;\n      padding: 10px;\n      margin-bottom: 20px;\n      height: 200px;\n      overflow-y: auto;\n      border: 1px solid #ddd;\n    }\n    button {\n      margin: 5px;\n      padding: 10px;\n    }\n    #player-stats {\n      margin-bottom: 20px;\n    }\n  &lt;\/style>\n&lt;\/head>\n&lt;body>\n  &lt;h1>Epic RPG&lt;\/h1>\n  &lt;div id=\"player-stats\">\n    &lt;p>&lt;strong>Name:&lt;\/strong> &lt;span id=\"player-name\">Hero&lt;\/span>&lt;\/p>\n    &lt;p>&lt;strong>HP:&lt;\/strong> &lt;span id=\"player-hp\">100&lt;\/span>\/&lt;span id=\"player-max-hp\">100&lt;\/span>&lt;\/p>\n    &lt;p>&lt;strong>MP:&lt;\/strong> &lt;span id=\"player-mp\">50&lt;\/span>\/&lt;span id=\"player-max-mp\">50&lt;\/span>&lt;\/p>\n    &lt;p>&lt;strong>Level:&lt;\/strong> &lt;span id=\"player-level\">1&lt;\/span>&lt;\/p>\n    &lt;p>&lt;strong>EXP:&lt;\/strong> &lt;span id=\"player-exp\">0&lt;\/span>\/100&lt;\/p>\n    &lt;p>&lt;strong>Gold:&lt;\/strong> &lt;span id=\"player-gold\">0&lt;\/span>&lt;\/p>\n    &lt;p>&lt;strong>Inventory:&lt;\/strong> &lt;span id=\"player-inventory\">Potion x1&lt;\/span>&lt;\/p>\n    &lt;p>&lt;strong>Skills:&lt;\/strong> &lt;span id=\"player-skills\">Fireball&lt;\/span>&lt;\/p>\n    &lt;p>&lt;strong>Equipped Weapon:&lt;\/strong> &lt;span id=\"player-weapon\">None&lt;\/span>&lt;\/p>\n    &lt;p>&lt;strong>Equipped Armor:&lt;\/strong> &lt;span id=\"player-armor\">None&lt;\/span>&lt;\/p>\n    &lt;p>&lt;strong>Current Quest:&lt;\/strong> &lt;span id=\"player-quest\">None&lt;\/span>&lt;\/p>\n    &lt;p>&lt;strong>Stage:&lt;\/strong> &lt;span id=\"current-stage\">1&lt;\/span>&lt;\/p>\n  &lt;\/div>\n  &lt;div id=\"game-log\">&lt;\/div>\n  &lt;button onclick=\"attack()\">Attack&lt;\/button>\n  &lt;button onclick=\"useSkill()\">Use Skill&lt;\/button>\n  &lt;button onclick=\"heal()\">Heal&lt;\/button>\n  &lt;button onclick=\"openShop()\">Shop&lt;\/button>\n  &lt;button onclick=\"acceptQuest()\">Quest&lt;\/button>\n  &lt;button onclick=\"craftItem()\">Craft Item&lt;\/button>\n  &lt;button onclick=\"nextStage()\">Next Stage&lt;\/button>\n  &lt;button onclick=\"restart()\">Restart&lt;\/button>\n  &lt;script>\n    \/\/ \u30d7\u30ec\u30a4\u30e4\u30fc\u3068\u6575\u306e\u30c7\u30fc\u30bf\n    let player = {\n      name: \"Hero\",\n      hp: 100,\n      maxHp: 100,\n      mp: 50,\n      maxMp: 50,\n      attackPower: 10,\n      defense: 5,\n      exp: 0,\n      level: 1,\n      gold: 50,\n      inventory: &#91;\"Potion\", \"Iron Ore\"],\n      skills: &#91;\"Fireball\"],\n      weapon: null,\n      armor: null,\n      quest: null,\n      stage: 1,\n    };\n\n    let enemy = {\n      name: \"Goblin\",\n      hp: 50,\n      maxHp: 50,\n      attackPower: 8,\n      defense: 3,\n    };\n\n    const quests = &#91;\n      { name: \"Defeat 3 Goblins\", progress: 0, goal: 3, reward: 100 },\n      { name: \"Collect 2 Potions\", progress: 0, goal: 2, reward: 50 },\n    ];\n\n    const stages = &#91;\n      { stage: 1, description: \"The Forest of Beginnings\", enemies: &#91;\"Goblin\", \"Orc\"] },\n      { stage: 2, description: \"The Cursed Mines\", enemies: &#91;\"Dark Bat\", \"Skeleton\"] },\n      { stage: 3, description: \"The Dragon's Lair\", enemies: &#91;\"Fire Dragon\"] },\n    ];\n\n    \/\/ \u30b2\u30fc\u30e0\u30ed\u30b0\u8868\u793a\u95a2\u6570\n    function log(message) {\n      const logDiv = document.getElementById(\"game-log\");\n      logDiv.innerHTML += `&lt;p>${message}&lt;\/p>`;\n      logDiv.scrollTop = logDiv.scrollHeight;\n    }\n\n    \/\/ \u30d7\u30ec\u30a4\u30e4\u30fc\u306e\u653b\u6483\n    function attack() {\n      const damage = Math.max(Math.floor(Math.random() * player.attackPower) - enemy.defense, 1);\n      enemy.hp -= damage;\n      log(`You attack the ${enemy.name} for ${damage} damage!`);\n      if (enemy.hp &lt;= 0) {\n        log(`You defeated the ${enemy.name}!`);\n        gainExp(20);\n        gainGold(Math.floor(Math.random() * 20) + 10);\n        updateQuestProgress(\"Defeat 3 Goblins\");\n        spawnNewEnemy();\n        return;\n      }\n      enemyAttack();\n    }\n\n    \/\/ \u6575\u306e\u653b\u6483\n    function enemyAttack() {\n      const damage = Math.max(Math.floor(Math.random() * enemy.attackPower) - player.defense, 0);\n      player.hp -= damage;\n      log(`The ${enemy.name} attacks you for ${damage} damage! Current HP: ${player.hp}`);\n      if (player.hp &lt;= 0) {\n        log(\"You have been defeated...\");\n        log(\"Press 'Restart' to try again.\");\n      }\n      updateStats();\n    }\n\n    \/\/ \u30b9\u30c6\u30fc\u30b8\u79fb\u52d5\n    function nextStage() {\n      player.stage++;\n      const currentStage = stages.find(stage => stage.stage === player.stage);\n      if (!currentStage) {\n        log(\"Congratulations! You have completed the game!\");\n        return;\n      }\n      log(`You enter the ${currentStage.description}.`);\n      spawnNewEnemy();\n      updateStats();\n    }\n\n    \/\/ \u65b0\u3057\u3044\u6575\u3092\u751f\u6210\n    function spawnNewEnemy() {\n      const currentStage = stages.find(stage => stage.stage === player.stage);\n      const randomEnemyName = currentStage.enemies&#91;Math.floor(Math.random() * currentStage.enemies.length)];\n      enemy = {\n        name: randomEnemyName,\n        hp: Math.floor(Math.random() * 30 + 50),\n        maxHp: Math.floor(Math.random() * 30 + 50),\n        attackPower: Math.floor(Math.random() * 5 + 10),\n        defense: Math.floor(Math.random() * 5),\n      };\n      log(`A wild ${enemy.name} appears with ${enemy.hp} HP!`);\n    }\n\n    \/\/ \u30a2\u30a4\u30c6\u30e0\u30af\u30e9\u30d5\u30c8\n    function craftItem() {\n      if (player.inventory.includes(\"Iron Ore\")) {\n        player.inventory.splice(player.inventory.indexOf(\"Iron Ore\"), 1);\n        player.weapon = \"Iron Sword\";\n        player.attackPower += 5;\n        log(\"You crafted an Iron Sword! Attack power increased by 5.\");\n      } else {\n        log(\"You don't have the required materials to craft an item.\");\n      }\n      updateStats();\n    }\n\n    \/\/ \u30b9\u30c6\u30fc\u30bf\u30b9\u66f4\u65b0\n    function updateStats() {\n      document.getElementById(\"player-name\").innerText = player.name;\n      document.getElementById(\"player-hp\").innerText = player.hp;\n      document.getElementById(\"player-max-hp\").innerText = player.maxHp;\n      document.getElementById(\"player-mp\").innerText = player.mp;\n      document.getElementById(\"player-max-mp\").innerText = player.maxMp;\n      document.getElementById(\"player-level\").innerText = player.level;\n      document.getElementById(\"player-exp\").innerText = player.exp;\n      document.getElementById(\"player-gold\").innerText = player.gold;\n      document.getElementById(\"player-inventory\").innerText = player.inventory.join(\", \") || \"Empty\";\n      document.getElementById(\"player-skills\").innerText = player.skills.join(\", \") || \"None\";\n      document.getElementById(\"player-weapon\").innerText = player.weapon || \"None\";\n      document.getElementById(\"player-armor\").innerText = player.armor || \"None\";\n      document.getElementById(\"player-quest\").innerText = player.quest ? player.quest.name : \"None\";\n      document.getElementById(\"current-stage\").innerText = player.stage;\n    }\n\n    \/\/ \u521d\u671f\u5316\n    log(\"Welcome to the RPG! A Goblin appears!\");\n    updateStats();\n    spawnNewEnemy();\n  &lt;\/script>\n&lt;\/body>\n&lt;\/html>\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[78],"tags":[41],"class_list":["post-25749","post","type-post","status-publish","format-standard","hentry","category-javascript","tag-javascript"],"aioseo_notices":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25749","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=25749"}],"version-history":[{"count":2,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25749\/revisions"}],"predecessor-version":[{"id":25751,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25749\/revisions\/25751"}],"wp:attachment":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=25749"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25749"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25749"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}