python小游戏
2025-06-14 19:42:49
发布于:广东
import random
import time
class Player:
def __init__(self, name):
self.name = name
self.health = 100
self.magic = 100
self.inventory = []
self.gold = 50
self.level = 1
self.xp = 0
self.xp_to_level = 100
def display_stats(self):
print(f"\n=== {self.name}'s 状态 ===")
print(f"生命值: {self.health}/100")
print(f"魔法值: {self.magic}/100")
print(f"金币: {self.gold}")
print(f"等级: {self.level} ({self.xp}/{self.xp_to_level} XP)")
print("物品:", end=" ")
if not self.inventory:
print("无")
else:
print(", ".join(self.inventory))
print("====================\n")
def gain_xp(self, amount):
self.xp += amount
print(f"获得 {amount} XP!")
if self.xp >= self.xp_to_level:
self.level_up()
def level_up(self):
self.level += 1
self.xp -= self.xp_to_level
self.xp_to_level = int(self.xp_to_level * 1.5)
self.health = 100
self.magic = 100
print(f"\n恭喜! 你升到了 {self.level} 级!")
print("生命值和魔法值已恢复满。")
def take_damage(self, amount):
self.health -= amount
if self.health < 0:
self.health = 0
print(f"你受到了 {amount} 点伤害!")
if self.health == 0:
print("你已经死亡...游戏结束!")
exit()
def use_magic(self, amount):
if self.magic >= amount:
self.magic -= amount
return True
else:
print("魔法值不足!")
return False
def add_item(self, item):
self.inventory.append(item)
print(f"获得物品: {item}!")
def remove_item(self, item):
if item in self.inventory:
self.inventory.remove(item)
return True
else:
print(f"你没有 {item}!")
return False
class Game:
def __init__(self):
self.player = None
self.locations = {}
self.npcs = {}
self.items = {}
self.current_location = None
self.game_over = False
def intro(self):
print("欢迎来到《魔法森林的秘密》!")
name = input("请输入你的角色名字: ")
self.player = Player(name)
print(f"\n{self.player.name}, 你是一位年轻的冒险者,听说在古老的魔法森林深处藏着一个惊人的秘密...")
time.sleep(2)
print("你决定进入这片神秘的森林,探索其中的奥秘...")
time.sleep(2)
self.setup_game()
self.current_location = self.locations["入口"]
self.play()
def setup_game(self):
# 设置地点
self.locations = {
"入口": {
"description": "你站在魔法森林的入口。阳光透过树叶洒下斑驳的光影。一条小路通向森林深处。",
"exits": {"北": "古老小径", "东": "小溪边", "南": "返回村庄"},
"events": ["encounter", "search"]
},
"古老小径": {
"description": "这是一条古老的小径,两旁树木参天。空气中弥漫着神秘的气息。",
"exits": {"南": "入口", "西": "神秘洞穴", "北": "森林空地"},
"events": ["encounter", "puzzle"]
},
"小溪边": {
"description": "一条清澈的小溪从森林中流过。溪水清凉见底,溪边生长着各种奇异的植物。",
"exits": {"西": "入口", "北": "瀑布"},
"events": ["encounter", "search", "water"]
},
"神秘洞穴": {
"description": "一个黑暗的洞穴入口。洞口闪烁着微弱的蓝光,仿佛在吸引你进去。",
"exits": {"东": "古老小径"},
"events": ["cave", "treasure"]
},
"森林空地": {
"description": "一片开阔的空地,中央有一棵巨大的古树。树周围环绕着神秘的符文。",
"exits": {"南": "古老小径", "东": "迷雾山谷"},
"events": ["boss", "runes"]
},
"瀑布": {
"description": "一道壮观的瀑布从高处倾泻而下,水花四溅。瀑布后面似乎有一个洞口。",
"exits": {"南": "小溪边"},
"events": ["waterfall", "hidden"]
},
"迷雾山谷": {
"description": "山谷中弥漫着浓密的雾气,视线严重受阻。你能听到奇怪的声音从雾中传来。",
"exits": {"西": "森林空地"},
"events": ["encounter", "fog"]
}
}
# 设置NPCs
self.npcs = {
"老巫师": {
"location": "入口",
"dialogue": [
"欢迎,年轻的冒险者。这片森林充满了魔法和危险。",
"如果你想找到森林的秘密,你需要探索每一个角落。",
"小心森林中的生物,有些是友好的,有些则不是。"
],
"trade": ["治疗药水", "魔法卷轴"]
},
"小精灵": {
"location": "小溪边",
"dialogue": [
"你好呀,陌生人!我是森林的守护者之一。",
"你在寻找森林的秘密吗?也许我能帮你一点小忙...",
"如果你能回答我的谜题,我会给你一份礼物。"
],
"puzzle": {
"question": "什么东西越洗越脏,不洗有人吃,洗了没人吃?",
"answer": "水",
"reward": "魔法钥匙"
}
},
"洞穴守卫": {
"location": "神秘洞穴",
"dialogue": [
"谁允许你进入这个神圣的地方?",
"如果你想通过,必须证明你的价值。",
"回答我的问题,或者用武力通过。"
],
"fight": {
"name": "洞穴守卫",
"health": 50,
"damage": 10,
"xp": 50,
"reward": "宝箱钥匙"
},
"riddle": {
"question": "什么东西有头无颈,有眼无眉,有尾无毛?",
"answer": "鱼",
"reward": "宝箱钥匙"
}
}
}
# 设置物品
self.items = {
"治疗药水": {"description": "恢复50点生命值", "type": "consumable", "effect": 50},
"魔法卷轴": {"description": "恢复30点魔法值", "type": "consumable", "effect": 30},
"魔法钥匙": {"description": "可以打开魔法锁的钥匙", "type": "key", "use_location": "瀑布"},
"宝箱钥匙": {"description": "可以打开宝箱的钥匙", "type": "key", "use_location": "神秘洞穴"},
"魔法石": {"description": "一块散发着神秘能量的石头", "type": "quest", "use_location": "森林空地"}
}
def play(self):
while not self.game_over:
self.display_location()
action = input("\n你想做什么? ").lower().strip()
self.process_action(action)
def display_location(self):
print(f"\n=== {self.current_location} ===")
print(self.locations[self.current_location]["description"])
print("\n出口:", end=" ")
for direction, location in self.locations[self.current_location]["exits"].items():
print(f"{direction} ({location})", end=" | ")
print("\n")
# 检查是否有NPC
for npc, data in self.npcs.items():
if data["location"] == self.current_location:
print(f"你看到了 {npc}.")
def process_action(self, action):
if action.startswith("go ") or action.startswith("move "):
direction = action.split(" ")[1]
self.move(direction)
elif action == "stats":
self.player.display_stats()
elif action == "inventory" or action == "items":
self.display_inventory()
elif action == "use":
item = input("使用什么物品? ")
self.use_item(item)
elif action == "talk":
npc = input("和谁交谈? ")
self.talk_to_npc(npc)
elif action == "search":
self.search_location()
elif action == "help":
self.display_help()
elif action == "quit" or action == "exit":
confirm = input("确定要退出游戏吗? (y/n) ")
if confirm.lower() == "y":
self.game_over = True
print("感谢游玩《魔法森林的秘密》!")
else:
print("未知的命令。输入 'help' 查看可用命令。")
def move(self, direction):
exits = self.locations[self.current_location]["exits"]
if direction in exits:
self.current_location = exits[direction]
print(f"你朝着 {direction} 前进,到达了 {self.current_location}。")
self.trigger_event()
else:
print(f"你不能朝着 {direction} 移动!")
def display_inventory(self):
print("\n=== 物品清单 ===")
if not self.player.inventory:
print("你没有任何物品。")
else:
for i, item in enumerate(self.player.inventory, 1):
print(f"{i}. {item}: {self.items[item]['description']}")
print("================\n")
def use_item(self, item):
if item in self.player.inventory:
item_data = self.items[item]
if item_data["type"] == "consumable":
if item == "治疗药水":
self.player.health = min(100, self.player.health + item_data["effect"])
print(f"你使用了 {item},恢复了 {item_data['effect']} 点生命值!")
elif item == "魔法卷轴":
self.player.magic = min(100, self.player.magic + item_data["effect"])
print(f"你使用了 {item},恢复了 {item_data['effect']} 点魔法值!")
self.player.remove_item(item)
elif item_data["type"] == "key":
if self.current_location == item_data["use_location"]:
if item == "魔法钥匙":
print("你使用魔法钥匙打开了瀑布后面的隐藏通道!")
self.locations["瀑布"]["exits"]["后"] = "隐藏神殿"
if "隐藏神殿" not in self.locations:
self.locations["隐藏神殿"] = {
"description": "这是一个隐藏在瀑布后面的古老神殿。中央有一个祭坛,上面放着一本魔法书。",
"exits": {"前": "瀑布"},
"events": ["final"]
}
elif item == "宝箱钥匙":
print("你使用宝箱钥匙打开了洞穴深处的宝箱!")
self.player.add_item("魔法石")
self.player.gold += 100
print("获得了 100 金币!")
self.player.remove_item(item)
else:
print(f"在这里不能使用 {item}。")
elif item_data["type"] == "quest":
if self.current_location == "森林空地":
print("你将魔法石放在了古树的祭坛上...")
time.sleep(2)
print("一道强光闪过,古树开始说话...")
time.sleep(2)
print("古树告诉你森林的秘密,并赋予你强大的魔法力量!")
self.player.level_up()
self.player.add_item("森林之心")
print("你获得了终极物品: 森林之心!")
print("现在你可以挑战森林深处的最终BOSS了!")
else:
print(f"在这里不能使用 {item}。")
else:
print(f"你没有 {item}!")
def talk_to_npc(self, npc):
if npc in self.npcs and self.npcs[npc]["location"] == self.current_location:
dialogue = self.npcs[npc]["dialogue"]
print(f"\n[{npc}]: {random.choice(dialogue)}")
# 特殊NPC互动
if npc == "小精灵":
answer = input(f"\n[{npc}]: {self.npcs[npc]['puzzle']['question']} ")
if answer.lower() == self.npcs[npc]['puzzle']['answer'].lower():
print(f"\n[{npc}]: 正确! 这是给你的奖励。")
self.player.add_item(self.npcs[npc]["puzzle"]["reward"])
else:
print(f"\n[{npc}]: 错误! 再试一次吧。")
elif npc == "洞穴守卫":
choice = input("\n你想 [1] 回答问题 还是 [2] 战斗? ")
if choice == "1":
answer = input(f"\n[{npc}]: {self.npcs[npc]['riddle']['question']} ")
if answer.lower() == self.npcs[npc]['riddle']['answer'].lower():
print(f"\n[{npc}]: 正确! 你可以通过。")
self.player.add_item(self.npcs[npc]["riddle"]["reward"])
else:
print(f"\n[{npc}]: 错误! 准备战斗吧!")
self.fight(self.npcs[npc]["fight"])
elif choice == "2":
print(f"\n[{npc}]: 愚蠢的选择! 准备受死吧!")
self.fight(self.npcs[npc]["fight"])
else:
print(f"\n[{npc}]: 犹豫不决只会让你送命!")
elif npc == "老巫师":
print("\n[老巫师]: 我这里有一些物品可以卖给你:")
for item in self.npcs[npc]["trade"]:
if item == "治疗药水":
price = 30
elif item == "魔法卷轴":
price = 25
print(f"- {item} ({price} 金币)")
buy = input("你想买什么? (输入物品名称,或者 '不买') ")
if buy in self.npcs[npc]["trade"]:
if buy == "治疗药水":
price = 30
elif buy == "魔法卷轴":
price = 25
if self.player.gold >= price:
self.player.gold -= price
self.player.add_item(buy)
print(f"你购买了 {buy},花费了 {price} 金币。")
else:
print("你的金币不够!")
else:
print(f"这里没有 {npc}!")
def search_location(self):
if "search" in self.locations[self.current_location]["events"]:
print("你仔细搜索了周围...")
time.sleep(1)
rand = random.random()
if rand < 0.3: # 30%概率找到物品
items = ["治疗药水", "魔法卷轴", "金币"]
found = random.choice(items)
if found == "金币":
amount = random.randint(10, 30)
self.player.gold += amount
print(f"你找到了 {amount} 金币!")
else:
self.player.add_item(found)
elif rand < 0.6: # 30%概率遇到陷阱
damage = random.randint(5, 15)
self.player.take_damage(damage)
else: # 40%概率什么都没找到
print("但是什么也没找到。")
else:
print("这里没有什么可搜索的。")
def trigger_event(self):
events = self.locations[self.current_location]["events"]
if not events:
return
rand = random.random()
if rand < 0.4: # 40%概率触发事件
event = random.choice(events)
if event == "encounter":
self.encounter()
elif event == "puzzle":
self.solve_puzzle()
elif event == "water":
self.water_event()
elif event == "cave":
self.cave_event()
elif event == "treasure":
self.find_treasure()
elif event == "boss":
if "森林之心" in self.player.inventory:
self.final_boss()
else:
print("你感到一股强大的力量阻止你前进...")
print("你需要找到森林之心才能挑战这里的守护者。")
elif event == "runes":
print("你看到了环绕古树的神秘符文...")
choice = input("你想研究它们吗? (y/n) ")
if choice.lower() == "y":
print("你花了一些时间研究符文,获得了一些知识...")
self.player.gain_xp(20)
elif event == "waterfall":
print("瀑布的声音震耳欲聋...")
if "魔法钥匙" not in self.player.inventory:
print("你注意到瀑布后面似乎有一个隐藏的入口,但被某种魔法挡住了。")
elif event == "hidden":
print("你发现了一个隐藏的壁龛...")
time.sleep(1)
print("里面有一些古老的文字...")
time.sleep(1)
print("你无法完全理解它们的含义,但感觉它们与森林的秘密有关。")
elif event == "final":
print("你找到了传说中的魔法书...")
time.sleep(1)
print("当你翻开它的第一页时,一股强大的能量涌入你的身体...")
time.sleep(2)
print("你获得了森林的全部知识,揭开了魔法森林的秘密!")
time.sleep(2)
print("恭喜你! 你完成了《魔法森林的秘密》的冒险!")
self.game_over = True
def encounter(self):
creatures = ["森林精灵", "巨型蜘蛛", "魔法松鼠", "狼人", "树精"]
creature = random.choice(creatures)
if creature == "森林精灵":
print("你遇到了一个友好的森林精灵!")
rand = random.random()
if rand < 0.5:
print("精灵给了你一份礼物!")
self.player.add_item(random.choice(["治疗药水", "魔法卷轴"]))
else:
print("精灵告诉你一些关于森林的秘密...")
self.player.gain_xp(15)
else:
print(f"你遇到了一只 {creature}!")
fight_data = {
"name": creature,
"health": random.randint(15, 40),
"damage": random.randint(5, 15),
"xp": random.randint(10, 30)
}
if creature == "狼人":
fight_data["health"] = 60
fight_data["damage"] = 15
fight_data["xp"] = 50
fight_data["reward"] = "狼人毛皮"
elif creature == "树精":
fight_data["health"] = 80
fight_data["damage"] = 10
fight_data["xp"] = 60
fight_data["reward"] = "树精种子"
choice = input("你想 [1] 战斗 还是 [2] 逃跑? ")
if choice == "1":
self.fight(fight_data)
elif choice == "2":
if random.random() < 0.7: # 70%概率成功逃跑
print("你成功逃跑了!")
else:
print("你没能逃脱!")
self.fight(fight_data)
else:
print("无效的选择! 你被迫战斗...")
self.fight(fight_data)
def solve_puzzle(self):
puzzles = [
{
"question": "什么东西越洗越脏,不洗有人吃,洗了没人吃?",
"answer": "水",
"reward": "小宝藏"
},
{
"question": "什么东西有头无颈,有眼无眉,有尾无毛?",
"answer": "鱼",
"reward": "小宝藏"
},
{
"question": "什么东西越生气,它就越大?",
"answer": "脾气",
"reward": "小宝藏"
}
]
puzzle = random.choice(puzzles)
print(f"你遇到了一个谜题: {puzzle['question']}")
answer = input("你的答案是: ")
if answer.lower() == puzzle["answer"].lower():
print("正确! 你解开了谜题!")
if puzzle["reward"] == "小宝藏":
gold = random.randint(20, 50)
self.player.gold += gold
print(f"你获得了 {gold} 金币!")
self.player.gain_xp(20)
else:
print(f"错误! 正确答案是: {puzzle['answer']}")
print("你受到了谜题的反噬,损失了一些生命值!")
self.player.take_damage(10)
def water_event(self):
print("你来到了小溪边...")
choice = input("你想 [1] 喝水 还是 [2] 探索溪水? ")
if choice == "1":
if random.random() < 0.2: # 20%概率有毒
print("这水似乎有毒! 你感到不适...")
self.player.take_damage(15)
else:
print("你喝了清凉的溪水,感到精神焕发!")
self.player.health = min(100, self.player.health + 20)
print("你恢复了 20 点生命值!")
elif choice == "2":
if random.random() < 0.6: # 60%概率找到东西
print("你在溪水中发现了一个闪亮的东西!")
self.player.add_item("金币")
self.player.gold += random.randint(10, 30)
else:
print("你在溪水中搜索了一番,但什么也没找到。")
else:
print("你不小心滑进了水里!")
self.player.take_damage(5)
print("你受到了 5 点伤害!")
def cave_event(self):
print("你进入了黑暗的洞穴...")
if "火把" not in self.player.inventory:
print("里面非常黑暗,你几乎什么也看不见...")
choice = input("你想 [1] 继续前进 还是 [2] 返回? ")
if choice == "1":
if random.random() < 0.4: # 40%概率摔倒受伤
print("你在黑暗中摔倒了!")
self.player.take_damage(10)
else:
print("你小心翼翼地前进,没有发生意外。")
else:
print("你决定返回洞口。")
else:
print("你点燃了火把,照亮了周围...")
print("你在洞穴的墙壁上发现了一些古老的符号...")
print("它们似乎在指引你走向深处...")
def find_treasure(self):
print("你发现了一个宝箱!")
if "宝箱钥匙" in self.player.inventory:
print("你用宝箱钥匙打开了宝箱!")
gold = random.randint(50, 100)
self.player.gold += gold
print(f"你获得了 {gold} 金币!")
if random.random() < 0.5:
self.player.add_item(random.choice(["治疗药水", "魔法卷轴", "魔法钥匙"]))
else:
print("宝箱被锁上了,你需要找到钥匙。")
def fight(self, enemy):
print(f"\n=== 战斗: {enemy['name']} ===")
enemy_health = enemy["health"]
while enemy_health > 0 and self.player.health > 0:
print(f"\n你的生命值: {self.player.health}")
print(f"{enemy['name']} 的生命值: {enemy_health}")
print("\n[1] 普通攻击")
print("[2] 魔法攻击 (消耗 15 魔法值)")
print("[3] 使用物品")
print("[4] 尝试逃跑")
choice = input("你的选择: ")
if choice == "1":
damage = random.randint(5, 15)
print(f"你对 {enemy['name']} 造成了 {damage} 点伤害!")
enemy_health -= damage
if enemy_health > 0:
enemy_damage = random.randint(1, enemy["damage"])
print(f"{enemy['name']} 对你造成了 {enemy_damage} 点伤害!")
self.player.take_damage(enemy_damage)
elif choice == "2":
if self.player.use_magic(15):
damage = random.randint(15, 25)
print(f"你对 {enemy['name']} 造成了 {damage} 点魔法伤害!")
enemy_health -= damage
if enemy_health > 0:
enemy_damage = random.randint(1, enemy["damage"])
print(f"{enemy['name']} 对你造成了 {enemy_damage} 点伤害!")
self.player.take_damage(enemy_damage)
else:
print(f"{enemy['name']} 趁你分神发动了攻击!")
enemy_damage = random.randint(1, enemy["damage"])
self.player.take_damage(enemy_damage)
elif choice == "3":
self.display_inventory()
item = input("使用什么物品? (或者 '取消') ")
if item != "取消":
self.use_item(item)
elif choice == "4":
if random.random() < 0.5: # 50%概率成功逃跑
print("你成功逃跑了!")
return
else:
print("你没能逃脱!")
enemy_damage = random.randint(1, enemy["damage"])
print(f"{enemy['name']} 对你造成了 {enemy_damage} 点伤害!")
self.player.take_damage(enemy_damage)
else:
print("无效的选择! 你浪费了一回合。")
enemy_damage = random.randint(1, enemy["damage"])
print(f"{enemy['name']} 对你造成了 {enemy_damage} 点伤害!")
self.player.take_damage(enemy_damage)
if enemy_health <= 0:
print(f"\n你击败了 {enemy['name']}!")
self.player.gain_xp(enemy["xp"])
if "reward" in enemy:
self.player.add_item(enemy["reward"])
print(f"你获得了 {enemy['reward']}!")
def final_boss(self):
print("\n=== 最终BOSS战: 森林守护者 ===")
print("你面对的是守护森林秘密的古老存在!")
enemy = {
"name": "森林守护者",
"health": 200,
"damage": 20,
"xp": 200
}
enemy_health = enemy["health"]
while enemy_health > 0 and self.player.health > 0:
print(f"\n你的生命值: {self.player.health}")
print(f"魔法值: {self.player.magic}")
print(f"{enemy['name']} 的生命值: {enemy_health}")
print("\n[1] 普通攻击")
print("[2] 强力魔法攻击 (消耗 30 魔法值)")
print("[3] 使用物品")
print("[4] 使用森林之心 (只能使用一次)")
choice = input("你的选择: ")
if choice == "1":
damage = random.randint(10, 20)
print(f"你对 {enemy['name']} 造成了 {damage} 点伤害!")
enemy_health -= damage
if enemy_health > 0:
enemy_damage = random.randint(15, 25)
print(f"{enemy['name']} 对你造成了 {enemy_damage} 点伤害!")
self.player.take_damage(enemy_damage)
elif choice == "2":
if self.player.use_magic(30):
damage = random.randint(25, 40)
print(f"你对 {enemy['name']} 造成了 {damage} 点魔法伤害!")
enemy_health -= damage
if enemy_health > 0:
enemy_damage = random.randint(15, 25)
print(f"{enemy['name']} 对你造成了 {enemy_damage} 点伤害!")
self.player.take_damage(enemy_damage)
else:
print(f"{enemy['name']} 趁你分神发动了攻击!")
enemy_damage = random.randint(15, 25)
self.player.take_damage(enemy_damage)
elif choice == "3":
self.display_inventory()
item = input("使用什么物品? (或者 '取消') ")
if item != "取消":
self.use_item(item)
elif choice == "4":
if "森林之心" in self.player.inventory:
print("你激活了森林之心的力量!")
damage = 100
print(f"你对 {enemy['name']} 造成了 {damage} 点致命伤害!")
enemy_health -= damage
self.player.remove_item("森林之心")
if enemy_health > 0:
enemy_damage = random.randint(10, 15)
print(f"{enemy['name']} 对你造成了 {enemy_damage} 点伤害!")
self.player.take_damage(enemy_damage)
else:
print("你没有森林之心!")
enemy_damage = random.randint(15, 25)
print(f"{enemy['name']} 对你造成了 {enemy_damage} 点伤害!")
self.player.take_damage(enemy_damage)
else:
print("无效的选择! 你浪费了一回合。")
enemy_damage = random.randint(15, 25)
print(f"{enemy['name']} 对你造成了 {enemy_damage} 点伤害!")
self.player.take_damage(enemy_damage)
if enemy_health <= 0:
print(f"\n你击败了 {enemy['name']}!")
self.player.gain_xp(enemy["xp"])
print("森林的秘密终于被揭开了...")
time.sleep(2)
print("你成为了这片魔法森林的新守护者!")
time.sleep(2)
print("\n恭喜你完成了游戏!")
self.game_over = True
def display_help(self):
print("\n=== 帮助 ===")
print("go [方向] - 向指定方向移动 (例如: go north)")
print("stats - 查看你的状态")
print("inventory/items - 查看你的物品")
print("use [物品] - 使用物品")
print("talk [NPC名称] - 与NPC交谈")
print("search - 搜索当前地点")
print("help - 显示此帮助菜单")
print("quit/exit - 退出游戏")
print("================\n")
if __name__ == "__main__":
game = Game()
game.intro()
全部评论 1
这是c++版的:
#include <iostream> #include <string> #include <vector> #include <map> #include <random> #include <ctime> #include <algorithm> #include <chrono> #include <thread> using namespace std; // 随机数生成器 random_device rd; mt19937 gen(rd()); // Player类定义 class Player { private: string name; int health; int maxHealth; int magic; int maxMagic; vector<string> inventory; int gold; int level; int xp; int xpToLevel; public: Player(string playerName) : name(playerName) { health = 100; maxHealth = 100; magic = 100; maxMagic = 100; gold = 50; level = 1; xp = 0; xpToLevel = 100; } // 显示玩家状态 void displayStats() { cout << "\n=== " << name << "'s 状态 ===" << endl; cout << "生命值: " << health << "/" << maxHealth << endl; cout << "魔法值: " << magic << "/" << maxMagic << endl; cout << "金币: " << gold << endl; cout << "等级: " << level << " (" << xp << "/" << xpToLevel << " XP)" << endl; cout << "物品: "; if (inventory.empty()) { cout << "无" << endl; } else { for (size_t i = 0; i < inventory.size(); i++) { cout << inventory[i]; if (i < inventory.size() - 1) cout << ", "; } cout << endl; } cout << "====================\n" << endl; } // 获得经验值 void gainXp(int amount) { xp += amount; cout << "获得 " << amount << " XP!" << endl; if (xp >= xpToLevel) { levelUp(); } } // 升级 void levelUp() { level++; xp -= xpToLevel; xpToLevel = int(xpToLevel * 1.5); health = maxHealth; magic = maxMagic; cout << "\n恭喜! 你升到了 " << level << " 级!" << endl; cout << "生命值和魔法值已恢复满。" << endl; }
11小时前 来自 广东
0// 受到伤害 void takeDamage(int amount) { health -= amount; if (health < 0) { health = 0; } cout << "你受到了 " << amount << " 点伤害!" << endl; if (health == 0) { cout << "你已经死亡...游戏结束!" << endl; exit(0); } } // 使用魔法 bool useMagic(int amount) { if (magic >= amount) { magic -= amount; return true; } else { cout << "魔法值不足!" << endl; return false; } } // 添加物品 void addItem(string item) { inventory.push_back(item); cout << "获得物品: " << item << "!" << endl; } // 移除物品 bool removeItem(string item) { auto it = find(inventory.begin(), inventory.end(), item); if (it != inventory.end()) { inventory.erase(it); return true; } else { cout << "你没有 " << item << "!" << endl; return false; } } // Getter方法 string getName() const { return name; } int getHealth() const { return health; } int getMagic() const { return magic; } int getGold() const { return gold; } const vector<string>& getInventory() const { return inventory; } bool hasItem(string item) const { return find(inventory.begin(), inventory.end(), item) != inventory.end(); } }; // 游戏类定义 class Game { private: Player* player; map<string, map<string, any>> locations; // 地点数据 map<string, map<string, any>> npcs; // NPC数据 map<string, map<string, any>> items; // 物品数据 string currentLocation; bool gameOver; // 工具函数 - 生成随机数 int randomInt(int min, int max) { uniform_int_distribution<> dis(min, max); return dis(gen); } // 暂停函数,模拟Python的time.sleep void sleep(int seconds) { this_thread::sleep_for(chrono::seconds(seconds)); }
10小时前 来自 广东
0public: Game() : player(nullptr), gameOver(false) {} ~Game() { if (player) { delete player; } } // 游戏介绍 void intro() { cout << "欢迎来到《魔法森林的秘密》!" << endl; string name; cout << "请输入你的角色名字: "; cin >> name; player = new Player(name); cout << "\n" << player->getName() << ", 你是一位年轻的冒险者,听说在古老的魔法森林深处藏着一个惊人的秘密..." << endl; sleep(2); cout << "你决定进入这片神秘的森林,探索其中的奥秘..." << endl; sleep(2); setupGame(); currentLocation = "入口"; play(); } // 设置游戏数据 void setupGame() { // 设置地点 locations = { {"入口", { {"description", "你站在魔法森林的入口。阳光透过树叶洒下斑驳的光影。一条小路通向森林深处。"}, {"exits", map<string, string>{{"北", "古老小径"}, {"东", "小溪边"}, {"南", "返回村庄"}}}, {"events", vector<string>{"encounter", "search"}} }}, {"古老小径", { {"description", "这是一条古老的小径,两旁树木参天。空气中弥漫着神秘的气息。"}, {"exits", map<string, string>{{"南", "入口"}, {"西", "神秘洞穴"}, {"北", "森林空地"}}}, {"events", vector<string>{"encounter", "puzzle"}} }}, {"小溪边", { {"description", "一条清澈的小溪从森林中流过。溪水清凉见底,溪边生长着各种奇异的植物。"}, {"exits", map<string, string>{{"西", "入口"}, {"北", "瀑布"}}}, {"events", vector<string>{"encounter", "search", "water"}} }}, {"神秘洞穴", { {"description", "一个黑暗的洞穴入口。洞口闪烁着微弱的蓝光,仿佛在吸引你进去。"}, {"exits", map<string, string>{{"东", "古老小径"}}}, {"events", vector<string>{"cave", "treasure"}} }},
10小时前 来自 广东
0{"森林空地", { {"description", "一片开阔的空地,中央有一棵巨大的古树。树周围环绕着神秘的符文。"}, {"exits", map<string, string>{{"南", "古老小径"}, {"东", "迷雾山谷"}}}, {"events", vector<string>{"boss", "runes"}} }}, {"瀑布", { {"description", "一道壮观的瀑布从高处倾泻而下,水花四溅。瀑布后面似乎有一个洞口。"}, {"exits", map<string, string>{{"南", "小溪边"}}}, {"events", vector<string>{"waterfall", "hidden"}} }}, {"迷雾山谷", { {"description", "山谷中弥漫着浓密的雾气,视线严重受阻。你能听到奇怪的声音从雾中传来。"}, {"exits", map<string, string>{{"西", "森林空地"}}}, {"events", vector<string>{"encounter", "fog"}} }} }; // 设置NPCs npcs = { {"老巫师", { {"location", "入口"}, {"dialogue", vector<string>{ "欢迎,年轻的冒险者。这片森林充满了魔法和危险。", "如果你想找到森林的秘密,你需要探索每一个角落。", "小心森林中的生物,有些是友好的,有些则不是。" }}, {"trade", vector<string>{"治疗药水", "魔法卷轴"}} }}, {"小精灵", { {"location", "小溪边"}, {"dialogue", vector<string>{ "你好呀,陌生人!我是森林的守护者之一。", "你在寻找森林的秘密吗?也许我能帮你一点小忙...", "如果你能回答我的谜题,我会给你一份礼物。" }}, {"puzzle", map<string, any>{ {"question", "什么东西越洗越脏,不洗有人吃,洗了没人吃?"}, {"answer", "水"}, {"reward", "魔法钥匙"} }} }}, {"洞穴守卫", { {"location", "神秘洞穴"}, {"dialogue", vector<string>{ "谁允许你进入这个神圣的地方?", "如果你想通过,必须证明你的价值。", "回答我的问题,或者用武力通过。" }}, {"fight", map<string, any>{ {"name", "洞穴守卫"}, {"health", 50}, {"damage", 10}, {"xp", 50},
10小时前 来自 广东
0
有帮助,赞一个