steveyehtw's picture
Use flexible lesson-based course progress
60dfd5a
Raw History Blame Contribute Delete
2.77 kB
"""Lesson 2:校園謎案調查局 Starter。
先完成 TODO 1~4。程式必須能反覆探索、收集線索、查看證物並提出推理。
"""
CASE_TITLE = "消失的校徽"
LOCATIONS = {
"1": {
"name": "六年一班教室",
"scene": "展示櫃半開,窗戶也沒有關好。",
"evidence": "窗框上的藍色纖維",
},
"2": {
"name": "操場司令台",
"scene": "地面剛拖過,留下一道彎向圖書館的輪痕。",
"evidence": "沾著亮粉的推車輪痕",
},
"3": {
"name": "圖書館",
"scene": "清潔推車停在書架旁,後方似乎有東西反光。",
"evidence": "卡在推車後方的校徽",
},
}
evidence_bag = []
def investigate(location_id):
"""調查地點並將新線索放入證物袋。"""
# TODO 1:確認 location_id 是否存在於 LOCATIONS。
# TODO 2:顯示地點名稱與現場描述。
# TODO 3:線索尚未取得時才 append 到 evidence_bag。
print("這個調查功能還沒完成。")
def show_evidence():
"""列出目前取得的所有證物。"""
# TODO 4:沒有證物時顯示提示;否則以 1 開始編號列出。
print("證物袋功能還沒完成。")
def make_deduction():
"""取得足夠證物後,讓玩家選擇真相。"""
if len(evidence_bag) < 3:
print(f"證物不足:目前 {len(evidence_bag)}/3。再去調查吧!")
return False
print("\n哪一個說法最符合所有證物?")
print("1. 有同學故意把校徽藏在圖書館")
print("2. 風吹起校徽,清潔推車不小心把它帶到圖書館")
print("3. 校徽從一開始就放在圖書館")
answer = input("你的推理:").strip()
# TODO 5(Checkpoint C):判斷答案,正確時回傳 True。
print("推理判定還沒完成。")
return False
def show_menu():
print(f"\n=== 校園謎案調查局:{CASE_TITLE} ===")
print("1. 調查六年一班教室")
print("2. 調查操場司令台")
print("3. 調查圖書館")
print("4. 查看證物袋")
print("5. 提出推理")
print("6. 離開")
def main():
print("午休結束後,校慶展示櫃裡的校徽消失了。你能找出真相嗎?")
while True:
show_menu()
choice = input("請選擇:").strip()
if choice in LOCATIONS:
investigate(choice)
elif choice == "4":
show_evidence()
elif choice == "5":
if make_deduction():
break
elif choice == "6":
print("案件暫停。證物袋已交回調查局。")
break
else:
print("請輸入 1~6。")
if __name__ == "__main__":
main()