{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "1cf60fd9-1cff-4e0d-a37b-70e9dcc3a69c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "在开始游戏之前，请按照要求填写以下信息：\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "姓名 = (请使用字符串的格式)  \"Cat Tom\"\n",
      "年龄 = (请使用数字的格式)  20\n",
      "兴趣 = (请输入包含两个元素的元组)  (\"阅读\",\"睡觉\")\n",
      "技能及描述 = (请输入包含两个键值对的字典)  {\"技能1\":\"技能1的描述\",\"技能2\":\"技能2的描述\"}\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "欢迎来到数学冒险游戏！\n",
      "在每一波中，选择正确的选项来增强你的力量，打败敌人！\n",
      "\n",
      "--- 第 1 波 ---\n",
      "你的力量: 0\n",
      "你的HP: 1\n",
      "敌人数量: 2\n",
      "选项 1: 4 + (5 // 5)\n",
      "选项 2: 7 + (9 // 2)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 15 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 2 波 ---\n",
      "你的力量: 9\n",
      "你的HP: 1\n",
      "敌人数量: 5\n",
      "选项 1: 5 - (3 * 2)\n",
      "选项 2: 26 * (9 - 1)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 14.5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 3 波 ---\n",
      "你的力量: 212\n",
      "你的HP: 1\n",
      "敌人数量: 2\n",
      "选项 1: 17 - (2 * 1)\n",
      "选项 2: (27 * 1) // 4\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 14.0 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 4 波 ---\n",
      "你的力量: 216\n",
      "你的HP: 1\n",
      "敌人数量: 6\n",
      "选项 1: 28 + (9 // 3)\n",
      "选项 2: 16 * (5 - 2)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 13.5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 5 波 ---\n",
      "你的力量: 258\n",
      "你的HP: 1\n",
      "敌人数量: 9\n",
      "选项 1: 21 * (7 - 2)\n",
      "选项 2: 3 * (3 - 3)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 13.0 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "特别奖励挑战！\n",
      "在10秒内按照要求输入信息，成功即可获得1点HP！\n",
      "请输入一个包含两个元素的元组\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "请输入： (\"阅读\",\"睡觉\")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "恭喜！回答正确，获得1点HP！\n",
      "\n",
      "--- 第 6 波 ---\n",
      "你的力量: 354\n",
      "你的HP: 2\n",
      "敌人数量: 8\n",
      "选项 1: 8 + (6 // 1)\n",
      "选项 2: 6 * (7 - 4)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 12.5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 7 波 ---\n",
      "你的力量: 364\n",
      "你的HP: 2\n",
      "敌人数量: 16\n",
      "选项 1: 7 + (6 // 2)\n",
      "选项 2: 13 + (7 // 2)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 12.0 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 8 波 ---\n",
      "你的力量: 358\n",
      "你的HP: 2\n",
      "敌人数量: 16\n",
      "选项 1: (10 * 9) // 3\n",
      "选项 2: 6 + (4 // 4)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 11.5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 9 波 ---\n",
      "你的力量: 372\n",
      "你的HP: 2\n",
      "敌人数量: 22\n",
      "选项 1: 28 * (10 - 3)\n",
      "选项 2: 7 + (3 // 3)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 11.0 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 10 波 ---\n",
      "你的力量: 546\n",
      "你的HP: 2\n",
      "敌人数量: 18\n",
      "选项 1: 15 + (7 // 5)\n",
      "选项 2: (26 * 6) // 3\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 10.5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 11 波 ---\n",
      "你的力量: 580\n",
      "你的HP: 2\n",
      "敌人数量: 19\n",
      "选项 1: 24 + (1 // 2)\n",
      "选项 2: (11 * 7) // 3\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 10.0 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 12 波 ---\n",
      "你的力量: 586\n",
      "你的HP: 2\n",
      "敌人数量: 24\n",
      "选项 1: (5 * 4) // 1\n",
      "选项 2: 21 + (3 // 5)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 9.5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 13 波 ---\n",
      "你的力量: 582\n",
      "你的HP: 2\n",
      "敌人数量: 24\n",
      "选项 1: 3 + (1 // 1)\n",
      "选项 2: (1 * 1) // 4\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 9.0 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 14 波 ---\n",
      "你的力量: 562\n",
      "你的HP: 2\n",
      "敌人数量: 32\n",
      "选项 1: 14 + (8 // 3)\n",
      "选项 2: 10 - (6 * 4)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 8.5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 15 波 ---\n",
      "你的力量: 546\n",
      "你的HP: 2\n",
      "敌人数量: 34\n",
      "选项 1: (16 * 9) // 3\n",
      "选项 2: 16 - (10 * 1)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 8.0 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 16 波 ---\n",
      "你的力量: 560\n",
      "你的HP: 2\n",
      "敌人数量: 36\n",
      "选项 1: 25 * (9 - 1)\n",
      "选项 2: (9 * 1) // 5\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 7.5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 17 波 ---\n",
      "你的力量: 724\n",
      "你的HP: 2\n",
      "敌人数量: 33\n",
      "选项 1: 2 - (3 * 4)\n",
      "选项 2: 12 - (7 * 4)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 7.0 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "特别奖励挑战！\n",
      "在10秒内按照要求输入信息，成功即可获得1点HP！\n",
      "请输入一个包含两个元素的列表\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "请输入： {\"技能1\":\"技能1的描述\",\"技能2\":\"技能2的描述\"}\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "格式错误，未获得奖励。\n",
      "\n",
      "--- 第 18 波 ---\n",
      "你的力量: 675\n",
      "你的HP: 2\n",
      "敌人数量: 34\n",
      "选项 1: 26 - (6 * 5)\n",
      "选项 2: 3 + (9 // 4)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 6.5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 19 波 ---\n",
      "你的力量: 637\n",
      "你的HP: 2\n",
      "敌人数量: 42\n",
      "选项 1: 13 - (9 * 4)\n",
      "选项 2: 8 + (2 // 5)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 6.0 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 20 波 ---\n",
      "你的力量: 603\n",
      "你的HP: 2\n",
      "敌人数量: 36\n",
      "选项 1: 18 * (4 - 4)\n",
      "选项 2: 24 + (9 // 3)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5.5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "特别奖励挑战！\n",
      "在10秒内按照要求输入信息，成功即可获得1点HP！\n",
      "请输入一个包含两个元素的元组\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "请输入： (\"阅读\",\"睡觉\")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "恭喜！回答正确，获得1点HP！\n",
      "\n",
      "--- 第 21 波 ---\n",
      "你的力量: 594\n",
      "你的HP: 3\n",
      "敌人数量: 39\n",
      "选项 1: 14 - (8 * 1)\n",
      "选项 2: 25 - (7 * 1)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 22 波 ---\n",
      "你的力量: 561\n",
      "你的HP: 3\n",
      "敌人数量: 43\n",
      "选项 1: 22 + (7 // 1)\n",
      "选项 2: 3 * (4 - 5)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "特别奖励挑战！\n",
      "在10秒内按照要求输入信息，成功即可获得1点HP！\n",
      "请输入一个非数字的字符串：\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "请输入： \"a\"\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "恭喜！回答正确，获得1点HP！\n",
      "\n",
      "--- 第 23 波 ---\n",
      "你的力量: 547\n",
      "你的HP: 4\n",
      "敌人数量: 48\n",
      "选项 1: (4 * 7) // 1\n",
      "选项 2: (28 * 4) // 3\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "特别奖励挑战！\n",
      "在10秒内按照要求输入信息，成功即可获得1点HP！\n",
      "请输入一个包含两个元素的列表\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "请输入： [a,b]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "格式错误，未获得奖励。\n",
      "\n",
      "--- 第 24 波 ---\n",
      "你的力量: 536\n",
      "你的HP: 4\n",
      "敌人数量: 51\n",
      "选项 1: 29 * (8 - 4)\n",
      "选项 2: 10 * (9 - 4)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "特别奖励挑战！\n",
      "在10秒内按照要求输入信息，成功即可获得1点HP！\n",
      "请输入一个包含两个键值对的字典\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "请输入： {\"技能1\":\"技能1的描述\",\"技能2\":\"技能2的描述\"}\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "恭喜！回答正确，获得1点HP！\n",
      "\n",
      "--- 第 25 波 ---\n",
      "你的力量: 601\n",
      "你的HP: 5\n",
      "敌人数量: 54\n",
      "选项 1: (5 * 10) // 2\n",
      "选项 2: 1 * (1 - 2)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 26 波 ---\n",
      "你的力量: 572\n",
      "你的HP: 5\n",
      "敌人数量: 54\n",
      "选项 1: 11 - (5 * 5)\n",
      "选项 2: 28 + (3 // 3)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 27 波 ---\n",
      "你的力量: 547\n",
      "你的HP: 5\n",
      "敌人数量: 53\n",
      "选项 1: 15 * (1 - 5)\n",
      "选项 2: 3 * (5 - 2)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 28 波 ---\n",
      "你的力量: 503\n",
      "你的HP: 5\n",
      "敌人数量: 52\n",
      "选项 1: 29 - (8 * 3)\n",
      "选项 2: (19 * 3) // 4\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 29 波 ---\n",
      "你的力量: 465\n",
      "你的HP: 5\n",
      "敌人数量: 54\n",
      "选项 1: (7 * 6) // 1\n",
      "选项 2: 1 * (2 - 3)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "特别奖励挑战！\n",
      "在10秒内按照要求输入信息，成功即可获得1点HP！\n",
      "请输入一个包含两个元素的列表\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "请输入： [a, b]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "格式错误，未获得奖励。\n",
      "\n",
      "--- 第 30 波 ---\n",
      "你的力量: 453\n",
      "你的HP: 5\n",
      "敌人数量: 59\n",
      "选项 1: 19 - (5 * 5)\n",
      "选项 2: 16 - (9 * 1)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 31 波 ---\n",
      "你的力量: 401\n",
      "你的HP: 5\n",
      "敌人数量: 66\n",
      "选项 1: (3 * 10) // 5\n",
      "选项 2: 18 - (2 * 3)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 32 波 ---\n",
      "你的力量: 341\n",
      "你的HP: 5\n",
      "敌人数量: 60\n",
      "选项 1: 25 + (7 // 3)\n",
      "选项 2: 2 * (8 - 5)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 33 波 ---\n",
      "你的力量: 308\n",
      "你的HP: 5\n",
      "敌人数量: 69\n",
      "选项 1: 24 * (2 - 3)\n",
      "选项 2: 28 + (6 // 1)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 34 波 ---\n",
      "你的力量: 273\n",
      "你的HP: 5\n",
      "敌人数量: 66\n",
      "选项 1: 15 - (10 * 3)\n",
      "选项 2: 28 * (2 - 3)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 35 波 ---\n",
      "你的力量: 192\n",
      "你的HP: 5\n",
      "敌人数量: 72\n",
      "选项 1: 8 * (5 - 3)\n",
      "选项 2: (1 * 3) // 5\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 36 波 ---\n",
      "你的力量: 136\n",
      "你的HP: 5\n",
      "敌人数量: 71\n",
      "选项 1: 21 - (3 * 3)\n",
      "选项 2: (9 * 8) // 1\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 37 波 ---\n",
      "你的力量: 137\n",
      "你的HP: 5\n",
      "敌人数量: 73\n",
      "选项 1: (21 * 4) // 1\n",
      "选项 2: 9 - (5 * 3)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 38 波 ---\n",
      "你的力量: 148\n",
      "你的HP: 5\n",
      "敌人数量: 72\n",
      "选项 1: 11 + (4 // 4)\n",
      "选项 2: 22 * (10 - 5)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 39 波 ---\n",
      "你的力量: 88\n",
      "你的HP: 5\n",
      "敌人数量: 76\n",
      "选项 1: (21 * 4) // 3\n",
      "选项 2: 5 - (2 * 1)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 40 波 ---\n",
      "你的力量: 40\n",
      "你的HP: 5\n",
      "敌人数量: 80\n",
      "选项 1: 2 - (10 * 2)\n",
      "选项 2: 14 * (7 - 1)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "特别奖励挑战！\n",
      "在10秒内按照要求输入信息，成功即可获得1点HP！\n",
      "请输入一个非数字的字符串：\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "请输入： \"a\"\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "恭喜！回答正确，获得1点HP！\n",
      "\n",
      "--- 第 41 波 ---\n",
      "你的力量: 44\n",
      "你的HP: 6\n",
      "敌人数量: 86\n",
      "选项 1: 4 * (7 - 4)\n",
      "选项 2: 28 * (8 - 1)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 42 波 ---\n",
      "你的力量: 154\n",
      "你的HP: 6\n",
      "敌人数量: 83\n",
      "选项 1: (30 * 8) // 1\n",
      "选项 2: 14 + (3 // 5)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 43 波 ---\n",
      "你的力量: 311\n",
      "你的HP: 6\n",
      "敌人数量: 88\n",
      "选项 1: 29 - (2 * 3)\n",
      "选项 2: 8 + (10 // 3)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 44 波 ---\n",
      "你的力量: 234\n",
      "你的HP: 6\n",
      "敌人数量: 88\n",
      "选项 1: (4 * 3) // 3\n",
      "选项 2: 22 + (6 // 4)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 45 波 ---\n",
      "你的力量: 150\n",
      "你的HP: 6\n",
      "敌人数量: 93\n",
      "选项 1: (16 * 3) // 3\n",
      "选项 2: 18 + (2 // 1)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "特别奖励挑战！\n",
      "在10秒内按照要求输入信息，成功即可获得1点HP！\n",
      "请输入一个包含两个元素的元组\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "请输入： (\"阅读\",\"睡觉\")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "恭喜！回答正确，获得1点HP！\n",
      "\n",
      "--- 第 46 波 ---\n",
      "你的力量: 73\n",
      "你的HP: 7\n",
      "敌人数量: 88\n",
      "选项 1: (15 * 4) // 3\n",
      "选项 2: 21 * (3 - 3)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 47 波 ---\n",
      "你的力量: 5\n",
      "你的HP: 7\n",
      "敌人数量: 90\n",
      "选项 1: 3 * (3 - 1)\n",
      "选项 2: 13 + (1 // 1)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你的力量不足以击败敌人。你失去了1点HP。\n",
      "\n",
      "--- 第 47 波 ---\n",
      "你的力量: 11\n",
      "你的HP: 6\n",
      "敌人数量: 90\n",
      "选项 1: 23 - (1 * 1)\n",
      "选项 2: (11 * 8) // 3\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你的力量不足以击败敌人。你失去了1点HP。\n",
      "\n",
      "特别奖励挑战！\n",
      "在10秒内按照要求输入信息，成功即可获得1点HP！\n",
      "请输入一个包含两个元素的元组\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "请输入： (\"阅读\",\"睡觉\")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "恭喜！回答正确，获得1点HP！\n",
      "\n",
      "--- 第 47 波 ---\n",
      "你的力量: 33\n",
      "你的HP: 6\n",
      "敌人数量: 95\n",
      "选项 1: 17 * (7 - 3)\n",
      "选项 2: 15 * (2 - 2)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 48 波 ---\n",
      "你的力量: 6\n",
      "你的HP: 6\n",
      "敌人数量: 95\n",
      "选项 1: 28 - (1 * 4)\n",
      "选项 2: (28 * 4) // 2\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你的力量不足以击败敌人。你失去了1点HP。\n",
      "\n",
      "--- 第 48 波 ---\n",
      "你的力量: 62\n",
      "你的HP: 5\n",
      "敌人数量: 95\n",
      "选项 1: 23 * (3 - 2)\n",
      "选项 2: (30 * 2) // 2\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你的力量不足以击败敌人。你失去了1点HP。\n",
      "\n",
      "--- 第 48 波 ---\n",
      "你的力量: 85\n",
      "你的HP: 4\n",
      "敌人数量: 96\n",
      "选项 1: 12 * (4 - 2)\n",
      "选项 2: 12 * (1 - 5)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 49 波 ---\n",
      "你的力量: 13\n",
      "你的HP: 4\n",
      "敌人数量: 97\n",
      "选项 1: (21 * 10) // 3\n",
      "选项 2: 25 * (4 - 4)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你的力量不足以击败敌人。你失去了1点HP。\n",
      "\n",
      "--- 第 49 波 ---\n",
      "你的力量: 83\n",
      "你的HP: 3\n",
      "敌人数量: 99\n",
      "选项 1: 5 - (6 * 2)\n",
      "选项 2: 3 + (4 // 2)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你的力量不足以击败敌人。你失去了1点HP。\n",
      "\n",
      "特别奖励挑战！\n",
      "在10秒内按照要求输入信息，成功即可获得1点HP！\n",
      "请输入一个包含两个键值对的字典\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "请输入： {\"技能1\":\"技能1的描述\",\"技能2\":\"技能2的描述\"}\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "恭喜！回答正确，获得1点HP！\n",
      "\n",
      "--- 第 49 波 ---\n",
      "你的力量: 88\n",
      "你的HP: 3\n",
      "敌人数量: 102\n",
      "选项 1: 12 * (5 - 4)\n",
      "选项 2: 24 - (5 * 3)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你的力量不足以击败敌人。你失去了1点HP。\n",
      "\n",
      "--- 第 49 波 ---\n",
      "你的力量: 100\n",
      "你的HP: 2\n",
      "敌人数量: 94\n",
      "选项 1: 17 * (10 - 1)\n",
      "选项 2: (1 * 7) // 3\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 50 波 ---\n",
      "你的力量: 159\n",
      "你的HP: 2\n",
      "敌人数量: 101\n",
      "选项 1: (16 * 7) // 1\n",
      "选项 2: 14 * (4 - 3)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 51 波 ---\n",
      "你的力量: 170\n",
      "你的HP: 2\n",
      "敌人数量: 106\n",
      "选项 1: 5 + (7 // 5)\n",
      "选项 2: 23 * (6 - 5)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 52 波 ---\n",
      "你的力量: 70\n",
      "你的HP: 2\n",
      "敌人数量: 105\n",
      "选项 1: 8 + (4 // 4)\n",
      "选项 2: 22 - (8 * 5)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你的力量不足以击败敌人。你失去了1点HP。\n",
      "\n",
      "--- 第 52 波 ---\n",
      "你的力量: 52\n",
      "你的HP: 1\n",
      "敌人数量: 108\n",
      "选项 1: 16 * (10 - 1)\n",
      "选项 2: 14 * (10 - 4)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "特别奖励挑战！\n",
      "在10秒内按照要求输入信息，成功即可获得1点HP！\n",
      "请输入一个包含两个元素的元组\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "请输入： (\"阅读\",\"睡觉\")\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "恭喜！回答正确，获得1点HP！\n",
      "\n",
      "--- 第 53 波 ---\n",
      "你的力量: 88\n",
      "你的HP: 2\n",
      "敌人数量: 105\n",
      "选项 1: 23 * (4 - 5)\n",
      "选项 2: 13 + (9 // 4)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你的力量不足以击败敌人。你失去了1点HP。\n",
      "\n",
      "特别奖励挑战！\n",
      "在10秒内按照要求输入信息，成功即可获得1点HP！\n",
      "请输入一个非数字的字符串：\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "请输入： {\"技能1\":\"技能1的描述\",\"技能2\":\"技能2的描述\"}\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "恭喜！回答正确，获得1点HP！\n",
      "\n",
      "--- 第 53 波 ---\n",
      "你的力量: 103\n",
      "你的HP: 2\n",
      "敌人数量: 110\n",
      "选项 1: 5 - (1 * 1)\n",
      "选项 2: (20 * 6) // 2\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 54 波 ---\n",
      "你的力量: 53\n",
      "你的HP: 2\n",
      "敌人数量: 104\n",
      "选项 1: (29 * 3) // 3\n",
      "选项 2: 10 * (10 - 3)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你的力量不足以击败敌人。你失去了1点HP。\n",
      "\n",
      "--- 第 54 波 ---\n",
      "你的力量: 82\n",
      "你的HP: 1\n",
      "敌人数量: 104\n",
      "选项 1: 13 * (6 - 3)\n",
      "选项 2: 3 * (2 - 1)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你成功击败了敌人！\n",
      "\n",
      "--- 第 55 波 ---\n",
      "你的力量: 17\n",
      "你的HP: 1\n",
      "敌人数量: 111\n",
      "选项 1: (8 * 5) // 4\n",
      "选项 2: 3 + (9 // 5)\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "在 5 秒内选择 1 或 2:  1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你的力量不足以击败敌人。你失去了1点HP。\n",
      "你的HP降到了0。游戏结束。\n",
      "\n",
      "--- 游戏结束 ---\n",
      "正在生成玩家信息卡片...\n"
     ]
    },
    {
     "data": {
      "image/png": "[encoded data, 93604 characters]",
      "text/plain": [
       "<Figure size 1200x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import random\n",
    "import time\n",
    "import requests\n",
    "from io import BytesIO\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.patches import Rectangle\n",
    "from PIL import Image\n",
    "\n",
    "# 添加中文字体支持\n",
    "plt.rcParams['font.sans-serif'] = ['KaiTi']  # 使用楷体\n",
    "plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题\n",
    "\n",
    "def get_player_info():\n",
    "    print(\"在开始游戏之前，请按照要求填写以下信息：\")\n",
    "    \n",
    "    while True:\n",
    "        name = input('姓名 = (请使用字符串的格式) ')\n",
    "        if name.startswith('\"') and name.endswith('\"'):\n",
    "            name = name[1:-1]\n",
    "            break\n",
    "        else:\n",
    "            print('格式错误，请重新输入')\n",
    "    \n",
    "    while True:\n",
    "        try:\n",
    "            age_input = input('年龄 = (请使用数字的格式) ')\n",
    "            age = int(age_input)\n",
    "            if str(age) == age_input:\n",
    "                break\n",
    "            else:\n",
    "                print(\"格式错误，请重新输入\")\n",
    "        except ValueError:\n",
    "            print(\"格式错误，请重新输入\")\n",
    "    \n",
    "    while True:\n",
    "        interests_input = input('兴趣 = (请输入包含两个元素的元组) ')\n",
    "        try:\n",
    "            interests = eval(interests_input)\n",
    "            if isinstance(interests, tuple) and len(interests) == 2:\n",
    "                break\n",
    "            else:\n",
    "                print(\"格式错误，请重新输入\")\n",
    "        except:\n",
    "            print(\"格式错误，请重新输入\")\n",
    "    \n",
    "    while True:\n",
    "        skills_input = input('技能及描述 = (请输入包含两个键值对的字典) ')\n",
    "        try:\n",
    "            skills = eval(skills_input)\n",
    "            if isinstance(skills, dict) and len(skills) == 2:\n",
    "                break\n",
    "            else:\n",
    "                print(\"格式错误，请重新输入\")\n",
    "        except:\n",
    "            print(\"格式错误，请重新输入\")\n",
    "    \n",
    "    return {\n",
    "        \"name\": name,\n",
    "        \"age\": age,\n",
    "        \"interests\": interests,\n",
    "        \"skills\": skills\n",
    "    }\n",
    "\n",
    "def generate_options():\n",
    "    operations = ['+', '-', '*', '//']\n",
    "    op = random.choice(operations)\n",
    "    \n",
    "    a = random.randint(1, 30)\n",
    "    b = random.randint(1, 10)\n",
    "    c = random.randint(1, 5)\n",
    "    \n",
    "    if op == '+':\n",
    "        return f\"{a} + ({b} // {c})\", a + (b // c)\n",
    "    elif op == '-':\n",
    "        return f\"{a} - ({b} * {c})\", a - (b * c)\n",
    "    elif op == '*':\n",
    "        return f\"{a} * ({b} - {c})\", a * (b - c)\n",
    "    else:  # division\n",
    "        return f\"({a} * {b}) // {c}\", (a * b) // c\n",
    "\n",
    "def calculate_enemies(wave):\n",
    "    base_enemies = round(wave * 2)\n",
    "    variation = random.randint(-4, 4)\n",
    "    return max(1, base_enemies + variation)\n",
    "\n",
    "def bonus_challenge():\n",
    "    print(\"\\n特别奖励挑战！\")\n",
    "    print(\"在10秒内按照要求输入信息，成功即可获得1点HP！\")\n",
    "\n",
    "    challenge_type = random.choice(['number', 'string', 'list', 'dict', 'tuple'])\n",
    "    \n",
    "    if challenge_type == 'number':\n",
    "        print(\"请输入一个数字：\")\n",
    "    elif challenge_type == 'string':\n",
    "        print(\"请输入一个非数字的字符串：\")\n",
    "    elif challenge_type == 'list':\n",
    "        print(\"请输入一个包含两个元素的列表\")\n",
    "    elif challenge_type == 'dict':\n",
    "        print(\"请输入一个包含两个键值对的字典\")\n",
    "    else:  # tuple\n",
    "        print(\"请输入一个包含两个元素的元组\")\n",
    "\n",
    "    start_time = time.time()\n",
    "    user_input = input(\"请输入：\")\n",
    "    end_time = time.time()\n",
    "    \n",
    "    if end_time - start_time > 10:\n",
    "        print(\"时间到！未获得奖励。\")\n",
    "        return False\n",
    "    \n",
    "    try:\n",
    "        if challenge_type == 'number':\n",
    "            result = int(user_input)\n",
    "        elif challenge_type == 'string':\n",
    "            result = user_input\n",
    "            if not isinstance(result, str) or result.isdigit():\n",
    "                raise ValueError\n",
    "        else:\n",
    "            result = eval(user_input)\n",
    "        \n",
    "        if challenge_type == 'list' and not (isinstance(result, list) and len(result) == 2):\n",
    "            raise ValueError\n",
    "        elif challenge_type == 'dict' and not (isinstance(result, dict) and len(result) == 2):\n",
    "            raise ValueError\n",
    "        elif challenge_type == 'tuple' and not (isinstance(result, tuple) and len(result) == 2):\n",
    "            raise ValueError\n",
    "        \n",
    "        print(\"恭喜！回答正确，获得1点HP！\")\n",
    "        return True\n",
    "    except:\n",
    "        print(\"格式错误，未获得奖励。\")\n",
    "        return False\n",
    "\n",
    "def play_game(player_info):\n",
    "    player_strength = 0\n",
    "    wave = 1\n",
    "    time_limit = 15  # 初始时间限制（秒）\n",
    "    hp = 1  # 初始HP\n",
    "\n",
    "    print(\"\\n欢迎来到数学冒险游戏！\")\n",
    "    print(\"在每一波中，选择正确的选项来增强你的力量，打败敌人！\")\n",
    "\n",
    "    while hp > 0:\n",
    "        print(f\"\\n--- 第 {wave} 波 ---\")\n",
    "        print(f\"你的力量: {player_strength}\")\n",
    "        print(f\"你的HP: {hp}\")\n",
    "        \n",
    "        enemies = calculate_enemies(wave)\n",
    "        print(f\"敌人数量: {enemies}\")\n",
    "\n",
    "        option1, result1 = generate_options()\n",
    "        option2, result2 = generate_options()\n",
    "\n",
    "        print(f\"选项 1: {option1}\")\n",
    "        print(f\"选项 2: {option2}\")\n",
    "\n",
    "        start_time = time.time()\n",
    "        choice = input(f\"在 {time_limit} 秒内选择 1 或 2: \")\n",
    "        end_time = time.time()\n",
    "\n",
    "        if end_time - start_time > time_limit:\n",
    "            print(\"时间到！你失去了1点HP。\")\n",
    "            hp -= 1\n",
    "        elif choice == '1':\n",
    "            player_strength += result1\n",
    "        elif choice == '2':\n",
    "            player_strength += result2\n",
    "        else:\n",
    "            print(\"无效选择。你失去了1点HP。\")\n",
    "            hp -= 1\n",
    "\n",
    "        if player_strength >= enemies:\n",
    "            print(f\"你成功击败了敌人！\")\n",
    "            player_strength -= enemies\n",
    "            wave += 1\n",
    "            time_limit = max(5, time_limit - 0.5)  # 减少时间限制，但不少于5秒\n",
    "        else:\n",
    "            print(f\"你的力量不足以击败敌人。你失去了1点HP。\")\n",
    "            hp -= 1\n",
    "        \n",
    "        # 随机奖励机制\n",
    "        if random.random() < 0.2:  # 20%的概率\n",
    "            if bonus_challenge():\n",
    "                hp += 1\n",
    "        \n",
    "        if hp <= 0:\n",
    "            print(f\"你的HP降到了0。游戏结束。\")\n",
    "            break\n",
    "\n",
    "    return wave\n",
    "\n",
    "def get_title(wave):\n",
    "    if wave < 10:\n",
    "        return \"小鸡啄米\"\n",
    "    elif wave < 15:\n",
    "        return \"鸡鸣惊人\"\n",
    "    elif wave < 20:\n",
    "        return \"鸡鵬展翅\"\n",
    "    elif wave < 30:\n",
    "        return \"鸡中豪杰\"\n",
    "    elif wave < 40:\n",
    "        return \"鸡霸一方\"\n",
    "    elif wave < 60:\n",
    "        return \"鸡冠王者\"\n",
    "    else:\n",
    "        return \"凤凰涅鸡\"\n",
    "\n",
    "def display_results(player_info, final_wave):\n",
    "    print(\"\\n--- 游戏结束 ---\")\n",
    "    print(\"正在生成玩家信息卡片...\")\n",
    "\n",
    "    # 下载头像\n",
    "    image_url = \"https://static.cattom.site/image/icon/512.png?x-oss-process=style/webp\"\n",
    "    response = requests.get(image_url)\n",
    "    img = Image.open(BytesIO(response.content))\n",
    "    \n",
    "    # 创建图形和轴\n",
    "    fig, ax = plt.subplots(figsize=(12, 8))\n",
    "    \n",
    "    # 设置背景颜色\n",
    "    ax.set_facecolor('#f0f0f0')\n",
    "    \n",
    "    # 添加称号和最终得分\n",
    "    title = get_title(final_wave)\n",
    "    ax.text(0.5, 0.9, f\"称号: {title}\", fontsize=22, fontweight='bold', color='blue', ha='center', va='top')\n",
    "    ax.text(0.5, 0.82, f\"最终得分: 坚持到第 {final_wave} 波\", fontsize=18, fontweight='bold', color='red', ha='center', va='top')\n",
    "    \n",
    "    # 添加头像（调整大小和位置）\n",
    "    img_height = img.size[1] / img.size[0] * 0.25\n",
    "    ax.imshow(img, extent=[0.15, 0.4, 0.6 - img_height/2, 0.6 + img_height/2])\n",
    "    \n",
    "    # 添加玩家信息（调整字体大小和位置）\n",
    "    ax.text(0.45, 0.7, f\"姓名: {player_info['name']}\", fontsize=14, ha='left')\n",
    "    ax.text(0.45, 0.64, f\"年龄: {player_info['age']}\", fontsize=14, ha='left')\n",
    "    ax.text(0.45, 0.58, f\"兴趣: {', '.join(player_info['interests'])}\", fontsize=14, ha='left')\n",
    "    ax.text(0.45, 0.52, \"技能:\", fontsize=14, fontweight='bold', ha='left')\n",
    "    y_pos = 0.46\n",
    "    for hobby, description in player_info['skills'].items():\n",
    "        ax.text(0.45, y_pos, f\"  {hobby}, {description}\", fontsize=14, ha='left')\n",
    "        y_pos -= 0.06\n",
    "    \n",
    "    # 添加边框\n",
    "    ax.add_patch(Rectangle((0, 0), 1, 1, fill=False, edgecolor='black', lw=2))\n",
    "    \n",
    "    # 移除坐标轴\n",
    "    ax.axis('off')\n",
    "    \n",
    "    # 显示图片\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "if __name__ == \"__main__\":\n",
    "    player_info = get_player_info()\n",
    "    final_wave = play_game(player_info)\n",
    "    display_results(player_info, final_wave)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9e6f4aa4-ce8f-4f03-8620-1cfbcd1902e5",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
