宝可梦小游戏 V1.1
本帖最后由 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["技能"]
if skill["PP"] <= 0:
print(f"{skill['招式']} 的 PP 已用完,无法使用!")
return
skill["PP"] -= 1# 减少技能的 PP
print(f"{name}使用了{skill['招式']}!")
# 选择第一个属性进行查找
player_type = player["属性"] if isinstance(player["属性"], list) else player["属性"]
enemy_type = enemy["属性"] if isinstance(enemy["属性"], list) else enemy["属性"]
type_attact = 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 == player["精灵"])], player["等级"])
updated_player["技能"] = player["技能"]# 保留原有技能
player.update(updated_player)# 更新属性
# 检查是否可以进化
if player["精灵"] in evolution_map:
evolution = evolution_map]
if player["等级"] >= evolution["进化等级"]:
print(f"{player['精灵']}达到了等级 {evolution['进化等级']},正在进化!")
new_form = evolution["进化形态"]
updated_player = calculate_stats(dict == 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 += 1
else:
bag_summary = 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# 获取选择的物品名称
# 使用物品逻辑
if "药" in thing or thing == "狗剩":
player["HP"] = min(player["HP"] + prop["HP"], player["最大HP"])
print(f"{name}使用了{thing},HP恢复了{prop['HP']}点!")
elif "提升" in thing:
stat = list(prop.keys())
player += prop
print(f"{name}使用了{thing},{stat}提升了{prop}点!")
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["PP"] = min(skill["PP"] + prop["PP"], skill["最大PP"])
print(f"{skill['招式']} 的PP恢复了{prop['PP']}点!")
else:
print("无效的选择!请重新输入。")
continue
elif "球" in thing:
probabilty = prop["概率"] * 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["状态"] == "正常":
player = pokemon
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# 从 dict 中随机选择一个宝可梦
# 根据宝可梦的进化等级范围动态调整野生宝可梦的等级
if base_enemy["精灵"] in evolution_map:
evolution = evolution_map]
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 = for _ in range(5)]
name = player["精灵"]
ene = enemy["精灵"]
print(f"啊!野生的{ene} (等级: {enemy_level}) 跳了出来!")
# 自动选择队伍中的一号宝可梦
player = pokemon
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, min(2, len(type_moves))):# 每种属性分配最多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 =
if other_types:
random_type = random.choice(other_types)# 随机选择一个其他属性
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)
# 确保技能数量为 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["技能"]
print(f"{ene}使用了{ene_move['招式']}!")
# 选择第一个属性进行查找
enemy_type = enemy["属性"] if isinstance(enemy["属性"], list) else enemy["属性"]
player_type = player["属性"] if isinstance(player["属性"], list) else player["属性"]
type_attact = 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 = == "正常"]
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["状态"] != "正常":
print("无效的选择!默认使用第一个可用宝可梦。")
poke = next(i for i, p in enumerate(pokemon) if p["状态"] == "正常")
player = pokemon
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, 5)# 初始等级为 5
player["技能"] = assign_skills(player["属性"])# 分配技能
bag = for _ in range(5)]
pokemon =
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()
更新日志:更新了技能,物品,捕捉,升级,进化,神奇宝贝中心和电脑等机制
这个的难度很大,所以攻略在这:开局很难打死别人,所以遇到很强的野生宝可梦时直接抓,大师球不少! 用户提供的代码存在多处语法错误和逻辑缺陷,以下是主要问题的分析及解决方案:
主要问题清单:
[*]语法错误:精灵属性字段缺失(如'属性': ,)
[*]数据缺失:type_moves字典未定义技能
[*]逻辑错误:fight()函数中比较运算符错误(enemy = player)
[*]变量错误:type_attact应为type_attack,全局变量未声明
[*]函数缺失:calculate_stats()、save_game()等关键函数未实现
基础修复方案:
[*]补充精灵属性:
1: {'精灵': '妙蛙种子', '属性': '草', 'HP': 45...}
4: {'精灵': '小火龙', '属性': '火', 'HP': 39...}
7: {'精灵': '杰尼龟', '属性': '水', 'HP': 44...}
(需补全所有151个精灵的属性)
[*]添加技能数据:
type_moves = {
"普通": ["冲撞", "抓"],
"火": ["火花", "火焰喷射"],
"水": ["水枪", "水炮"]
# 需补全所有属性对应技能
}
[*]修正战斗逻辑:
if enemy['HP'] <= 0:# 原错误代码:enemy = player
print(f"{ene}倒下了!")
# 获取经验值逻辑
exp_gain = enemy.get('经验值', 20)
player['经验值'] += exp_gain
推荐优化方向:
[*]使用面向对象编程(OOP)重构代码
[*]创建Pokemon类管理精灵属性和行为
[*]使用global关键字的代码需改为实例变量
[*]实现完善的存档系统(json序列化)
需要用户明确具体想实现的功能或遇到的报错信息,才能提供更精准的调试帮助。当前代码框架需要大量基础工作才能正常运行。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 恐怖如斯 111
krf
驾到!! 好贴不要停!
复兴fishc!!! 哎呀过奖了,实际上仔细看都是基础的一些代码堆扯起来的,没啥技术含量见笑了 {:10_256:}{:10_256:}上个效果图更好了 手写的??? 这么多行{:5_106:} {:10_254:}
{:10_275:} {:5_109:} 这是什么游戏?是剧本? 头皮发麻 {:10_277:} {:5_99:} 我靠 新人路过 被深深的吓到了。
{:10_245:}{:10_245:}{:10_245:}{:10_245:}{:10_245:}{:10_245:}
NB
页:
[1]
2