請使用 Python 開發一個「棒子老虎雞蟲」猜拳遊戲,這是一個台灣傳統的猜拳遊戲,玩家與電腦對戰。
遊戲包含四個元素,勝負關係如下:
- 🥢 棒子 打敗 🐯 老虎
- 🐯 老虎 吃掉 🐓 公雞
- 🐓 公雞 啄食 🐛 蟲子
- 🐛 蟲子 蛀壞 🥢 棒子
形成一個循環的勝負關係。
- 玩家可以選擇 1-4 對應四個元素
- 新增選項 0 用於離開遊戲
- 輸入範圍:0-4
- 玩家輸入選擇(0-4)
- 如果輸入 0,顯示統計資料後離開程式
- 如果輸入 1-4,電腦隨機選擇一個元素
- 立即顯示雙方選擇和勝負結果
- 勝負或平手後直接繼續下一輪(不需要按 Enter 或詢問是否繼續)
- 循環執行直到玩家選擇 0 離開
遊戲過程中持續記錄:
- 總共猜拳次數
- 玩家獲勝次數
- 電腦獲勝次數
- 平手次數
當玩家選擇 0 離開時,顯示完整的戰績統計。
- 檢查輸入是否為數字
- 檢查數字是否在 0-4 範圍內
- 對於無效輸入,顯示友善的錯誤訊息並重新要求輸入
使用表情符號讓遊戲更生動:
- 1: 🥢 棒子
- 2: 🐯 老虎
- 3: 🐓 公雞
- 4: 🐛 蟲子
結果訊息:
- 玩家獲勝:🎉 你贏了!
- 電腦獲勝:💻 電腦贏了!
- 平手:🤝 平手!
- 程式語言:Python 3
- 使用模組:僅使用標準函式庫(random)
- 資料結構:
- 使用字典存儲選項對應的表情符號
- 使用字典映射勝負關係
- 錯誤處理:
- 使用 try-except 處理 ValueError(非數字輸入)
- 使用條件判斷檢查數字範圍
import random
# 定義選項字典
choices = {1: "🥢棒子", 2: "🐯老虎", 3: "🐓公雞", 4: "🐛蟲子"}
# 定義勝負關係字典(誰贏誰)
win_map = {...}
# 主遊戲函數
def play_game():
# 初始化計數器
player_win = 0
computer_win = 0
tie_count = 0
# 主遊戲迴圈
while True:
# 1. 取得使用者輸入(含錯誤處理)
# 2. 如果輸入 0,顯示統計並離開
# 3. 電腦隨機選擇
# 4. 判斷勝負
# 5. 更新計數器
# 6. 直接繼續(不需要詢問或等待)
# 執行遊戲
play_game()請選擇 (0.離開 1.🥢棒子 2.🐯老虎 3.🐓公雞 4.🐛蟲子): 1
你選擇: 🥢棒子,電腦選擇: 🐯老虎
🎉 你贏了!
請選擇 (0.離開 1.🥢棒子 2.🐯老虎 3.🐓公雞 4.🐛蟲子): 2
你選擇: 🐯老虎,電腦選擇: 🥢棒子
💻 電腦贏了!
請選擇 (0.離開 1.🥢棒子 2.🐯老虎 3.🐓公雞 4.🐛蟲子): 3
你選擇: 🐓公雞,電腦選擇: 🐓公雞
🤝 平手!
請選擇 (0.離開 1.🥢棒子 2.🐯老虎 3.🐓公雞 4.🐛蟲子): 0
📊 遊戲結束,戰績統計:
🎮 總共猜拳 3 次
✅ 你贏了 1 次
💻 電腦贏了 1 次
🤝 平手 1 次
👋 謝謝遊玩!
請選擇 (0.離開 1.🥢棒子 2.🐯老虎 3.🐓公雞 4.🐛蟲子): 5
⚠️ 輸入錯誤,請選擇 0-4
請選擇 (0.離開 1.🥢棒子 2.🐯老虎 3.🐓公雞 4.🐛蟲子): abc
⚠️ 請輸入數字 0-4
- ❌ 不要在平手時要求按 Enter 繼續
- ❌ 不要在勝負後詢問「是否再玩一次」
- ✅ 要讓遊戲流程順暢,勝負後直接進入下一輪
- ✅ 要在玩家選擇 0 時才顯示統計並離開
- ✅ 要使用表情符號讓介面更友善
- ✅ 要完整記錄所有對局(包含平手)的統計
將程式儲存為:mora-copilot.py
- 測試每種選項的勝負判定是否正確
- 測試平手情況是否正確計數
- 測試輸入 0 能否正確顯示統計並離開
- 測試無效輸入的錯誤處理
- 測試統計數字是否準確(總次數 = 玩家勝 + 電腦勝 + 平手)
- 測試遊戲流程是否順暢(無不必要的暫停或詢問)