steveyehtw commited on
Commit
cb60630
·
verified ·
1 Parent(s): 066d102

Publish L6Sat week02 final projects

Browse files
projects/2026Fall進階專題六午/張棨竣/week02_校園謎案調查局/case_data.json ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "title": "消失的校徽",
3
+ "intro": "午休結束後,校慶展示櫃裡的校徽消失了。你能找出真相嗎?",
4
+ "locations": {
5
+ "1": {
6
+ "name": "六年一班教室",
7
+ "scene": "展示櫃半開,窗戶也沒有關好。",
8
+ "evidence": {
9
+ "id": "blue_fiber",
10
+ "name": "窗框上的藍色纖維",
11
+ "detail": "纖維顏色和清潔推車的布套相同。"
12
+ }
13
+ },
14
+ "2": {
15
+ "name": "操場司令台",
16
+ "scene": "地面剛拖過,留下一道彎向圖書館的輪痕。",
17
+ "evidence": {
18
+ "id": "wheel_track",
19
+ "name": "沾著亮粉的推車輪痕",
20
+ "detail": "亮粉和展示櫃內的裝飾相同。"
21
+ }
22
+ },
23
+ "3": {
24
+ "name": "圖書館",
25
+ "scene": "清潔推車停在書架旁,後方似乎有東西反光。",
26
+ "requires": ["blue_fiber", "wheel_track"],
27
+ "locked_text": "你看見推車,卻還不知道該檢查哪裡。也許要先找出它的移動路線。",
28
+ "evidence": {
29
+ "id": "badge",
30
+ "name": "卡在推車後方的校徽",
31
+ "detail": "校徽沒有損壞,背面黏著一小段藍色纖維。"
32
+ }
33
+ }
34
+ },
35
+ "conclusions": {
36
+ "1": "有同學故意把校徽藏在圖書館",
37
+ "2": "風吹起校徽,清潔推車不小心把它帶到圖書館",
38
+ "3": "校徽從一開始就放在圖書館"
39
+ },
40
+ "correct_answer": "2",
41
+ "success": "推理正確!風把校徽吹到布套上,推車經過教室後又將它帶到圖書館。這是一場意外。"
42
+ }
projects/2026Fall進階專題六午/張棨竣/week02_校園謎案調查局/main.py ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Week 2:校園謎案調查局 Starter。
2
+
3
+ 先完成 TODO 1~4。程式必須能反覆探索、收集線索、查看證物並提出推理。
4
+ """
5
+
6
+ CASE_TITLE = "消失的水壺"
7
+
8
+ LOCATIONS = {
9
+ "1": {
10
+ "name": "六年13班教室",
11
+ "scene": "凌亂的座位,窗戶也碎掉了。",
12
+ "evidence": "玻璃碎片",
13
+ },
14
+ "2": {
15
+ "name": "操場的空地",
16
+ "scene": "地面有血跡,有人刻意用落葉阻擋的痕跡。",
17
+ "evidence": " 小鳥的羽毛"
18
+ },
19
+ "3": {
20
+ "name": "洗手台",
21
+ "scene": "沒有關的水龍頭,後方的垃圾桶閃著光。",
22
+ "evidence": "在桶子裡的水壺",
23
+ },
24
+ }
25
+
26
+ evidence_bag = []
27
+
28
+
29
+ def investigate(location_id):
30
+ """調查地點並將新線索放入證物袋。"""
31
+ # TODO 1:確認 location_id 是否存在於 LOCATIONS。
32
+ if location_id not in LOCATIONS:
33
+ print("bad")
34
+ return
35
+ #TODO 2:顯示地點名稱與現場描述。
36
+ print(f"你到了{LOCATIONS[location_id]['name']}")
37
+ print(f"{LOCATIONS[location_id]['scene']}")
38
+ # TODO 3:線索尚未取得時才 append 到 evidence_bag。
39
+ if location_id not in evidence_bag:
40
+ evidence_bag.append(location_id)
41
+
42
+ def show_evidence():
43
+ """列出目前取得的所有證物。"""
44
+ # TODO 4:沒有證物時顯示提示;否則以 1 開始編號列出。
45
+ if not evidence_bag:
46
+ print("你沒證據")
47
+ return
48
+ else:
49
+ print(evidence_bag)
50
+ print("證物袋功能還沒完成。")
51
+
52
+
53
+ def make_deduction():
54
+ """取得足夠證物後,讓玩家選擇真相。"""
55
+ if len(evidence_bag) < 3:
56
+ print(f"證物不足:目前 {len(evidence_bag)}/3。再去調查吧!")
57
+ return False
58
+
59
+ print("\n哪一個說法最符合所有證物?")
60
+ print("1. 有同學故意把校徽藏在圖書館")
61
+ print("2. 風吹起校徽,清潔推車不小心把它帶到圖書館")
62
+ print("3. 校徽從一開始就放在圖書館")
63
+ answer = input("你的推理:").strip()
64
+
65
+ # TODO 5(Checkpoint C):判斷答案,正確時回傳 True。
66
+ print("推理判定還沒完成。")
67
+ return False
68
+
69
+
70
+ def show_menu():
71
+ print(f"\n=== 校園謎案調查局:{CASE_TITLE} ===")
72
+ print("1. 調查六年13班教室")
73
+ print("2. 調查操場的空地")
74
+ print("3. 調查洗手台")
75
+ print("4. 查看證物袋")
76
+ print("5. 提出推理")
77
+ print("6. 離開")
78
+
79
+
80
+ def main():
81
+ print("午休結束後,校慶展示櫃裡的校徽消失了。你能找出真相嗎?")
82
+
83
+ while True:
84
+ show_menu()
85
+ choice = input("請選擇:").strip()
86
+
87
+ if choice in LOCATIONS:
88
+ investigate(choice)
89
+ elif choice == "4":
90
+ show_evidence()
91
+ elif choice == "5":
92
+ if make_deduction():
93
+ break
94
+ elif choice == "6":
95
+ print("案件暫停。證物袋已交回調查局。")
96
+ break
97
+ else:
98
+ print("請輸入 1~6。")
99
+
100
+
101
+ if __name__ == "__main__":
102
+ main()
projects/2026Fall進階專題六午/李合盛/week02_校園謎案調查局/case_data.json ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "title": "不見dre人有67人",
3
+ "intro": "午休結束後,校慶展示櫃裡的人消失了。你能找出真相嗎?",
4
+ "locations": {
5
+ "1": {
6
+ "name": "六年一百班教室",
7
+ "scene": "展示櫃大開,窗戶也沒有關好。",
8
+ "evidence": {
9
+ "id": "blue_fiber",
10
+ "name": "窗框上的人頭",
11
+ "detail": "人頭和清潔推車的頭套相同。"
12
+ }
13
+ },
14
+ "2": {
15
+ "name": "操場司令台有人手和腳",
16
+ "scene": "地面剛拖過,留下一道彎向圖書館的輪痕和血。",
17
+ "evidence": {
18
+ "id": "wheel_track",
19
+ "name": "",
20
+ "detail": "血和展示櫃內的標本相同。"
21
+ }
22
+ },
23
+ "3": {
24
+ "name": "圖書館",
25
+ "scene": "清潔推車停在書架旁,後方似乎有東西反光。",
26
+ "requires": ["blue_fiber", "wheel_track"],
27
+ "locked_text": "你看見推車,卻還不知道該檢查哪裡。也許要先找出它的移動路線。",
28
+ "evidence": {
29
+ "id": "badge",
30
+ "name": "卡在推車後方的67人",
31
+ "detail": "校徽沒有損壞,背面黏著一小段藍色纖維。"
32
+ }
33
+ }
34
+ },
35
+ "conclusions": {
36
+ "1": "有同學故意把校徽藏在圖書館",
37
+ "2": "風吹起校徽,清潔推車不小心把它帶到圖書館",
38
+ "3": "校徽從一開始就放在圖書館"
39
+ },
40
+ "correct_answer": "2",
41
+ "success": "推理正確!風把校徽吹到布套上,推車經過教室後又將它帶到圖書館。這是一場意外。"
42
+ }
projects/2026Fall進階專題六午/李合盛/week02_校園謎案調查局/main.py ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Week 2:校園謎案調查局 Starter。
2
+
3
+ 先完成 TODO 1~4。程式必須能反覆探索、收集線索、查看證物並提出推理。
4
+ """
5
+
6
+ CASE_TITLE = "不見dre人有67人"
7
+
8
+ LOCATIONS = {
9
+ "1": {
10
+ "name": "六年一百班教室",
11
+ "scene": "展示櫃大開,窗戶也沒有關好。",
12
+ "evidence": "窗框上的人頭",
13
+ },
14
+ "2": {
15
+ "name": "操場司令台有人手和腳",
16
+ "scene": "地面剛拖過,留下一道彎向圖書館的輪痕和血。",
17
+ "evidence": "血的推車輪痕",
18
+ },
19
+ "3": {
20
+ "name": "生物教室",
21
+ "scene": "清潔推車停在骨架旁下有血跡,後方似乎有東西在叫。",
22
+ "evidence": "卡在推車後方的67人",
23
+ },
24
+ }
25
+
26
+ evidence_bag = []
27
+
28
+
29
+ def investigate(location_id):
30
+ """調查地點並將新線索放入證物袋。"""
31
+ # TODO 1:確認 location_id 是否存在於 LOCATIONS。
32
+ if location_id not in LOCATIONS:
33
+ print("here don't have you need")
34
+ return
35
+ print("這個調查功能還沒完成。")
36
+
37
+
38
+ def show_evidence():
39
+ """列出目前取得的所有證物。"""
40
+ # TODO 4:沒有證物時顯示提示;否則以 1 開始編號列出。
41
+ print("證物袋功能還沒完成。")
42
+
43
+
44
+ def make_deduction():
45
+ """取得足夠證物後,讓玩家選擇真相。"""
46
+ if len(evidence_bag) < 3:
47
+ print(f"證物不足:目前 {len(evidence_bag)}/3。再去調查吧!")
48
+ return False
49
+
50
+ print("\n哪一個說法最符合所有證物?")
51
+ print("1.他們互相殘殺,最後一個人自殺")
52
+ print("2. 有人故意殺人")
53
+ print("3. 67人一開始就在圖書館")
54
+ answer = input("你的推理:").strip()
55
+
56
+ # TODO 5(Checkpoint C):判斷答案,正確時回傳 True。
57
+ print("推理判定還沒完成。")
58
+ return False
59
+
60
+
61
+ def show_menu():
62
+ print(f"\n=== 校園謎案調查局:{CASE_TITLE} ===")
63
+ print("1. 調查六年一班教室")
64
+ print("2. 調查操場司令台")
65
+ print("3. 調查圖書館")
66
+ print("4. 查看證物袋")
67
+ print("5. 提出推理")
68
+ print("6. 離開")
69
+
70
+
71
+ def main():
72
+ print("午休結束後,校慶展示櫃裡的校徽消失了。你能找出真相嗎?")
73
+
74
+ while True:
75
+ show_menu()
76
+ choice = input("請選擇:").strip()
77
+
78
+ if choice in LOCATIONS:
79
+ investigate(choice)
80
+ elif choice == "4":
81
+ show_evidence()
82
+ elif choice == "5":
83
+ if make_deduction():
84
+ break
85
+ elif choice == "6":
86
+ print("案件暫停。證物袋已交回調查局。")
87
+ break
88
+ else:
89
+ print("請輸入 1~6。")
90
+
91
+
92
+ if __name__ == "__main__":
93
+ main()
projects/2026Fall進階專題六午/林守桀/week02_校園謎案調查局/case_data.json ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "title": "半夜的舊校舍",
3
+ "intro": "深夜的校園傳出詭異琴聲與哭喊,你能揭開舊校舍的祕密嗎?",
4
+ "locations": {
5
+ "1": {
6
+ "name": "廢棄音樂教室",
7
+ "scene": "鋼琴蓋自己微微晃動,琴鍵上記號筆寫著血紅色的字。",
8
+ "evidence": {
9
+ "id": "sheet_music",
10
+ "name": "散落一地的老舊樂譜碎片",
11
+ "detail": "樂譜邊緣有燒焦痕跡,上面記著怪異的音符。"
12
+ }
13
+ },
14
+ "2": {
15
+ "name": "走廊盡頭的女廁",
16
+ "scene": "最後一間廁所門半開,鏡子上滿是水氣與詭異手印。",
17
+ "evidence": {
18
+ "id": "red_scrunchie",
19
+ "name": "沾著濕黏水跡的紅色髮圈",
20
+ "detail": "髮圈上纏著幾根長髮,還散發著淡樟腦味。"
21
+ }
22
+ },
23
+ "3": {
24
+ "name": "地下室器材室",
25
+ "scene": "角落的老舊木櫃發出叩叩聲,地上有一排發光的鞋印。",
26
+ "requires": ["sheet_music", "red_scrunchie"],
27
+ "locked_text": "木櫃發出強烈的震動,門被鎖死了。也許需要先找齊走廊與教室的線索才敢靠近。",
28
+ "evidence": {
29
+ "id": "bronze_key",
30
+ "name": "刻有神秘符號的銅製鑰匙",
31
+ "detail": "金屬表面冰冷刺骨,刻痕看起來像是手刻的。"
32
+ }
33
+ }
34
+ },
35
+ "conclusions": {
36
+ "1": "這一切只是舊校舍地基下陷產生的自然聲響",
37
+ "2": "有學長在半夜偷偷溜進舊校舍試圖解開地下的封印",
38
+ "3": "校園裡真的有幽靈在尋找失落的舊鑰匙"
39
+ },
40
+ "correct_answer": "2",
41
+ "success": "推理正確!原來是有人深夜闖入搞鬼,真相大白了!"
42
+ }
projects/2026Fall進階專題六午/林守桀/week02_校園謎案調查局/main.py ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Week 2:校園謎案調查局 Starter。
2
+
3
+ 先完成 TODO 1~4。程式必須能反覆探索、收集線索、查看證物並提出推理。
4
+ """
5
+
6
+ CASE_TITLE = "半夜的舊校舍"
7
+
8
+ LOCATIONS = {
9
+ "1": {
10
+ "name": "廢棄音樂教室",
11
+ "scene": "鋼琴蓋自己微微晃動,琴鍵上記號筆寫著血紅色的字。",
12
+ "evidence": "散落一地的老舊樂譜碎片",
13
+ },
14
+ "2": {
15
+ "name": "走廊盡頭的女廁",
16
+ "scene": "最後一間廁所門半開,鏡子上滿是水氣與詭異手印。",
17
+ "evidence": "沾著濕黏水跡的紅色髮圈",
18
+ },
19
+ "3": {
20
+ "name": "地下室器材室",
21
+ "scene": "角落的老舊木櫃發出叩叩聲,地上有一排發光的鞋印。",
22
+ "evidence": "刻有神秘符號的銅製鑰匙",
23
+ },
24
+ }
25
+
26
+ evidence_bag = []
27
+
28
+
29
+ def investigate(location_id):
30
+ """調查地點並將新線索放入證物袋。"""
31
+ # TODO 1:確認 location_id 是否存在於 LOCATIONS。
32
+ if location_id in LOCATIONS:
33
+ loc = LOCATIONS[location_id]
34
+ # TODO 2:顯示地點名稱與現場描述。
35
+ print(f"地點:{loc['name']}")
36
+ print(f"現場:{loc['scene']}")
37
+ # TODO 3:線索尚未取得時才 append 到 evidence_bag。
38
+ if loc["evidence"] not in evidence_bag:
39
+ evidence_bag.append(loc["evidence"])
40
+ print(f"找到證物:{loc['evidence']}")
41
+
42
+
43
+ def show_evidence():
44
+ """列出目前取得的所有證物。"""
45
+ # TODO 4:沒有證物時顯示提示;否則以 1 開始編號列出。
46
+ if not evidence_bag:
47
+ print("目前沒有任何證物。")
48
+ else:
49
+ for i, item in enumerate(evidence_bag, 1):
50
+ print(f"{i}. {item}")
51
+
52
+
53
+ def make_deduction():
54
+ """取得足夠證物後,讓玩家選擇真相。"""
55
+ if len(evidence_bag) < 3:
56
+ print(f"證物不足:目前 {len(evidence_bag)}/3。再去調查吧!")
57
+ return False
58
+
59
+ print("\n哪一個說法最符合所有證物?")
60
+ print("1. 這一切只是舊校舍地基下陷產生的自然聲響")
61
+ print("2. 有學長在半夜偷偷溜進舊校舍試圖解開地下的封印")
62
+ print("3. 校園裡真的有幽靈在尋找失落的舊鑰匙")
63
+ answer = input("你的推理:").strip()
64
+
65
+ # TODO (5Checkpoint C):判斷答案,正確時回傳 True。
66
+ if answer == "2":
67
+ print("推理正確!原來是有人深夜闖入搞鬼,真相大白了!")
68
+ return True
69
+ else:
70
+ print("推理錯誤,這種說法無法解釋所有異象,再試試看。")
71
+ return False
72
+
73
+
74
+ def show_menu():
75
+ print(f"\n=== 校園謎案調查局:{CASE_TITLE} ===")
76
+ print("1. 調查廢棄音樂教室")
77
+ print("2. 調查走廊盡頭的女廁")
78
+ print("3. 調查地下室器材室")
79
+ print("4. 查看證物袋")
80
+ print("5. 提出推理")
81
+ print("6. 逃離現場")
82
+
83
+
84
+ def main():
85
+ print("深夜的校園傳出詭異琴聲與哭喊,你能揭開舊校舍的祕密嗎?")
86
+
87
+ while True:
88
+ show_menu()
89
+ choice = input("請選擇:").strip()
90
+
91
+ if choice in LOCATIONS:
92
+ investigate(choice)
93
+ elif choice == "4":
94
+ show_evidence()
95
+ elif choice == "5":
96
+ if make_deduction():
97
+ break
98
+ elif choice == "6":
99
+ print("你感到一陣惡寒,決定先撤離舊校舍。")
100
+ break
101
+ else:
102
+ print("請輸入 1~6。")
103
+
104
+
105
+ if __name__ == "__main__":
106
+ main()
projects/2026Fall進階專題六午/王三策/week02_校園謎案調查局/case_data.json ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "title": "消失的校徽",
3
+ "intro": "午休結束後,校慶展示櫃裡的校徽消失了。你能找出真相嗎?",
4
+ "locations": {
5
+ "1": {
6
+ "name": "六年一班教室",
7
+ "scene": "展示櫃半開,窗戶也沒有關好。",
8
+ "evidence": {
9
+ "id": "blue_fiber",
10
+ "name": "窗框上的藍色纖維",
11
+ "detail": "纖維顏色和清潔推車的布套相同。"
12
+ }
13
+ },
14
+ "2": {
15
+ "name": "操場司令台",
16
+ "scene": "地面剛拖過,留下一道彎向圖書館的輪痕。",
17
+ "evidence": {
18
+ "id": "wheel_track",
19
+ "name": "沾著亮粉的推車輪痕",
20
+ "detail": "亮粉和展示櫃內的裝飾相同。"
21
+ }
22
+ },
23
+ "3": {
24
+ "name": "圖書館",
25
+ "scene": "清潔推車停在書架旁,後方似乎有東西反光。",
26
+ "requires": ["blue_fiber", "wheel_track"],
27
+ "locked_text": "你看見推車,卻還不知道該檢查哪裡。也許要先找出它的移動路線。",
28
+ "evidence": {
29
+ "id": "badge",
30
+ "name": "卡在推車後方的校徽",
31
+ "detail": "校徽沒有損壞,背面黏著一小段藍色纖維。"
32
+ }
33
+ }
34
+ },
35
+ "conclusions": {
36
+ "1": "有同學故意把校徽藏在圖書館",
37
+ "2": "風吹起校徽,清潔推車不小心把它帶到圖書館",
38
+ "3": "校徽從一開始就放在圖書館"
39
+ },
40
+ "correct_answer": "2",
41
+ "success": "推理正確!風把校徽吹到布套上,推車經過教室後又將它帶到圖書館。這是一場意外。"
42
+ }
projects/2026Fall進階專題六午/王三策/week02_校園謎案調查局/main.py ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Week 2:校園謎案調查局 Starter。
2
+
3
+ 先完成 TODO 1~4。程式必須能反覆探索、收集線索、查看證物並提出推理。
4
+ """
5
+
6
+ CASE_TITLE = "湊企鵝謎團[棍木伱看布辶彳亍子!!!恭喜!棍木]"
7
+
8
+ LOCATIONS = {
9
+ "1": {
10
+ "name": "資源班教室",
11
+ "scene": "有兩隻湊企鵝開心的笑[gugugaga]",
12
+ "evidence": "一個紙條,上面似乎有一串號碼...---...x1",
13
+ },
14
+ "2": {
15
+ "name": "實驗室",
16
+ "scene": "旁邊的貨架上有綠色和粉色的藥劑在冒泡",
17
+ "evidence": "一瓶綠色的奇怪藥劑x1一瓶粉色的奇怪藥劑x1",
18
+ },
19
+ "3": {
20
+ "name": "保安室",
21
+ "scene": "窗戶碎掉了,只有一隻湊企鵝在叫,但是地上有一個奇怪的腳印...",
22
+ "evidence": "一張奇怪的紙條.... . .-. .- -. --- ..- - -.-.--x1",
23
+ },
24
+ }
25
+
26
+ evidence_bag = []
27
+
28
+
29
+ def investigate(location_id):
30
+ """調查地點並將新線索放入證物袋。"""
31
+ # TODO 1:確認 location_id 是否存在於 LOCATIONS。
32
+ if location_id not in LOCATIONS:
33
+ print("你眼x嗎沒有這個號碼0227407890")
34
+ return
35
+ # TODO 2:顯示地點名稱與現場描述
36
+ print(f"你到了:{LOCATIONS[location_id]['name']}")
37
+ print(LOCATIONS[location_id]["scene"])
38
+ # TODO 3:線索尚未if not in evidence_bag:
39
+ if location_id not in evidence_bag:
40
+ evidence_bag.append(location_id)
41
+ else:
42
+ print("你蒐集過這個了^^")
43
+
44
+
45
+ def show_evidence():
46
+ """列出目前取得的所有證物。"""
47
+ # TODO 4:沒有證物時顯示提示;否則以 1 開始編號列出。
48
+ if not evidence_bag:
49
+ print("\n證物袋目前是空的,快去各地點調查吧!")
50
+ return
51
+ print("證物袋功能還沒完成。")
52
+
53
+
54
+ def make_deduction():
55
+ """取得足夠證物後,讓玩家選擇真相。"""
56
+ if len(evidence_bag) < 3:
57
+ print(f"證物不足:目前 {len(evidence_bag)}/3。再去調查吧!")
58
+ return False
59
+
60
+ print("\n哪一個說法最符合所有證物?")
61
+ print("1. 有同學故意把校徽藏在圖書館")
62
+ print("2. 風吹起校徽,清潔推車不小心把它帶到圖書館")
63
+ print("3. 校徽從一開始就放在圖書館")
64
+ answer = input("你的推理:").strip()
65
+
66
+ # TODO 5(Checkpoint C):判斷答案,正確時回傳 True。
67
+ print("推理判定還沒完成。")
68
+ return False
69
+
70
+
71
+ def show_menu():
72
+ print(f"\n=== 校園謎案調查局:{CASE_TITLE} ===")
73
+ print("1. 調查六年一班教室")
74
+ print("2. 調查操場司令台")
75
+ print("3. 調查圖書館")
76
+ print("4. 查看證物袋")
77
+ print("5. 提出推理")
78
+ print("6. 離開")
79
+
80
+
81
+ def main():
82
+ print("午休結束後,校慶展示櫃裡的校徽消失了。你能找出真相嗎?")
83
+
84
+ while True:
85
+ show_menu()
86
+ choice = input("請選擇:").strip()
87
+
88
+ if choice in LOCATIONS:
89
+ investigate(choice)
90
+ elif choice == "4":
91
+ show_evidence()
92
+ elif choice == "5":
93
+ if make_deduction():
94
+ break
95
+ elif choice == "6":
96
+ print("案件暫停。證物袋已交回調查局。")
97
+ break
98
+ else:
99
+ print("請輸入 1~6。")
100
+
101
+
102
+ if __name__ == "__main__":
103
+ main()
projects/2026Fall進階專題六午/王辭信/week02_校園謎案調查局/case_data.json ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "title": "消失的校徽",
3
+ "intro": "午休結束後,校慶展示櫃裡的校徽消失了。你能找出真相嗎?",
4
+ "locations": {
5
+ "1": {
6
+ "name": "六年一班教室",
7
+ "scene": "展示櫃半開,窗戶也沒有關好。",
8
+ "evidence": {
9
+ "id": "blue_fiber",
10
+ "name": "窗框上的藍色纖維",
11
+ "detail": "纖維顏色和清潔推車的布套相同。"
12
+ }
13
+ },
14
+ "2": {
15
+ "name": "操場司令台",
16
+ "scene": "地面剛拖過,留下一道彎向圖書館的輪痕。",
17
+ "evidence": {
18
+ "id": "wheel_track",
19
+ "name": "沾著亮粉的推車輪痕",
20
+ "detail": "亮粉和展示櫃內的裝飾相同。"
21
+ }
22
+ },
23
+ "3": {
24
+ "name": "圖書館",
25
+ "scene": "清潔推車停在書架旁,後方似乎有東西反光。",
26
+ "requires": ["blue_fiber", "wheel_track"],
27
+ "locked_text": "你看見推車,卻還不知道該檢查哪裡。也許要先找出它的移動路線。",
28
+ "evidence": {
29
+ "id": "badge",
30
+ "name": "卡在推車後方的校徽",
31
+ "detail": "校徽沒有損壞,背面黏著一小段藍色纖維。"
32
+ }
33
+ }
34
+ },
35
+ "conclusions": {
36
+ "1": "有同學故意把校徽藏在圖書館",
37
+ "2": "風吹起校徽,清潔推車不小心把它帶到圖書館",
38
+ "3": "校徽從一開始就放在圖書館"
39
+ },
40
+ "correct_answer": "2",
41
+ "success": "推理正確!風把校徽吹到布套上,推車經過教室後又將它帶到圖書館。這是一場意外。"
42
+ }
projects/2026Fall進階專題六午/王辭信/week02_校園謎案調查局/main.py ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Week 2:校園謎案調查局 Starter。
2
+
3
+ 先完成 TODO 1~4。程式必須能反覆探索、收集線索、查看證物並提出推理。
4
+ """
5
+
6
+ CASE_TITLE = "消失的鑽石棍木67不知道很雷霆"
7
+
8
+ LOCATIONS = {
9
+ "1": {
10
+ "name": "六七年七十八九十一班教室",
11
+ "scene": "展示櫃半開,窗戶也沒有關好就受者。",
12
+ "evidence": "窗框上的棍木6767色纖維",
13
+ },
14
+ "2": {
15
+ "name": "676767這波我挺偉偉的操場",
16
+ "scene": "地面剛拖過,留下一道彎向圖書館的痕跡。",
17
+ "evidence": "沾著野生狗奶棍木6767的推車輪痕",
18
+ },
19
+ "3": {
20
+ "name": "676767競爭者不好玩圖書館",
21
+ "scene": "清潔推車停在書架旁,後方似乎有東西反光。",
22
+ "evidence": "卡在推車後方的鑽石棍木67",
23
+ },
24
+ }
25
+
26
+ evidence_bag = []
27
+
28
+
29
+ def investigate(location_id):
30
+ """調查地點並將新線索放入證物袋。"""
31
+ # TODO 1:確認 location_id 是否存在於 LOCATIONS。
32
+ if location_id not in LOCATIONS:
33
+ print("無效的地點!")
34
+ return
35
+
36
+ # 取得對應地點的資料
37
+ loc = LOCATIONS[location_id]
38
+
39
+ # TODO 2:顯示地點名稱與現場描述。
40
+ print(f"\n【調查地點:{loc['name']}】")
41
+ print(f"現場狀況:{loc['scene']}")
42
+
43
+ # TODO 3:線索尚未取得時才 append 到 evidence_bag。
44
+ found_evidence = loc['evidence']
45
+ if found_evidence not in evidence_bag:
46
+ evidence_bag.append(found_evidence)
47
+ else:
48
+ print("這個地點已經調查過了,沒有新的發現。")
49
+
50
+
51
+ def show_evidence():
52
+ """列出目前取得的所有證物。"""
53
+ # TODO 4:沒有證物時顯示提示;否則以 1 開始編號列出。
54
+ if not evidence_bag:
55
+ print("目前空空如也,趕快去調查吧!")
56
+ else:
57
+ print("\n=== 目前收到的證物 ===")
58
+ for i, evidence in enumerate(evidence_bag, start=1):
59
+ print(f"{i}. {evidence}")
60
+ print("=============")
61
+
62
+
63
+ def make_deduction():
64
+ """取得足夠證物後,讓玩家選擇真相。"""
65
+ if len(evidence_bag) < 3:
66
+ print(f"證物不足:目前 {len(evidence_bag)}/3。再去調查吧!")
67
+ return False
68
+
69
+ print("\n哪一個說法最符合所有證物?")
70
+ print("1. 有同學故意把鑽石棍木67藏在圖書館")
71
+ print("2. 風吹起鑽石棍木67,清潔推車不小心把它帶到圖書館")
72
+ print("3. 鑽石棍木67從一開始就放在圖書館")
73
+ answer = input("你的推理:").strip()
74
+
75
+ # TODO 5(Checkpoint C):判斷答案,正確時回傳 True。
76
+ if answer == "2":
77
+ print("\n🎉 推理正確!窗邊的棍木6767色纖維跟推車的軌跡吻合,是一場意外!案件圓滿解決。")
78
+ return True
79
+ else:
80
+ print("\n❌ 案情似乎沒有這麼簡單,再重新看一次證物吧!")
81
+ return False
82
+
83
+
84
+ def show_menu():
85
+ print(f"\n=== 校園謎案調查局:{CASE_TITLE} ===")
86
+ print("1. 調查六七年七十八九十一班教室")
87
+ print("2. 調查676767這波我挺偉偉的操場")
88
+ print("3. 調查676767競爭者不好玩圖書館")
89
+ print("4. 查看證物袋")
90
+ print("5. 提出推理")
91
+ print("6. 離開")
92
+
93
+
94
+ def main():
95
+ print("午休結束後,校慶展示櫃裡的鑽石棍木67消失了。你能找出真相嗎?")
96
+
97
+ while True:
98
+ show_menu()
99
+ choice = input("請選擇:").strip()
100
+
101
+ if choice in LOCATIONS:
102
+ investigate(choice)
103
+ elif choice == "4":
104
+ show_evidence()
105
+ elif choice == "5":
106
+ if make_deduction():
107
+ break
108
+ elif choice == "6":
109
+ print("案件暫停。證物袋已交回調查局。")
110
+ break
111
+ else:
112
+ print("請輸入 1~6。")
113
+
114
+
115
+ if __name__ == "__main__":
116
+ main()
projects/2026Fall進階專題六午/胡惟媗/week02_校園謎案調查局/case_data.json ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "title": "消失的校徽",
3
+ "intro": "午休結束後,校慶展示櫃裡的校徽消失了。你能找出真相嗎?",
4
+ "locations": {
5
+ "1": {
6
+ "name": "六年一班教室",
7
+ "scene": "展示櫃半開,窗戶也沒有關好。",
8
+ "evidence": {
9
+ "id": "blue_fiber",
10
+ "name": "窗框上的藍色纖維",
11
+ "detail": "纖維顏色和清潔推車的布套相同。"
12
+ }
13
+ },
14
+ "2": {
15
+ "name": "操場司令台",
16
+ "scene": "地面剛拖過,留下一道彎向圖書館的輪痕。",
17
+ "evidence": {
18
+ "id": "wheel_track",
19
+ "name": "沾著亮粉的推車輪痕",
20
+ "detail": "亮粉和展示櫃內的裝飾相同。"
21
+ }
22
+ },
23
+ "3": {
24
+ "name": "圖書館",
25
+ "scene": "清潔推車停在書架旁,後方似乎有東西反光。",
26
+ "requires": ["blue_fiber", "wheel_track"],
27
+ "locked_text": "你看見推車,卻還不知道該檢查哪裡。也許要先找出它的移動路線。",
28
+ "evidence": {
29
+ "id": "badge",
30
+ "name": "卡在推車後方的校徽",
31
+ "detail": "校徽沒有損壞,背面黏著一小段藍色纖維。"
32
+ }
33
+ }
34
+ },
35
+ "conclusions": {
36
+ "1": "有同學故意把校徽藏在圖書館",
37
+ "2": "風吹起校徽,清潔推車不小心把它帶到圖書館",
38
+ "3": "校徽從一開始就放在圖書館"
39
+ },
40
+ "correct_answer": "2",
41
+ "success": "推理正確!風把校徽吹到布套上,推車經過教室後又將它帶到圖書館。這是一場意外。"
42
+ }
projects/2026Fall進階專題六午/胡惟媗/week02_校園謎案調查局/main.py ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Week 2:校園謎案調查局 Starter。
2
+
3
+ 先完成 TODO 1~4。程式必須能反覆探索、收集線索、查看證物並提出推理。
4
+ """
5
+
6
+ CASE_TITLE = "停止の時間(?"
7
+
8
+ LOCATIONS = {
9
+ "1": {
10
+ "name": "日本の地下鉄",
11
+ "scene": "車子裡面空無一人",
12
+ "evidence": "時間一直停在11:59",
13
+ },
14
+ "2": {
15
+ "name": "座位隔壁",
16
+ "scene": "有一張照片",
17
+ "evidence": "是自己和過世的母親的照片",
18
+ },
19
+ "3": {
20
+ "name": "駕駛員座椅",
21
+ "scene": "地鐵一直行駛",
22
+ "evidence": "駕駛座沒有人",
23
+ },
24
+ }
25
+
26
+ evidence_bag = []
27
+
28
+
29
+ def investigate(location_id):
30
+ """調查地點並將新線索放入證物袋。"""
31
+
32
+ if location_id not in LOCATIONS:
33
+ print("找不到地點 請重找")
34
+ return
35
+ loc = LOCATIONS[location_id]
36
+ # TODO 2:顯示地點名稱與現場描述。
37
+ print(f"地點:{loc['name']}")
38
+ print(f"現場描述:{loc['scene']}")
39
+ # TODO 3:線索尚未取得時才 append 到 evidence_bag。
40
+ evidence = loc["evidence"]
41
+ if evidence not in evidence_bag:
42
+ evidence_bag.append(evidence)
43
+ print(f"取得新線索:{evidence}")
44
+ else:
45
+ print("找不到地點 請重找")
46
+
47
+ def show_evidence():
48
+ """列出目前取得的所有證物。"""
49
+ # TODO 4:沒有證物時顯示提示;否則以 1 開始編號列出。
50
+ print("證物袋功能還沒完成。")
51
+
52
+
53
+ def make_deduction():
54
+ """取得足夠證物後,讓玩家選擇真相。"""
55
+ if len(evidence_bag) < 3:
56
+ print(f"證物不足:目前 {len(evidence_bag)}/3。再去調查吧!")
57
+ return False
58
+
59
+ print("\n哪一個說法最符合所有證物?")
60
+ print("1. 有同學故意把校徽藏在圖書館")
61
+ print("2. 風吹起校徽,清潔推車不小心把它帶到圖書館")
62
+ print("3. 校徽從一開始就放在圖書館")
63
+ answer = input("你的推理:").strip()
64
+
65
+ # TODO 5(Checkpoint C):判斷答案,正確時回傳 True。
66
+ print("推理判定還沒完成。")
67
+ return False
68
+
69
+
70
+ def show_menu():
71
+ print(f"\n=== 校園謎案調查局:{CASE_TITLE} ===")
72
+ print("1. 調查六年一班教室")
73
+ print("2. 調查操場司令台")
74
+ print("3. 調查圖書館")
75
+ print("4. 查看證物袋")
76
+ print("5. 提出推理")
77
+ print("6. 離開")
78
+
79
+
80
+ def main():
81
+ print("午休結束後,校慶展示櫃裡的校徽消失了。你能找出真相嗎?")
82
+
83
+ while True:
84
+ show_menu()
85
+ choice = input("請選擇:").strip()
86
+
87
+ if choice in LOCATIONS:
88
+ investigate(choice)
89
+ elif choice == "4":
90
+ show_evidence()
91
+ elif choice == "5":
92
+ if make_deduction():
93
+ break
94
+ elif choice == "6":
95
+ print("案件暫停。證物袋已交回調查局。")
96
+ break
97
+ else:
98
+ print("請輸入 1~6。")
99
+
100
+
101
+ if __name__ == "__main__":
102
+ main()
projects/2026Fall進階專題六午/蔡昊儒/week02_校園謎案調查局/case_data.json ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "title": "消失的校徽",
3
+ "intro": "午休結束後,校慶展示櫃裡的校徽消失了。你能找出真相嗎?",
4
+ "locations": {
5
+ "1": {
6
+ "name": "六年一班教室",
7
+ "scene": "展示櫃半開,窗戶也沒有關好。",
8
+ "evidence": {
9
+ "id": "blue_fiber",
10
+ "name": "窗框上的藍色纖維",
11
+ "detail": "纖維顏色和清潔推車的布套相同。"
12
+ }
13
+ },
14
+ "2": {
15
+ "name": "操場司令台",
16
+ "scene": "地面剛拖過,留下一道彎向圖書館的輪痕。",
17
+ "evidence": {
18
+ "id": "wheel_track",
19
+ "name": "沾著亮粉的推車輪痕",
20
+ "detail": "亮粉和展示櫃內的裝飾相同。"
21
+ }
22
+ },
23
+ "3": {
24
+ "name": "圖書館",
25
+ "scene": "清潔推車停在書架旁,後方似乎有東西反光。",
26
+ "requires": ["blue_fiber", "wheel_track"],
27
+ "locked_text": "你看見推車,卻還不知道該檢查哪裡。也許要先找出它的移動路線。",
28
+ "evidence": {
29
+ "id": "badge",
30
+ "name": "卡在推車後方的校徽",
31
+ "detail": "校徽沒有損壞,背面黏著一小段藍色纖維。"
32
+ }
33
+ }
34
+ },
35
+ "conclusions": {
36
+ "1": "有同學故意把校徽藏在圖書館",
37
+ "2": "風吹起校徽,清潔推車不小心把它帶到圖書館",
38
+ "3": "校徽從一開始就放在圖書館"
39
+ },
40
+ "correct_answer": "2",
41
+ "success": "推理正確!風把校徽吹到布套上,推車經過教室後又將它帶到圖書館。這是一場意外。"
42
+ }
projects/2026Fall進階專題六午/蔡昊儒/week02_校園謎案調查局/main.py ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Week 2:校園謎案調查局 Starter。
2
+
3
+ 先完成 TODO 1~4。程式必須能反覆探索、收集線索、查看證物並提出推理。
4
+ """
5
+
6
+ CASE_TITLE = "失火的房子"
7
+
8
+ LOCATIONS = {
9
+ "1": {
10
+ "name": "廚房",
11
+ "scene": "烏漆嗎黑",
12
+ "evidence": "有電磁爐爆炸的痕跡",
13
+ },
14
+ "2": {
15
+ "name": "客廳",
16
+ "scene": "物品東倒西歪,有些物品燒焦",
17
+ "evidence": "打火機在地上",
18
+ },
19
+ "3": {
20
+ "name": "書房",
21
+ "scene": "棉被蓋住一個屍體",
22
+ "evidence": "屍體是房子主人的弟弟",
23
+ },
24
+ }
25
+
26
+ evidence_bag = []
27
+
28
+
29
+ def investigate(location_id):
30
+ """調查地點並將新線索放入證物袋。"""
31
+ # TODO 1:確認 location_id 是否存在於 LOCATIONS。
32
+ str_id = str(location_id)
33
+ is_in_locations = False
34
+ for i in LOCATIONS:
35
+ if str_id == i:
36
+ is_in_locations = True
37
+ break
38
+ if is_in_locations == False:
39
+ return 0
40
+ # TODO 2:顯示地點名稱與現場描述。
41
+ print(LOCATIONS[str_id]["name"])
42
+ print(LOCATIONS[str_id]["scene"])
43
+ # TODO 3:線索尚未取得時才 append 到 evidence_bag。
44
+ if LOCATIONS[str_id]["evidence"] not in evidence_bag:
45
+ evidence_bag.append(LOCATIONS[str_id]["evidence"])
46
+
47
+
48
+ def show_evidence():
49
+ """列出目前取得的所有證物。"""
50
+ # TODO 4:沒有證物時顯示提示;否則以 1 開始編號列出。
51
+ if evidence_bag == []:
52
+ print("there is nothing in the bag bro")
53
+ else:
54
+ for index, evidence in enumerate(evidence_bag, 0):
55
+ print(f"Clue {index+1}: {evidence}")
56
+
57
+ print("證物袋功能還沒完成。")
58
+
59
+
60
+ def make_deduction():
61
+ """取得足夠證物後,讓玩家選擇真相。"""
62
+ if len(evidence_bag) < 3:
63
+ print(f"證物不足:目前 {len(evidence_bag)}/3。再去調查吧!")
64
+ return False
65
+
66
+ print("\n哪一個說法最符合所有證物?")
67
+ print("1. 主人煮飯搞砸了")
68
+ print("2. 弟弟煮飯時去睡覺")
69
+ print("3. 主人用打火機點燃廚房,害死弟弟")
70
+ answer = input("你的推理:").strip()
71
+
72
+ # TODO 5(Checkpoint C):判斷答案,正確時回傳 True。
73
+ if answer == "2":
74
+ print("success")
75
+ return True
76
+ print("推理判定還沒完成。")
77
+ return False
78
+
79
+
80
+ def show_menu():
81
+ print(f"\n=== 校園謎案調查局:{CASE_TITLE} ===")
82
+ print("1. 調查六年一班教室")
83
+ print("2. 調查操場司令台")
84
+ print("3. 調查圖書館")
85
+ print("4. 查看證物袋")
86
+ print("5. 提出推理")
87
+ print("6. 離開")
88
+
89
+
90
+ def main():
91
+ print("午休結束後,校慶展示櫃裡的校徽消失了。你能找出真相嗎?")
92
+
93
+ while True:
94
+ show_menu()
95
+ choice = input("請選擇:").strip()
96
+
97
+ if choice in LOCATIONS:
98
+ investigate(choice)
99
+ elif choice == "4":
100
+ show_evidence()
101
+ elif choice == "5":
102
+ if make_deduction():
103
+ break
104
+ elif choice == "6":
105
+ print("案件暫停。證物袋已交回調查局。")
106
+ break
107
+ else:
108
+ print("請輸入 1~6。")
109
+
110
+
111
+ if __name__ == "__main__":
112
+ main()