### 完整設計範例
```python=
import random
def adventure():
# 主冒險流程函式,隨機決定事件類型
global HP, saturation
print("跋山涉水中...")
encounter = random.randint(1, 4) # 隨機選擇事件類型
match encounter:
case 1:
fightEnemy() # 遇敵戰鬥
case 2:
luckyFound() # 發現好東西
case 3:
travel() # 長途跋涉
case 4:
merchantEncounter() # 遇到商人
def fightEnemy():
# 處理與敵人的戰鬥事件
global HP, ATK, money
print("前方有個可疑的生物出現,它看起來具有威脅!")
enemy_attack = random.randint(1, 5) # 隨機設定敵人攻擊力
enemy_health = random.randint(3, 8) # 隨機設定敵人血量
print(f"敵人攻擊力:{enemy_attack},血量:{enemy_health}")
action = input("選擇行動:戰鬥(輸入1) 或 逃跑(輸入2):")
if action == "1":
# 戰鬥過程
while enemy_health > 0 and HP > 0:
print("你揮動武器進行攻擊!")
enemy_health -= ATK # 減少敵人血量
if enemy_health <= 0:
loot = random.randint(1, 6) # 隨機獲得戰利品
print(f"你打敗了敵人!獲得戰利品:金幣+{loot}")
money += loot # 增加金幣
break
print(f"敵人反擊!你的血量- {enemy_attack}")
HP -= enemy_attack # 減少玩家血量
if HP <= 0:
print("你被敵人打敗了...")
break
elif action == "2":
# 逃跑處理
print("你匆忙逃跑,但還是被敵人狠狠砍了一刀。血量-5")
HP -= 5
else:
# 錯誤選擇的處罰
print("錯誤的選擇,敵人趁你猶豫時發起攻擊!血量-9")
HP -= 9
def luckyFound():
# 處理發現好東西的事件
global money, HP, ATK, saturation
print("前方似乎有什麼好東西!")
event = random.randint(1, 3) # 隨機選擇好事事件
match event:
case 1:
print("你發現了一柄閃亮亮完好無損的長劍,攻擊力+1")
ATK += 1 # 增加攻擊力
case 2:
print("你撿到了一堆從天上掉下來的麵包,飽食度+10")
saturation += 10 # 增加飽食度
case 3:
print("你發現了一個裝滿金幣的寶箱,金幣+10")
money += 10 # 增加金幣
def travel():
# 處理長途跋涉的事件
global saturation
print("你翻越了一座險惡了高山,好累!飽食度-1")
saturation -= 1 # 減少飽食度
def merchantEncounter():
# 處理與商人交易的事件
global money, HP, saturation
print("你遇到了一位旅行商人,他願意與你交易。")
print("1. 購買補血藥水(5金幣,血量+5)")
print("2. 購買乾糧(3金幣,飽食度+2)")
print("3. 離開")
choice = input("選擇行動:")
if choice == "1" and money >= 5:
# 購買補血藥水
print("你購買了補血藥水,血量+5")
money -= 5
HP += 5
elif choice == "2" and money >= 3:
# 購買乾糧
print("你購買了乾糧,飽食度+2")
money -= 3
saturation += 2
elif choice == "3":
# 選擇離開
print("你選擇繼續冒險。")
else:
# 處理無效選擇
print("金幣不足或無效選擇,交易失敗。")
# 初始化遊戲狀態
random.seed()
money, HP, ATK, saturation, day = 10, 10, 1, 10, 0
print(f"目前 金幣{money}枚 血量{HP}/10滴 攻擊力{ATK}點 飽食度{saturation*10}%")
nothing = input("按Enter繼續...")
# 遊戲主迴圈
while True:
day += 1
print(f"第{day}天")
adventure() # 每天進行一次冒險
if HP <= 0: # 死亡結束遊戲
print("你因致命傷而死...遊戲結束")
break
print("夜幕降臨")
print("辛苦了一天,有點餓。飽食度-1")
saturation -= 1 # 每晚消耗飽食度
# 根據飽食度影響血量恢復
if saturation <= 3: # 飽食度過低
print("餓的睡不好,HP+1")
HP += 1
else:
print("一覺好眠,HP+3")
HP += 3
# 控制血量上限
if HP > 10:
HP = 10
# 控制飽食度範圍
if saturation > 10:
saturation = 10
elif saturation <= 0:
print("你死於飢餓...遊戲結束")
break
print(f"目前 金幣{money}枚 血量{HP}滴 攻擊力{ATK}點 飽食度{saturation*10}%")
print("想回家了?還是繼續冒險")
type = input("回家輸入1,冒險輸入2")
if type == "1":
break # 玩家選擇回家
else:
continue
# 結算階段
if HP > 0:
print(f"你最終獲得{money}枚金幣 存活{day}天")
if money > 10:
print("發財了")
if money + day > 50:
print("總評分:S")
elif money + day > 40:
print("總評分:A")
else:
print("總評分:B")
else:
print("冒險使人貧窮")
print("總評分:C")
else:
print("屍骨無存")
print("總評分:D")
```