马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zyx2012 于 2025-5-9 22:34 编辑
环境:python v3.13.3
- import random, sys, os, json
- import time
- dict = {1: {'精灵': '妙蛙种子', '属性': ['草', '毒'], 'HP': 45, '攻击': 49, '防御': 49, '速度': 45}, 2: {'精灵': '妙蛙草', '属性': ['草', '毒'], 'HP': 60, '攻击': 62, '防御': 63, '速度': 60}, 3: {'精灵': '妙蛙花', '属性': ['草', '毒'], 'HP': 80, '攻击': 82, '防御': 83, '速度': 80}, 4: {'精灵': '小火龙', '属性': ['火'], 'HP': 39, '攻击': 52, '防御': 43, '速度': 65}, 5: {'精灵': '火恐龙', '属性': ['火'], 'HP': 58, '攻击': 64, '防御': 58, '速度': 80}, 6: {'精灵': '喷火龙', '属性': ['火', '飞行'], 'HP': 78, '攻击': 84, '防御': 78, '速度': 100}, 7: {'精灵': '杰尼龟', '属性': ['水'], 'HP': 44, '攻击': 48, '防御': 65, '速度': 43}, 8: {'精灵': '卡咪龟', '属性': ['水'], 'HP': 59, '攻击': 63, '防御': 80, '速度': 58}, 9: {'精灵': '水箭龟', '属性': ['水'], 'HP': 79, '攻击': 83, '防御': 100, '速度': 78}, 10: {'精灵': '绿毛虫', '属性': ['虫'], 'HP': 45, '攻击': 30, '防御': 35, '速度': 45}, 11: {'精灵': '铁甲蛹', '属性': ['虫'], 'HP': 50, '攻击': 20, '防御': 55, '速度': 30}, 12: {'精灵': '巴大蝶', '属性': ['虫', '飞行'], 'HP': 60, '攻击': 45, '防御': 50, '速度': 70}, 13: {'精灵': '独角虫', '属性': ['虫', '毒'], 'HP': 40, '攻击': 35, '防御': 30, '速度': 50}, 14: {'精灵': '铁壳昆', '属性': ['虫', '毒'], 'HP': 45, '攻击': 25, '防御': 50, '速度': 35}, 15: {'精灵': '大针蜂', '属性': ['虫', '毒'], 'HP': 65, '攻击': 90, '防御': 40, '速度': 75}, 16: {'精灵': '波波', '属性': ['普通', '飞行'], 'HP': 40, '攻击': 45, '防御': 40, '速度': 56}, 17: {'精灵': '比比鸟', '属性': ['普通', '飞行'], 'HP': 63, '攻击': 60, '防御': 55, '速度': 71}, 18: {'精灵': '比雕', '属性': ['普通', '飞行'], 'HP': 83, '攻击': 80, '防御': 75, '速度': 101}, 19: {'精灵': '小拉达', '属性': ['普通'], 'HP': 30, '攻击': 56, '防御': 35, '速度': 72}, 20: {'精灵': '拉达', '属性': ['普通'], 'HP': 55, '攻击': 81, '防御': 60, '速度': 97}, 21: {'精灵': '烈雀', '属性': ['普通', '飞行'], 'HP': 40, '攻击': 60, '防御': 30, '速度': 70}, 22: {'精灵': '大嘴雀', '属性': ['普通', '飞行'], 'HP': 65, '攻击': 90, '防御': 65, '速度': 100}, 23: {'精灵': '阿柏蛇', '属性': ['毒'], 'HP': 35, '攻击': 60, '防御': 44, '速度': 55}, 24: {'精灵': '阿柏怪', '属性': ['毒'], 'HP': 60, '攻击': 95, '防御': 69, '速度': 80}, 25: {'精灵': '皮卡丘', '属性': ['电'], 'HP': 35, '攻击': 55, '防御': 40, '速度': 90}, 26: {'精灵': '雷丘', '属性': ['电'], 'HP': 60, '攻击': 90, '防御': 55, '速度': 110}, 27: {'精灵': '穿山鼠', '属性': ['地面'], 'HP': 50, '攻击': 75, '防御': 85, '速度': 40}, 28: {'精灵': '穿山王', '属性': ['地面'], 'HP': 75, '攻击': 100, '防御': 110, '速度': 65}, 29: {'精灵': '尼多兰', '属性': ['毒'], 'HP': 55, '攻击': 47, '防御': 52, '速度': 41}, 30: {'精灵': '尼多娜', '属性': ['毒'], 'HP': 70, '攻击': 62, '防御': 67, '速度': 56}, 31: {'精灵': '尼多后', '属性': ['毒', '地面'], 'HP': 90, '攻击': 92, '防御': 87, '速度': 76}, 32: {'精灵': '尼多朗', '属性': ['毒'], 'HP': 46, '攻击': 57, '防御': 40, '速度': 50}, 33: {'精灵': '尼多力诺', '属性': ['毒'], 'HP': 61, '攻击': 72, '防御': 57, '速度': 65}, 34: {'精灵': '尼多王', '属性': ['毒', '地面'], 'HP': 81, '攻击': 102, '防御': 77, '速度': 85}, 35: {'精灵': '皮皮', '属性': ['妖精'], 'HP': 70, '攻击': 45, '防御': 48, '速度': 35}, 36: {'精灵': '皮可西', '属性': ['妖精'], 'HP': 95, '攻击': 70, '防御': 73, '速度': 60}, 37: {'精灵': '六尾', '属性': ['火'], 'HP': 38, '攻击': 41, '防御': 40, '速度': 65}, 38: {'精灵': '九尾', '属性': ['火'], 'HP': 73, '攻击': 76, '防御': 75, '速度': 100}, 39: {'精灵': '胖丁', '属性': ['普通', '妖精'], 'HP': 115, '攻击': 45, '防御': 20, '速度': 20}, 40: {'精灵': '胖可丁', '属性': ['普通', '妖精'], 'HP': 140, '攻击': 70, '防御': 45, '速度': 45}, 41: {'精灵': '超音蝠', '属性': ['毒', '飞行'], 'HP': 40, '攻击': 45, '防御': 35, '速度': 55}, 42: {'精灵': '大嘴蝠', '属性': ['毒', '飞行'], 'HP': 75, '攻击': 80, '防御': 70, '速度': 90}, 43: {'精灵': '走路草', '属性': ['草', '毒'], 'HP': 45, '攻击': 50, '防御': 55, '速度': 30}, 44: {'精灵': '臭臭花', '属性': ['草', '毒'], 'HP': 60, '攻击': 65, '防御': 70, '速度': 40}, 45: {'精灵': '霸王花', '属性': ['草', '毒'], 'HP': 75, '攻击': 80, '防御': 85, '速度': 50}, 46: {'精灵': '派拉斯', '属性': ['虫', '草'], 'HP': 35, '攻击': 70, '防御': 55, '速度': 25}, 47: {'精灵': '派拉斯特', '属性': ['虫', '草'], 'HP': 60, '攻击': 95, '防御': 80, '速度': 30}, 48: {'精灵': '毛球', '属性': ['虫', '毒'], 'HP': 60, '攻击': 55, '防御': 50, '速度': 45}, 49: {'精灵': '末入蛾', '属性': ['虫', '毒'], 'HP': 70, '攻击': 65, '防御': 60, '速度': 90}, 50: {'精灵': '地鼠', '属性': ['地面'], 'HP': 10, '攻击': 55, '防御': 25, '速度': 95}, 51: {'精灵': '三地鼠', '属性': ['地面'], 'HP': 35, '攻击': 100, '防御': 50, '速度': 120}, 52: {'精灵': '喵喵', '属性': ['普通'], 'HP': 40, '攻击': 45, '防御': 35, '速度': 90}, 53: {'精灵': '猫老大', '属性': ['普通'], 'HP': 65, '攻击': 70, '防御': 60, '速度': 115}, 54: {'精灵': '可达鸭', '属性': ['水'], 'HP': 50, '攻击': 52, '防御': 48, '速度': 55}, 55: {'精灵': '哥达鸭', '属性': ['水'], 'HP': 80, '攻击': 82, '防御': 78, '速度': 85}, 56: {'精灵': '猴怪', '属性': ['格斗'], 'HP': 40, '攻击': 80, '防御': 35, '速度': 70}, 57: {'精灵': '火爆猴', '属性': ['格斗'], 'HP': 65, '攻击': 105, '防御': 60, '速度': 95}, 58: {'精灵': '卡蒂狗', '属性': ['火'], 'HP': 55, '攻击': 70, '防御': 45, '速度': 60}, 59: {'精灵': '风速狗', '属性': ['火'], 'HP': 90, '攻击': 110, '防御': 80, '速度': 95}, 60: {'精灵': '蚊香蝌蚪', '属性': ['水'], 'HP': 40, '攻击': 50, '防御': 40, '速度': 90}, 61: {'精灵': '蚊香蛙', '属性': ['水'], 'HP': 65, '攻击': 65, '防御': 65, '速度': 90}, 62: {'精灵': '快泳蛙', '属性': ['水', '格斗'], 'HP': 90, '攻击': 95, '防御': 95, '速度': 70}, 63: {'精灵': '凯西', '属性': ['超能'], 'HP': 25, '攻击': 20, '防御': 15, '速度': 90}, 64: {'精灵': '勇吉拉', '属性': ['超能'], 'HP': 40, '攻击': 35, '防御': 30, '速度': 105}, 65: {'精灵': '胡地', '属性': ['超能'], 'HP': 55, '攻击': 50, '防御': 45, '速度': 120}, 66: {'精灵': '腕力', '属性': ['格斗'], 'HP': 70, '攻击': 80, '防御': 50, '速度': 35}, 67: {'精灵': '豪力', '属性': ['格斗'], 'HP': 80, '攻击': 100, '防御': 70, '速度': 45}, 68: {'精灵': '怪力', '属性': ['格斗'], 'HP': 90, '攻击': 130, '防御': 80, '速度': 55}, 69: {'精灵': '喇叭芽', '属性': ['草', '毒'], 'HP': 50, '攻击': 75, '防御': 35, '速度': 40}, 70: {'精灵': '口呆花', '属性': ['草', '毒'], 'HP': 65, '攻击': 90, '防御': 50, '速度': 55}, 71: {'精灵': '大食花', '属性': ['草', '毒'], 'HP': 80, '攻击': 105, '防御': 65, '速度': 70}, 72: {'精灵': '玛瑙水母', '属性': ['水', '毒'], 'HP': 40, '攻击': 40, '防御': 35, '速度': 70}, 73: {'精灵': '毒刺水母', '属性': ['水', '毒'], 'HP': 80, '攻击': 70, '防御': 65, '速度': 100}, 74: {'精灵': '小拳石', '属性': ['岩石', '地面'], 'HP': 40, '攻击': 80, '防御': 100, '速度': 20}, 75: {'精灵': '隆隆石', '属性': ['岩石', '地面'], 'HP': 55, '攻击': 95, '防御': 115, '速度': 35}, 76: {'精灵': '隆隆岩', '属性': ['岩石', '地面'], 'HP': 80, '攻击': 120, '防御': 130, '速度': 45}, 77: {'精灵': '小火马', '属性': ['火'], 'HP': 50, '攻击': 85, '防御': 55, '速度': 90}, 78: {'精灵': '烈焰马', '属性': ['火'], 'HP': 65, '攻击': 100, '防御': 70, '速度': 105}, 79: {'精灵': '呆呆兽', '属性': ['水', '超能'], 'HP': 90, '攻击': 65, '防御': 65, '速度': 15}, 80: {'精灵': '呆河马', '属性': ['水', '超能'], 'HP': 95, '攻击': 75, '防御': 110, '速度': 30}, 81: {'精灵': '小磁怪', '属性': ['电', '钢'], 'HP': 25, '攻击': 35, '防御': 70, '速度': 45}, 82: {'精灵': '三合一磁怪', '属性': ['电', '钢'], 'HP': 50, '攻击': 60, '防御': 95, '速度': 70}, 83: {'精灵': '大葱鸭', '属性': ['普通', '飞行'], 'HP': 52, '攻击': 90, '防御': 55, '速度': 60}, 84: {'精灵': '嘟嘟', '属性': ['普通', '飞行'], 'HP': 35, '攻击': 85, '防御': 45, '速度': 75}, 85: {'精灵': '嘟嘟利', '属性': ['普通', '飞行'], 'HP': 60, '攻击': 110, '防御': 70, '速度': 110}, 86: {'精灵': '小海狮', '属性': ['水'], 'HP': 65, '攻击': 45, '防御': 55, '速度': 45}, 87: {'精灵': '白海狮', '属性': ['水', '冰'], 'HP': 90, '攻击': 70, '防御': 80, '速度': 70}, 88: {'精灵': '臭泥', '属性': ['毒'], 'HP': 80, '攻击': 80, '防御': 50, '速度': 25}, 89: {'精灵': '臭臭泥', '属性': ['毒'], 'HP': 105, '攻击': 105, '防御': 75, '速度': 50}, 90: {'精灵': '大舌贝', '属性': ['水'], 'HP': 30, '攻击': 65, '防御': 100, '速度': 40}, 91: {'精灵': '铁甲贝', '属性': ['水', '冰'], 'HP': 50, '攻击': 95, '防御': 180, '速度': 70}, 92: {'精灵': '鬼斯', '属性': ['幽灵', '毒'], 'HP': 30, '攻击': 35, '防御': 30, '速度': 80}, 93: {'精灵': '鬼斯通', '属性': ['幽灵', '毒'], 'HP': 45, '攻击': 50, '防御': 45, '速度': 95}, 94: {'精灵': '耿鬼', '属性': ['幽灵', '毒'], 'HP': 60, '攻击': 65, '防御': 60, '速度': 110}, 95: {'精灵': '大岩蛇', '属性': ['岩石', '地面'], 'HP': 35, '攻击': 45, '防御': 160, '速度': 70}, 96: {'精灵': '素利普', '属性': ['超能'], 'HP': 60, '攻击': 48, '防御': 45, '速度': 42}, 97: {'精灵': '素利柏', '属性': ['超能'], 'HP': 85, '攻击': 73, '防御': 70, '速度': 67}, 98: {'精灵': '螃蟹怪', '属性': ['水'], 'HP': 30, '攻击': 105, '防御': 90, '速度': 50}, 99: {'精灵': '巨钳蟹', '属性': ['水'], 'HP': 55, '攻击': 130, '防御': 115, '速度': 75}, 100: {'精灵': '雷电球', '属性': ['电'], 'HP': 40, '攻击': 30, '防御': 50, '速度': 100}, 101: {'精灵': '顽皮弹', '属性': ['电'], 'HP': 60, '攻击': 50, '防御': 70, '速度': 150}, 102: {'精灵': '蛋蛋', '属性': ['草', '超能'], 'HP': 60, '攻击': 40, '防御': 80, '速度': 40}, 103: {'精灵': '椰蛋树', '属性': ['草', '超能'], 'HP': 95, '攻击': 95, '防御': 85, '速度': 55}, 104: {'精灵': '可拉可拉', '属性': ['地面'], 'HP': 50, '攻击': 50, '防御': 95, '速度': 35}, 105: {'精灵': '嘎啦嘎啦', '属性': ['地面'], 'HP': 60, '攻击': 80, '防御': 110, '速度': 45}, 106: {'精灵': '沙瓦郎', '属性': ['格斗'], 'HP': 50, '攻击': 120, '防御': 53, '速度': 87}, 107: {'精灵': '艾比郎', '属性': ['格斗'], 'HP': 50, '攻击': 105, '防御': 79, '速度': 76}, 108: {'精灵': '大舌头', '属性': ['普通'], 'HP': 90, '攻击': 55, '防御': 75, '速度': 30}, 109: {'精灵': '瓦斯弹', '属性': ['毒'], 'HP': 40, '攻击': 65, '防御': 95, '速度': 35}, 110: {'精灵': '双弹瓦斯', '属性': ['毒'], 'HP': 65, '攻击': 90, '防御': 120, '速度': 60}, 111: {'精灵': '铁甲犀牛', '属性': ['地面', '岩石'], 'HP': 80, '攻击': 85, '防御': 95, '速度': 25}, 112: {'精灵': '铁甲暴龙', '属性': ['地面', '岩石'], 'HP': 105, '攻击': 130, '防御': 120, '速度': 40}, 113: {'精灵': '吉利蛋', '属性': ['普通'], 'HP': 250, '攻击': 5, '防御': 5, '速度': 50}, 114: {'精灵': '蔓藤怪', '属性': ['草'], 'HP': 65, '攻击': 55, '防御': 115, '速度': 60}, 115: {'精灵': '袋龙', '属性': ['普通'], 'HP': 105, '攻击': 95, '防御': 80, '速度': 90}, 116: {'精灵': '墨海马', '属性': ['水'], 'HP': 30, '攻击': 40, '防御': 70, '速度': 60}, 117: {'精灵': '海刺龙', '属性': ['水'], 'HP': 55, '攻击': 65, '防御': 95, '速度': 85}, 118: {'精灵': '角金鱼', '属性': ['水'], 'HP': 45, '攻击': 67, '防御': 60, '速度': 63}, 119: {'精灵': '金鱼王', '属性': ['水'], 'HP': 80, '攻击': 92, '防御': 65, '速度': 68}, 120: {'精灵': '海星星', '属性': ['水'], 'HP': 30, '攻击': 45, '防御': 55, '速度': 85}, 121: {'精灵': '宝石海星', '属性': ['水', '超能'], 'HP': 60, '攻击': 75, '防御': 85, '速度': 115}, 122: {'精灵': '魔墙人偶', '属性': ['超能', '妖精'], 'HP': 40, '攻击': 45, '防御': 65, '速度': 90}, 123: {'精灵': '飞天螳螂', '属性': ['虫', '飞行'], 'HP': 70, '攻击': 110, '防御': 80, '速度': 105}, 124: {'精灵': '肯泰罗', '属性': ['冰', '超能'], 'HP': 65, '攻击': 50, '防御': 35, '速度': 95}, 125: {'精灵': '熊宝宝', '属性': ['电'], 'HP': 65, '攻击': 83, '防御': 57, '速度': 105}, 126: {'精灵': '圈圈熊', '属性': ['火'], 'HP': 65, '攻击': 95, '防御': 57, '速度': 93}, 127: {'精灵': '熔岩虫', '属性': ['虫'], 'HP': 65, '攻击': 125, '防御': 100, '速度': 85}, 128: {'精灵': '熔岩蜗牛', '属性': ['普通'], 'HP': 75, '攻击': 100, '防御': 95, '速度': 110}, 129: {'精灵': '小鸭嘴龙', '属性': ['水'], 'HP': 20, '攻击': 10, '防御': 55, '速度': 80}, 130: {'精灵': '鸭嘴火龙', '属性': ['水', '飞行'], 'HP': 95, '攻击': 125, '防御': 79, '速度': 81}, 131: {'精灵': '鸭嘴暴龙', '属性': ['水', '冰'], 'HP': 130, '攻击': 85, '防御': 80, '速度': 60}, 132: {'精灵': '百变怪', '属性': ['普通'], 'HP': 48, '攻击': 48, '防御': 48, '速度': 48}, 133: {'精灵': '伊布', '属性': ['普通'], 'HP': 55, '攻击': 55, '防御': 50, '速度': 55}, 134: {'精灵': '水伊布', '属性': ['水'], 'HP': 130, '攻击': 65, '防御': 60, '速度': 65}, 135: {'精灵': '雷伊布', '属性': ['电'], 'HP': 65, '攻击': 65, '防御': 60, '速度': 130}, 136: {'精灵': '火伊布', '属性': ['火'], 'HP': 65, '攻击': 130, '防御': 60, '速度': 65}, 137: {'精灵': '3D龙', '属性': ['普通'], 'HP': 65, '攻击': 60, '防御': 70, '速度': 40}, 138: {'精灵': '菊石兽', '属性': ['岩石', '水'], 'HP': 35, '攻击': 40, '防御': 100, '速度': 35}, 139: {'精灵': '多刺菊石兽', '属性': ['岩石', '水'], 'HP': 70, '攻击': 60, '防御': 125, '速度': 55}, 140: {'精灵': '化石盔', '属性': ['岩石', '水'], 'HP': 30, '攻击': 80, '防御': 90, '速度': 55}, 141: {'精灵': '镰刀盔', '属性': ['岩石', '水'], 'HP': 60, '攻击': 115, '防御': 105, '速度': 80}, 142: {'精灵': '化石翼龙', '属性': ['岩石', '飞行'], 'HP': 80, '攻击': 105, '防御': 65, '速度': 130}, 143: {'精灵': '卡比兽', '属性': ['普通'], 'HP': 160, '攻击': 110, '防御': 65, '速度': 30}, 144: {'精灵': '急冻鸟', '属性': ['冰', '飞行'], 'HP': 90, '攻击': 85, '防御': 100, '速度': 85}, 145: {'精灵': '闪电鸟', '属性': ['电', '飞行'], 'HP': 90, '攻击': 90, '防御': 85, '速度': 100}, 146: {'精灵': '火焰鸟', '属性': ['火', '飞行'], 'HP': 90, '攻击': 100, '防御': 90, '速度': 90}, 147: {'精灵': '迷你龙', '属性': ['龙'], 'HP': 41, '攻击': 64, '防御': 45, '速度': 50}, 148: {'精灵': '哈克龙', '属性': ['龙'], 'HP': 61, '攻击': 84, '防御': 65, '速度': 70}, 149: {'精灵': '快龙', '属性': ['龙', '飞行'], 'HP': 91, '攻击': 134, '防御': 95, '速度': 80}, 150: {'精灵': '超梦', '属性': ['超能'], 'HP': 106, '攻击': 110, '防御': 90, '速度': 130}, 151: {'精灵': '梦幻', '属性': ['超能'], 'HP': 100, '攻击': 100, '防御': 100, '速度': 100}}
- type = {
- '普通': {'幽灵': 0, '岩石': 0.5, '钢铁': 0.5},
- '格斗': {'飞行': 0.5, '毒': 0.5, '虫': 0.5, '幽灵': 0, '超能': 0.5, '妖精': 0.5},
- '飞行': {'岩石': 0.5, '电': 0.5, '草': 2, '格斗': 2},
- '毒': {'毒': 0.5, '地面': 0.5, '岩石': 0.5, '虫': 2, '草': 2, '妖精': 2},
- '地面': {'飞行': 0, '虫': 0.5, '火': 2, '电': 2, '草': 0.5, '岩石': 2},
- '岩石': {'格斗': 0.5, '地面': 0.5, '飞行': 2, '火': 2, '虫': 2},
- '虫': {'飞行': 0.5, '岩石': 0.5, '火': 0.5, '格斗': 0.5, '草': 2, '超能': 2},
- '幽灵': {'普通': 0, '超能': 2, '幽灵': 2},
- '火': {'水': 0.5, '地面': 0.5, '岩石': 0.5, '火': 0.5, '草': 2, '冰': 2, '虫': 2, '钢': 2},
- '水': {'水': 0.5, '草': 0.5, '地面': 2, '火': 2, '岩石': 2},
- '草': {'飞行': 0.5, '毒': 0.5, '虫': 0.5, '火': 0.5, '水': 2, '地面': 2, '岩石': 2},
- '电': {'地面': 0, '飞行': 2, '水': 2},
- '超能': {'毒': 2, '格斗': 2, '超能': 0.5, '恶': 0.5, '妖精': 0.5},
- '冰': {'水': 0.5, '火': 0.5, '冰': 0.5, '草': 2, '地面': 2, '飞行': 2, '龙': 2},
- '龙': {'冰': 0.5, '龙': 0.5, '妖精': 0},
- '妖精': {'格斗': 2, '毒': 0.5, '钢': 0.5, '火': 0.5, '龙': 2, '恶': 2},
- '恶': {'格斗': 0.5, '幽灵': 2, '超能': 2, '妖精': 0.5}
- }
- type_moves = {
- "普通": [
- {"招式": "撞击", "威力": 40, "效果": "无特殊效果", "效果概率": 0, "默认PP": 35},
- {"招式": "猛撞", "威力": 90, "效果": "无特殊效果", "效果概率": 0, "默认PP": 20},
- {"招式": "破坏光线", "威力": 150, "效果": "使用后休息一回合", "效果概率": 1, "默认PP": 5},
- {"招式": "舍身冲撞", "威力": 120, "效果": "反弹伤害", "效果概率": 1, "默认PP": 15}
- ],
- "格斗": [
- {"招式": "空手劈", "威力": 50, "效果": "无特殊效果", "效果概率": 0, "默认PP": 25},
- {"招式": "十字劈", "威力": 100, "效果": "无特殊效果", "效果概率": 0, "默认PP": 10},
- {"招式": "地狱翻滚", "威力": 80, "效果": "无特殊效果", "效果概率": 0, "默认PP": 15},
- {"招式": "飞膝踢", "威力": 130, "效果": "反弹伤害", "效果概率": 1, "默认PP": 10}
- ],
- "飞行": [
- {"招式": "啄", "威力": 35, "效果": "无特殊效果", "效果概率": 0, "默认PP": 35},
- {"招式": "翅膀攻击", "威力": 60, "效果": "无特殊效果", "效果概率": 0, "默认PP": 35},
- {"招式": "鹦鹉学舌", "威力": 50, "效果": "无特殊效果", "效果概率": 0, "默认PP": 20},
- {"招式": "神鸟猛击", "威力": 140, "效果": "使用后休息一回合", "效果概率": 1, "默认PP": 5}
- ],
- "毒": [
- {"招式": "毒针", "威力": 15, "效果": "使对手中毒", "效果概率": 0.3, "默认PP": 35},
- {"招式": "溶解液", "威力": 40, "效果": "降低对手防御", "效果概率": 0.2, "默认PP": 30},
- {"招式": "污泥攻击", "威力": 65, "效果": "使对手中毒", "效果概率": 0.4, "默认PP": 20},
- {"招式": "剧毒", "威力": "-", "效果": "使对手剧毒", "效果概率": 1, "默认PP": 10}
- ],
- "地面": [
- {"招式": "泼沙", "威力": 50, "效果": "降低对手命中率", "效果概率": 0.2, "默认PP": 15},
- {"招式": "挖洞", "威力": 80, "效果": "无特殊效果", "效果概率": 0, "默认PP": 10},
- {"招式": "地震", "威力": 100, "效果": "无特殊效果", "效果概率": 0, "默认PP": 10},
- {"招式": "大地之力", "威力": 90, "效果": "无特殊效果", "效果概率": 0, "默认PP": 10}
- ],
- "岩石": [
- {"招式": "落石", "威力": 50, "效果": "无特殊效果", "效果概率": 0, "默认PP": 15},
- {"招式": "岩石暴击", "威力": 25, "效果": "无特殊效果", "效果概率": 0, "默认PP": 10},
- {"招式": "岩崩", "威力": 75, "效果": "无特殊效果", "效果概率": 0, "默认PP": 10},
- {"招式": "尖石攻击", "威力": 100, "效果": "无特殊效果", "效果概率": 0, "默认PP": 5}
- ],
- "虫": [
- {"招式": "吐丝", "威力": "-", "效果": "降低对手速度", "效果概率": 0.3, "默认PP": 40},
- {"招式": "虫咬", "威力": 60, "效果": "无特殊效果", "效果概率": 0, "默认PP": 25},
- {"招式": "飞弹针", "威力": 25, "效果": "无特殊效果", "效果概率": 0, "默认PP": 20},
- {"招式": "十字剪", "威力": 80, "效果": "无特殊效果", "效果概率": 0, "默认PP": 15}
- ],
- "幽灵": [
- {"招式": "舔", "威力": 30, "效果": "使对手麻痹", "效果概率": 0.2, "默认PP": 30},
- {"招式": "黑夜魔影", "威力": 50, "效果": "无特殊效果", "效果概率": 0, "默认PP": 15},
- {"招式": "奇异之光", "威力": "-", "效果": "使对手混乱", "效果概率": 0.5, "默认PP": 20},
- {"招式": "影子球", "威力": 80, "效果": "无特殊效果", "效果概率": 0, "默认PP": 10}
- ],
- "火": [
- {"招式": "火花", "威力": 40, "效果": "使对手灼伤", "效果概率": 0.1, "默认PP": 25},
- {"招式": "火焰轮", "威力": 60, "效果": "使对手灼伤", "效果概率": 0.2, "默认PP": 20},
- {"招式": "喷射火焰", "威力": 90, "效果": "使对手灼伤", "效果概率": 0.3, "默认PP": 15},
- {"招式": "大字爆炎", "威力": 110, "效果": "使对手灼伤", "效果概率": 0.5, "默认PP": 5}
- ],
- "水": [
- {"招式": "水枪", "威力": 40, "效果": "无特殊效果", "效果概率": 0, "默认PP": 25},
- {"招式": "水之波动", "威力": 60, "效果": "使对手混乱", "效果概率": 0.2, "默认PP": 20},
- {"招式": "冲浪", "威力": 90, "效果": "无特殊效果", "效果概率": 0, "默认PP": 15},
- {"招式": "水炮", "威力": 110, "效果": "无特殊效果", "效果概率": 0, "默认PP": 5}
- ],
- "草": [
- {"招式": "吸取", "威力": 20, "效果": "吸取对手HP", "效果概率": 0.5, "默认PP": 25},
- {"招式": "飞叶快刀", "威力": 55, "效果": "无特殊效果", "效果概率": 0, "默认PP": 25},
- {"招式": "日光束", "威力": 120, "效果": "下一回合攻击", "效果概率": 1, "默认PP": 10},
- {"招式": "花瓣舞", "威力": 120, "效果": "连续攻击后混乱", "效果概率": 1, "默认PP": 10}
- ],
- "电": [
- {"招式": "电击", "威力": 40, "效果": "使对手麻痹", "效果概率": 0.1, "默认PP": 30},
- {"招式": "十万伏特", "威力": 90, "效果": "使对手麻痹", "效果概率": 0.2, "默认PP": 15},
- {"招式": "打雷", "威力": 110, "效果": "使对手麻痹", "效果概率": 0.3, "默认PP": 10},
- {"招式": "伏特攻击", "威力": 120, "效果": "反弹伤害", "效果概率": 1, "默认PP": 5}
- ],
- "超能": [
- {"招式": "念力", "威力": 50, "效果": "无特殊效果", "效果概率": 0, "默认PP": 25},
- {"招式": "幻象光线", "威力": 65, "效果": "使对手混乱", "效果概率": 0.2, "默认PP": 20},
- {"招式": "精神强念", "威力": 90, "效果": "无特殊效果", "效果概率": 0, "默认PP": 10},
- {"招式": "预知未来", "威力": 120, "效果": "两回合后攻击", "效果概率": 1, "默认PP": 5}
- ],
- "冰": [
- {"招式": "细雪", "威力": 40, "效果": "无特殊效果", "效果概率": 0, "默认PP": 25},
- {"招式": "冰冻之风", "威力": 55, "效果": "降低对手速度", "效果概率": 0.3, "默认PP": 15},
- {"招式": "暴风雪", "威力": 110, "效果": "使对手冰冻", "效果概率": 0.1, "默认PP": 5},
- {"招式": "绝对零度", "威力": "-", "效果": "一击必杀", "效果概率": 0.05, "默认PP": 5}
- ],
- "龙": [
- {"招式": "龙息", "威力": 60, "效果": "使对手麻痹", "效果概率": 0.2, "默认PP": 20},
- {"招式": "龙之怒", "威力": "-", "效果": "固定造成40点伤害", "效果概率": 1, "默认PP": 10},
- {"招式": "龙爪", "威力": 80, "效果": "无特殊效果", "效果概率": 0, "默认PP": 15},
- {"招式": "逆鳞", "威力": 120, "效果": "连续攻击后混乱", "效果概率": 1, "默认PP": 10}
- ],
- "妖精": [
- {"招式": "妖精之风", "威力": 40, "效果": "无特殊效果", "效果概率": 0, "默认PP": 30},
- {"招式": "月亮之力", "威力": 95, "效果": "降低对手攻击", "效果概率": 0.3, "默认PP": 10},
- {"招式": "魔法闪耀", "威力": 80, "效果": "无特殊效果", "效果概率": 0, "默认PP": 15},
- {"招式": "薄雾场地", "威力": "-", "效果": "降低异常状态概率", "效果概率": 1, "默认PP": 10}
- ],
- "恶": [
- {"招式": "咬住", "威力": 60, "效果": "使对手畏缩", "效果概率": 0.2, "默认PP": 25},
- {"招式": "恶之波动", "威力": 80, "效果": "使对手畏缩", "效果概率": 0.3, "默认PP": 15},
- {"招式": "欺诈", "威力": 95, "效果": "无特殊效果", "效果概率": 0, "默认PP": 10},
- {"招式": "恶之咆哮", "威力": 80, "效果": "降低对手攻击", "效果概率": 0.2, "默认PP": 10}
- ]
- }
- prop = {
- "伤药": {"HP": 20},
- "好伤药": {"HP": 50},
- "全复药": {"HP": 100},
- "狗剩": {"HP": 1},
- "攻击提升": {"攻击": 10},
- "防御提升": {"防御": 10},
- "速度提升": {"速度": 10},
- "精灵球": {"概率": 1},
- "超级球": {"概率": 1.5},
- "高级球": {"概率": 2},
- "大师球": {"概率": 1000},
- "PP小补剂": {"PP": 10}, # 恢复单个技能的PP
- "PP大补剂": {"PP": 20} # 恢复单个技能的PP
- }
- evolution_map = {
- "妙蛙种子": {"进化等级": 16, "进化形态": "妙蛙草"},
- "妙蛙草": {"进化等级": 32, "进化形态": "妙蛙花"},
- "小火龙": {"进化等级": 16, "进化形态": "火恐龙"},
- "火恐龙": {"进化等级": 36, "进化形态": "喷火龙"},
- "杰尼龟": {"进化等级": 16, "进化形态": "卡咪龟"},
- "卡咪龟": {"进化等级": 36, "进化形态": "水箭龟"},
- "绿毛虫": {"进化等级": 7, "进化形态": "铁甲蛹"},
- "铁甲蛹": {"进化等级": 10, "进化形态": "巴大蝶"},
- "独角虫": {"进化等级": 7, "进化形态": "铁壳昆"},
- "铁壳昆": {"进化等级": 10, "进化形态": "大针蜂"},
- "波波": {"进化等级": 18, "进化形态": "比比鸟"},
- "比比鸟": {"进化等级": 36, "进化形态": "比雕"},
- "小拉达": {"进化等级": 20, "进化形态": "拉达"},
- "烈雀": {"进化等级": 20, "进化形态": "大嘴雀"},
- "阿柏蛇": {"进化等级": 22, "进化形态": "阿柏怪"},
- "皮卡丘": {"进化等级": 30, "进化形态": "雷丘"},
- "穿山鼠": {"进化等级": 22, "进化形态": "穿山王"},
- "尼多兰": {"进化等级": 16, "进化形态": "尼多娜"},
- "尼多娜": {"进化等级": 36, "进化形态": "尼多后"},
- "尼多朗": {"进化等级": 16, "进化形态": "尼多力诺"},
- "尼多力诺": {"进化等级": 36, "进化形态": "尼多王"},
- "六尾": {"进化等级": 30, "进化形态": "九尾"},
- "走路草": {"进化等级": 21, "进化形态": "臭臭花"},
- "臭臭花": {"进化等级": 36, "进化形态": "霸王花"},
- "喇叭芽": {"进化等级": 21, "进化形态": "口呆花"},
- "口呆花": {"进化等级": 36, "进化形态": "大食花"},
- "凯西": {"进化等级": 16, "进化形态": "勇吉拉"},
- "勇吉拉": {"进化等级": 36, "进化形态": "胡地"},
- "腕力": {"进化等级": 28, "进化形态": "豪力"},
- "豪力": {"进化等级": 40, "进化形态": "怪力"},
- "小磁怪": {"进化等级": 30, "进化形态": "三合一磁怪"},
- "大舌贝": {"进化等级": 30, "进化形态": "铁甲贝"},
- "鬼斯": {"进化等级": 25, "进化形态": "鬼斯通"},
- "鬼斯通": {"进化等级": 40, "进化形态": "耿鬼"},
- "小火马": {"进化等级": 40, "进化形态": "烈焰马"},
- "蚊香蝌蚪": {"进化等级": 25, "进化形态": "蚊香蛙"},
- "蚊香蛙": {"进化等级": 40, "进化形态": "快泳蛙"},
- "迷你龙": {"进化等级": 30, "进化形态": "哈克龙"},
- "哈克龙": {"进化等级": 55, "进化形态": "快龙"}
- }
- def fight():
- global flag
- print("选择技能:")
- for i, skill in enumerate(player["技能"]):
- print(f"{i + 1}. {skill['招式']} (威力: {skill['威力']}, PP: {skill['PP']})")
- try:
- move = int(input("选择技能编号:")) - 1
- if move < 0 or move >= len(player["技能"]):
- print("无效的选择!")
- return
- skill = player["技能"][move]
- if skill["PP"] <= 0:
- print(f"{skill['招式']} 的 PP 已用完,无法使用!")
- return
- skill["PP"] -= 1 # 减少技能的 PP
- print(f"{name}使用了{skill['招式']}!")
- # 选择第一个属性进行查找
- player_type = player["属性"][0] if isinstance(player["属性"], list) else player["属性"]
- enemy_type = enemy["属性"][0] if isinstance(enemy["属性"], list) else enemy["属性"]
- type_attact = type[player_type].get(enemy_type, 1)
- if skill["威力"] != "-" and skill["效果"] == "无特殊效果":
- attact = player["攻击"] * type_attact - enemy["防御"]
- else:
- attact = player["攻击"] * type_attact - enemy["防御"]
- # 处理特殊效果
- if random.random() < skill["效果概率"]:
- if skill["效果"] == "使对手中毒":
- enemy["状态"] = "中毒"
- print(f"{ene}中毒了!")
- elif skill["效果"] == "使对手麻痹":
- enemy["状态"] = "麻痹"
- print(f"{ene}麻痹了!")
- elif skill["效果"] == "使对手灼伤":
- enemy["状态"] = "灼伤"
- print(f"{ene}被灼伤了!")
- elif skill["效果"] == "降低对手防御":
- enemy["防御"] = max(1, enemy["防御"] - 10) # 防御降低 10 点
- print(f"{ene}的防御降低了!")
- elif skill["效果"] == "使对手剧毒":
- enemy["状态"] = "剧毒"
- print(f"{ene}中了剧毒!")
- elif skill["效果"] == "使对手混乱":
- enemy["状态"] = "混乱"
- print(f"{ene}陷入混乱了!")
- elif skill["效果"] == "反弹伤害":
- player["HP"] -= attact // 4 # 反弹 1/4 的伤害
- print(f"{name}受到了反弹伤害!")
- enemy["HP"] -= attact if attact > 0 else 5
- if type_attact < 1:
- print("收效甚微……")
- elif type_attact > 1:
- print("效果拔群!")
- print(f"{ene}受到了", attact, "点伤害!") if attact > 0 else print(f"好像没有什么效果……")
- if enemy["HP"] <= 0:
- print(f"{ene}被打败了!")
- # 计算经验值奖励
- exp_gain = enemy["等级"] * 5 # 每级奖励 5 点经验值
- player["经验值"] += exp_gain
- print(f"{name}获得了 {exp_gain} 点经验值!")
- # 检查是否升级
- while player["经验值"] >= player["升级经验"]:
- player["经验值"] -= player["升级经验"]
- player["等级"] += 1
- player["升级经验"] = player["等级"] * 10 # 更新升级所需经验值
- print(f"{name}升到了等级 {player['等级']}!")
- updated_player = calculate_stats(dict[next(k for k, v in dict.items() if v["精灵"] == player["精灵"])], player["等级"])
- updated_player["技能"] = player["技能"] # 保留原有技能
- player.update(updated_player) # 更新属性
- # 检查是否可以进化
- if player["精灵"] in evolution_map:
- evolution = evolution_map[player["精灵"]]
- if player["等级"] >= evolution["进化等级"]:
- print(f"{player['精灵']}达到了等级 {evolution['进化等级']},正在进化!")
- new_form = evolution["进化形态"]
- updated_player = calculate_stats(dict[next(k for k, v in dict.items() if v["精灵"] == new_form)], player["等级"])
- updated_player["技能"] = player["技能"] # 保留原有技能
- player.update(updated_player)
- print(f"恭喜!你的{player['精灵']}进化成了{new_form}!")
- flag = False
- return
- print(f"{ene}剩余HP:", enemy["HP"])
- except (ValueError, IndexError):
- print("请输入有效的数字!")
-
- def baggy():
- """使用背包物品"""
- global bag, enebag, flag, pokemon, player, enemy, name, ene
- while True:
- try:
- # 汇总背包中的物品
- bag_summary = {}
- for item in bag:
- if item in bag_summary:
- bag_summary[item] += 1
- else:
- bag_summary[item] = 1
- # 显示背包物品
- print("你想要使用什么呢?")
- indexed_bag = list(bag_summary.items())
- for i, (item, count) in enumerate(indexed_bag):
- print(f"{i + 1}. {item} * {count}")
- print("0. 取消")
- choice = int(input("选择物品(输入编号):")) - 1
- if choice == -1:
- print("取消使用物品。")
- return
- if choice < 0 or choice >= len(indexed_bag):
- print("无效的选择!请重新输入。")
- continue
- thing = indexed_bag[choice][0] # 获取选择的物品名称
- # 使用物品逻辑
- if "药" in thing or thing == "狗剩":
- player["HP"] = min(player["HP"] + prop[thing]["HP"], player["最大HP"])
- print(f"{name}使用了{thing},HP恢复了{prop[thing]['HP']}点!")
- elif "提升" in thing:
- stat = list(prop[thing].keys())[0]
- player[stat] += prop[thing][stat]
- print(f"{name}使用了{thing},{stat}提升了{prop[thing][stat]}点!")
- elif "PP" in thing:
- for i, skill in enumerate(player["技能"]):
- print(f"{i + 1}. {skill['招式']} (PP: {skill['PP']}/{skill['最大PP']})")
- print("0. 取消")
- skill_choice = int(input("选择要恢复PP的技能编号:")) - 1
- if skill_choice == -1:
- print("取消恢复PP。")
- return
- if 0 <= skill_choice < len(player["技能"]):
- skill = player["技能"][skill_choice]
- skill["PP"] = min(skill["PP"] + prop[thing]["PP"], skill["最大PP"])
- print(f"{skill['招式']} 的PP恢复了{prop[thing]['PP']}点!")
- else:
- print("无效的选择!请重新输入。")
- continue
- elif "球" in thing:
- probabilty = prop[thing]["概率"] * enemy["速度"] / enemy["HP"] / 3
- print(f"捕获概率为{probabilty:.2f}!")
- if probabilty > 1:
- probabilty = 1
- elif probabilty < 0:
- probabilty = 0
- if random.random() < probabilty:
- print(f"{name}使用了{thing},捕获成功!")
- pokemon.append(enemy)
- bag.extend(enebag)
- print(f"获得了{ene}!")
- print(f"获得了{enebag}!")
- flag = False
- return
- else:
- print("捕获失败!")
- # 减少物品数量
- bag.remove(thing)
- return
- except ValueError:
- print("请输入有效的数字!")
- except IndexError:
- print("选择的物品不存在,请重新选择!")
- def pokey():
- """切换宝可梦"""
- global name, player
- while True:
- try:
- print("你现在拥有的宝可梦:")
- for i, p in enumerate(pokemon):
- print(f"{i + 1}. {p['精灵']} (等级: {p['等级']}, HP: {p['HP']}, 状态: {p['状态']})")
- print("0. 取消")
- poke = int(input("选择宝可梦(输入编号):")) - 1
- if poke == -1:
- print("取消切换宝可梦。")
- return
- if 0 <= poke < len(pokemon) and pokemon[poke]["状态"] == "正常":
- player = pokemon[poke]
- name = player["精灵"]
- print(f"你选择了{player['精灵']}!")
- return
- else:
- print("无效的选择!请重新输入。")
- except ValueError:
- print("请输入有效的数字!")
- def calculate_stats(base_stats, level):
- """根据等级动态计算宝可梦的属性"""
- max_hp = base_stats["HP"] + level * 4 # 每级增加 4 点 HP
- skills = assign_skills(base_stats["属性"])
- return {
- "HP": max_hp,
- "最大HP": max_hp, # 设置最大 HP
- "攻击": base_stats["攻击"] + level * 2, # 每级增加 2 点攻击
- "防御": base_stats["防御"] + level * 2, # 每级增加 2 点防御
- "速度": base_stats["速度"] + level, # 每级增加 1 点速度
- "等级": level,
- "经验值": 0, # 当前经验值
- "升级经验": level * 10, # 升级所需经验值,随等级增加
- "精灵": base_stats["精灵"],
- "属性": base_stats["属性"], # 保留属性列表
- "状态": "正常",
- "技能": skills # 分配技能
- }
- def poke_center():
- """神奇宝贝中心功能"""
- global pokemon
- while True:
- print("\n欢迎来到神奇宝贝中心!")
- print("1. 恢复所有宝可梦的HP和PP")
- print("2. 打开电脑管理系统")
- print("0. 离开神奇宝贝中心")
- choice = int(input("请选择操作:"))
- if choice == 1:
- for p in pokemon:
- base_stats = next(v for k, v in dict.items() if v["精灵"] == p["精灵"])
- p["HP"] = p["最大HP"] # 恢复到最大 HP
- for skill in p["技能"]:
- skill["PP"] = skill["最大PP"] # 恢复到最大 PP
- print("所有宝可梦的HP和PP已恢复!")
- elif choice == 2:
- manage_pc() # 打开电脑管理系统
- elif choice == 0:
- print("离开神奇宝贝中心。")
- break
- else:
- print("无效的选择,请重新输入!")
- def welcome():
- global name, ene, player, enemy, bag, enebag, pokemon
- # 玩家最低等级和最高等级
- min_level = min(p["等级"] for p in pokemon)
- max_level = max(p["等级"] for p in pokemon)
- # 随机选择野生宝可梦
- base_enemy = dict[random.randint(1, len(dict))] # 从 dict 中随机选择一个宝可梦
- # 根据宝可梦的进化等级范围动态调整野生宝可梦的等级
- if base_enemy["精灵"] in evolution_map:
- evolution = evolution_map[base_enemy["精灵"]]
- min_enemy_level = max(1, evolution["进化等级"] - 5) # 进化等级前 5 级
- max_enemy_level = evolution["进化等级"] + 5 # 进化等级后 5 级
- else:
- min_enemy_level = max(1, min_level - 3) # 默认比玩家最低等级低 3 级
- max_enemy_level = min_level + 3 # 默认比玩家最低等级高 3 级
- # 限制野生宝可梦的等级范围
- max_enemy_level = min(max_enemy_level, max_level + 2) # 不超过玩家最高等级 + 2
- if len(pokemon) == 1 and min_level <= 5: # 如果玩家只有一个低等级宝可梦
- max_enemy_level = min(max_enemy_level, 5) # 限制野生宝可梦等级不超过 5
- # 修复:确保 min_enemy_level 不大于 max_enemy_level
- if min_enemy_level > max_enemy_level:
- min_enemy_level, max_enemy_level = max_enemy_level, min_enemy_level
- # 确保野生宝可梦等级在合理范围内
- enemy_level = random.randint(min_enemy_level, max_enemy_level)
- # 动态计算野生宝可梦属性
- enemy = calculate_stats(base_enemy, enemy_level)
- if "技能" not in enemy or not enemy["技能"]: # 如果未分配技能或技能为空
- enemy["技能"] = assign_skills(enemy["属性"]) # 分配技能
- enebag = [list(prop.keys())[random.randint(0, len(prop.keys()) - 1)] for _ in range(5)]
- name = player["精灵"]
- ene = enemy["精灵"]
- print(f"啊!野生的{ene} (等级: {enemy_level}) 跳了出来!")
- # 自动选择队伍中的一号宝可梦
- player = pokemon[0]
- name = player["精灵"]
- print(f"{player['精灵']}!就决定是你了!")
- def manage_pokemon():
- """管理精灵队伍"""
- global pokemon
- while len(pokemon) > 6:
- print("你的队伍已满(最多6个精灵)。请选择要移除的精灵:")
- for i, p in enumerate(pokemon):
- print(f"{i + 1}. {p['精灵']} (HP: {p['HP']})")
- try:
- choice = int(input("选择要移除的精灵编号(输入0取消):")) - 1
- if choice == -1:
- print("取消移除操作。")
- break
- if 0 <= choice < len(pokemon):
- removed = pokemon.pop(choice)
- print(f"已移除精灵:{removed['精灵']}")
- else:
- print("无效的选择,请重新输入!")
- except ValueError:
- print("请输入有效的数字!")
- def save_game():
- """保存游戏进度到文件"""
- save_data = {
- "player": player,
- "enemy": enemy,
- "bag": bag,
- "pokemon": pokemon,
- }
- with open(SAVE_FILE, "w", encoding="utf-8") as f:
- json.dump(save_data, f, ensure_ascii=False, indent=4)
- print("游戏进度已保存!")
- def load_game():
- """加载游戏进度"""
- global player, enemy, bag, pokemon
- if os.path.exists(SAVE_FILE):
- try:
- with open(SAVE_FILE, "r", encoding="utf-8") as f:
- save_data = json.load(f)
- player = save_data["player"]
- enemy = save_data["enemy"]
- bag = save_data["bag"]
- pokemon = save_data["pokemon"]
- print("游戏进度已加载!")
- except json.JSONDecodeError:
- print("保存文件损坏或为空,重新初始化游戏。")
- initialize_game()
- else:
- print("未找到保存的游戏进度,将开始新游戏。")
- initialize_game()
- def assign_skills(pokemon_types):
- """根据宝可梦的属性列表分配技能"""
- skills = []
- # 获取与宝可梦属性相关的技能
- for pokemon_type in pokemon_types:
- if pokemon_type in type_moves:
- for move in random.sample(type_moves[pokemon_type], min(2, len(type_moves[pokemon_type]))): # 每种属性分配最多2个技能
- move_with_pp = move.copy()
- move_with_pp["PP"] = move["默认PP"] # 当前 PP
- move_with_pp["最大PP"] = move["默认PP"] # 最大 PP
- skills.append(move_with_pp)
- # 获取普通系技能作为通用技能
- if "普通" in type_moves:
- for move in random.sample(type_moves["普通"], min(1, len(type_moves["普通"]))): # 分配1个普通系技能
- move_with_pp = move.copy()
- move_with_pp["PP"] = move["默认PP"]
- move_with_pp["最大PP"] = move["默认PP"]
- skills.append(move_with_pp)
- # 随机分配其他属性的技能
- other_types = [t for t in type_moves.keys() if t not in pokemon_types and t != "普通"]
- if other_types:
- random_type = random.choice(other_types) # 随机选择一个其他属性
- for move in random.sample(type_moves[random_type], min(1, len(type_moves[random_type]))): # 分配1个其他属性技能
- move_with_pp = move.copy()
- move_with_pp["PP"] = move["默认PP"]
- move_with_pp["最大PP"] = move["默认PP"]
- skills.append(move_with_pp)
- # 确保技能数量为 4 个,不足时补充普通系技能
- while len(skills) < 4:
- move = random.choice(type_moves["普通"]).copy()
- move["PP"] = move["默认PP"]
- move["最大PP"] = move["默认PP"]
- skills.append(move)
- # 如果技能超过 4 个,随机移除多余的技能
- while len(skills) > 4:
- skills.pop(random.randint(0, len(skills) - 1))
- return skills # 返回技能列表
- def manage_pc():
- """电脑管理系统"""
- global pc_pokemon, pc_bag, pokemon, bag
- while True:
- try:
- print("电脑管理系统:")
- print("1. 查看电脑中的宝可梦")
- print("2. 查看电脑中的物品")
- print("3. 存入宝可梦")
- print("4. 取出宝可梦")
- print("5. 存入物品")
- print("6. 取出物品")
- print("0. 退出电脑管理")
- choice = int(input("请选择操作:"))
- if choice == 0:
- print("退出电脑管理系统。")
- return
- elif choice == 1:
- print("电脑中的宝可梦:")
- if not pc_pokemon:
- print("电脑中没有宝可梦!")
- else:
- for i, p in enumerate(pc_pokemon):
- print(f"{i + 1}. {p['精灵']} (等级: {p['等级']}, HP: {p['HP']}, 状态: {p['状态']})")
- elif choice == 2:
- print("电脑中的物品:")
- if not pc_bag:
- print("电脑中没有物品!")
- else:
- for i, item in enumerate(pc_bag):
- print(f"{i + 1}. {item}")
- elif choice == 3:
- if len(pokemon) <= 1:
- print("队伍中至少需要保留一个宝可梦!")
- continue
- print("你的队伍:")
- for i, p in enumerate(pokemon):
- print(f"{i + 1}. {p['精灵']} (等级: {p['等级']}, HP: {p['HP']}, 状态: {p['状态']})")
- print("0. 取消")
- idx = int(input("选择要存入电脑的宝可梦编号:")) - 1
- if idx == -1:
- print("取消存入宝可梦。")
- continue
- if 0 <= idx < len(pokemon):
- pc_pokemon.append(pokemon.pop(idx))
- print("宝可梦已存入电脑!")
- else:
- print("无效的选择!")
- elif choice == 4:
- if not pc_pokemon:
- print("电脑中没有宝可梦!")
- continue
- print("电脑中的宝可梦:")
- for i, p in enumerate(pc_pokemon):
- print(f"{i + 1}. {p['精灵']} (等级: {p['等级']}, HP: {p['HP']}, 状态: {p['状态']})")
- print("0. 取消")
- idx = int(input("选择要取出的宝可梦编号:")) - 1
- if idx == -1:
- print("取消取出宝可梦。")
- continue
- if 0 <= idx < len(pc_pokemon):
- if len(pokemon) >= 6:
- print("队伍已满,无法取出宝可梦!")
- else:
- pokemon.append(pc_pokemon.pop(idx))
- print("宝可梦已取出!")
- else:
- print("无效的选择!")
- elif choice == 5:
- if not bag:
- print("背包中没有物品!")
- continue
- print("你的背包:")
- for i, item in enumerate(bag):
- print(f"{i + 1}. {item}")
- print("0. 取消")
- idx = int(input("选择要存入电脑的物品编号:")) - 1
- if idx == -1:
- print("取消存入物品。")
- continue
- if 0 <= idx < len(bag):
- pc_bag.append(bag.pop(idx))
- print("物品已存入电脑!")
- else:
- print("无效的选择!")
- elif choice == 6:
- if not pc_bag:
- print("电脑中没有物品!")
- continue
- print("电脑中的物品:")
- for i, item in enumerate(pc_bag):
- print(f"{i + 1}. {item}")
- print("0. 取消")
- idx = int(input("选择要取出的物品编号:")) - 1
- if idx == -1:
- print("取消取出物品。")
- continue
- if 0 <= idx < len(pc_bag):
- bag.append(pc_bag.pop(idx))
- print("物品已取出!")
- else:
- print("无效的选择!")
- else:
- print("无效的选择,请重新输入!")
- except ValueError:
- print("请输入有效的数字!")
- def battle():
- global flag, name, ene, player, enemy, bag, enebag, pokemon
- action = int(input(f"{name} 想做什么呢?\n1.战斗\n2.背包\n3.宝可梦\n4.逃跑\n"))
- if action == 1:
- fight()
- if action == 2:
- baggy()
- if action == 3:
- pokey()
- if action == 4:
- print("成功地逃跑了!")
- flag = False
- return
- if flag == True:
- ene_move = enemy["技能"][random.randint(0, 3)]
- print(f"{ene}使用了{ene_move['招式']}!")
- # 选择第一个属性进行查找
- enemy_type = enemy["属性"][0] if isinstance(enemy["属性"], list) else enemy["属性"]
- player_type = player["属性"][0] if isinstance(player["属性"], list) else player["属性"]
- type_attact = type[enemy_type].get(player_type, 1)
- attact = 0 # 初始化 attact,防止未赋值错误
- if ene_move["威力"] != "-" and ene_move["效果"] == "无特殊效果":
- attact = enemy["攻击"] * type_attact - player["防御"]
- elif ene_move["效果"] == "使对手中毒":
- attact = enemy["攻击"] * type_attact - player["防御"] + 10
- else:
- attact = enemy["攻击"] * type_attact - player["防御"]
- player["HP"] -= attact if attact > 0 else 5
- if type_attact < 1:
- print("收效甚微……")
- elif type_attact > 1:
- print("效果拔群!")
- print(f"{name}受到了", attact, "点伤害!") if attact > 0 else print(f"好像没有什么效果……")
- if player["HP"] <= 0:
- print(f"{name}被打败了!")
- player["状态"] = "濒死" # 标记为濒死状态
- print(f"{name}已进入濒死状态,无法继续战斗!")
- # 检查是否还有可用的宝可梦
- available_pokemon = [p for p in pokemon if p["状态"] == "正常"]
- if not available_pokemon:
- print("所有宝可梦都已濒死!")
- print("游戏结束!")
- sys.exit()
- print("请选择一个新的宝可梦继续战斗:")
- for i, p in enumerate(pokemon):
- print(f"{i + 1}.{p['精灵']} (等级: {p['等级']}, 状态: {p['状态']})")
- poke = int(input("选择宝可梦:")) - 1
- if poke < 0 or poke >= len(pokemon) or pokemon[poke]["状态"] != "正常":
- print("无效的选择!默认使用第一个可用宝可梦。")
- poke = next(i for i, p in enumerate(pokemon) if p["状态"] == "正常")
- player = pokemon[poke]
- name = player["精灵"]
- print(f"你选择了{player['精灵']}!")
- time.sleep(1)
- return
- print(f"{name}剩余HP:", player["HP"])
- else:
- # 战斗胜利后掉落道具
- if random.random() < 0.5: # 50% 概率掉落道具
- dropped_item = random.choice(list(prop.keys()))
- bag.append(dropped_item)
- print(f"战斗胜利!你获得了道具:{dropped_item}")
- # 战斗结束后询问是否进入神奇宝贝中心
- if input("是否进入神奇宝贝中心?(y/n): ").lower() == 'y':
- poke_center()
- def poke_center():
- """神奇宝贝中心功能"""
- global pokemon
- while True:
- print("\n欢迎来到神奇宝贝中心!")
- print("1. 恢复所有宝可梦的HP和PP")
- print("2. 打开电脑管理系统")
- print("0. 离开神奇宝贝中心")
- choice = int(input("请选择操作:"))
- if choice == 1:
- for p in pokemon:
- base_stats = next(v for k, v in dict.items() if v["精灵"] == p["精灵"])
- p["HP"] = p["最大HP"] # 恢复到最大 HP
- for skill in p["技能"]:
- skill["PP"] = skill["最大PP"] # 恢复到最大 PP
- print("所有宝可梦的HP和PP已恢复!")
- elif choice == 2:
- manage_pc() # 打开电脑管理系统
- elif choice == 0:
- print("离开神奇宝贝中心。")
- break
- else:
- print("无效的选择,请重新输入!")
- def initialize_game():
- """初始化游戏状态"""
- global player, bag, pokemon, trainer_name, pc_pokemon, pc_bag
- trainer_name = input("请输入你的名字:")
- print(f"欢迎来到宝可梦世界,{trainer_name}!")
- print("请选择你的初始宝可梦:")
- starters = [
- {'HP': 45, '精灵': '妙蛙种子', '属性': ['草', '毒'], '攻击': 49, '防御': 49, '速度': 45},
- {'HP': 39, '精灵': '小火龙', '属性': ['火'], '攻击': 52, '防御': 43, '速度': 65},
- {'HP': 44, '精灵': '杰尼龟', '属性': ['水'], '攻击': 48, '防御': 65, '速度': 43}
- ]
- for i, starter in enumerate(starters):
- print(f"{i + 1}. {starter['精灵']} (等级: 5)")
- choice = int(input("选择你的宝可梦(输入编号):")) - 1
- if choice < 0 or choice >= len(starters):
- print("无效选择,默认选择妙蛙种子。")
- choice = 0
- player = calculate_stats(starters[choice], 5) # 初始等级为 5
- player["技能"] = assign_skills(player["属性"]) # 分配技能
- bag = [list(prop.keys())[random.randint(0, len(prop.keys()) - 1)] for _ in range(5)]
- pokemon = [player]
- pc_pokemon = [] # 初始化电脑存储的宝可梦
- pc_bag = [] # 初始化电脑存储的物品
- SAVE_FILE = "game_save.json"
- def main():
- global flag
- load_game() # 加载游戏进度
- flag = True
- welcome()
- while True: # 使用无限循环,直到玩家选择退出
- while flag:
- battle()
- manage_pokemon() # 每次战斗后管理精灵队伍
- if input("是否保存游戏进度?(y/n): ").lower() == 'y':
- save_game() # 保存游戏进度
- if input("是否继续游戏?(y/n): ").lower() != 'y':
- print("游戏结束!")
- break
- flag = True # 重置 flag,继续下一场战斗
- welcome() # 开始新的战斗
- main()
复制代码
更新日志:更新了技能,物品,捕捉,升级,进化,神奇宝贝中心和电脑等机制
这个的难度很大,所以攻略在这:开局很难打死别人,所以遇到很强的野生宝可梦时直接抓,大师球不少! |