Repository navigation
Expand file tree
/
Copy pathtime-loop-python.nme
More file actions
137 lines (133 loc) · 6.5 KB
/
Copy pathtime-loop-python.nme
File metadata and controls
137 lines (133 loc) · 6.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# Time Loop Mystery — the advanced Python version.
# 고급 단계: 같은 게임을 일반 Python으로 옮긴 최종 형태입니다.
# 순수 Python: 리스트, 딕셔너리, f-string, while, break를 사용합니다.
# Run: nme r time-loop-python.nme
import random
이름들 = ["권도현", "이하늘", "김지안", "박서준", "정우진"]
알리바이 = {
"권도현": "22시에 지휘실에서 보고서를 쓰고 있었다고 말했어요",
"이하늘": "22시에 발전기 점검을 하고 있었다고 말했어요",
"김지안": "22시에 의무실에서 기록을 정리했다고 말했어요",
"박서준": "22시에 데이터 백업을 하고 있었다고 말했어요",
"정우진": "22시에 복도 순찰을 돌고 있었다고 말했어요",
}
모순 = {
"권도현": "22시에 지휘실에 있었다고 말했지만 목소리가 떨렸어요",
"이하늘": "22시에 발전기를 점검했다고 말했지만 손에 기름이 묻어 있었어요",
"김지안": "22시에 의무실에 있었다고 말했지만 의무실 불은 꺼져 있었어요",
"박서준": "22시에 데이터를 백업했다고 말했지만 백업 기록이 지워져 있었어요",
"정우진": "22시에 복도 순찰을 돌았다고 말했지만 순찰 기록이 없었어요",
}
사연 = {
"권도현": "실험 데이터를 해적에게 팔려고 했어요",
"이하늘": "임금 인상 요구가 거절당해 복수하려 했어요",
"김지안": "불치병 연구를 막은 기지를 증오했어요",
"박서준": "자신의 논문을 도용한 연구소에 분노했어요",
"정우진": "폭력적인 사령관에게 복수하려 했어요",
}
범인이름 = random.choice(이름들)
루프수 = 0
승리여부 = False
승리루프 = 0
조사여부 = False
카메라여부 = False
인터뷰모순 = False
인터뷰 = {이름: False for 이름 in 이름들}
카메라 = {1: False, 2: False, 3: False}
print("폭발 22:00 - 사라진 실험실에 오신 것을 환영합니다!")
print("어젯밤 22시, 화성 기지 실험실이 폭발했습니다")
print("당신은 폭발 직전에 시간이 되감기는 것을 목격했습니다")
print("같은 하루를 최대 10회 되풀이할 수 있어요")
print("되풀이할수록 단서는 기억되므로 매번 다른 행동을 하세요")
print("승무원 명단: 1 권도현 2 이하늘 3 김지안 4 박서준 5 정우진")
while True:
루프수 += 1
남은루프 = 10 - 루프수
if 루프수 > 10:
print("게임 오버입니다 10루프가 지나 범인이 탈출했습니다")
print(f"게임 오버입니다 진범은 {범인이름}이에요")
break
print(f"시간이 되감깁니다 오늘은 {루프수} 번째 루프예요")
print(f"남은 기회는 {남은루프}예요")
if 조사여부:
print("조사 단서: 실험실은 고의로 파손됐어요")
if 카메라여부:
print("카메라 단서: 22시에 실험실 출입자가 있었어요")
if 인터뷰모순:
print("인터뷰 단서: 누군가의 알리바이가 거짓말이에요")
print("1. 현장 조사")
print("2. 승무원 인터뷰")
print("3. 감시 카메라 확인")
print("4. 범인 지목")
선택행동 = input("무엇을 할까요 ")
if 선택행동 == "1":
if 루프수 == 1:
print("배터리 고장을 조사했습니다 고의로 분리된 흔적이 있어요!")
조사여부 = True
elif 루프수 == 2:
print("지문을 확인했습니다 실험실 문 손잡이에서 선명한 지문이 나왔어요")
조사여부 = True
elif 루프수 == 3:
print("타임스탬프를 확인했습니다 22시 7분에 잠금 해제 기록이 있어요")
조사여부 = True
else:
print("현장에서 새로운 단서는 없어요")
elif 선택행동 == "2":
대상번호 = input("누구와 대화할까요 ")
if 대상번호 in ("1", "2", "3", "4", "5"):
대상이름 = 이름들[int(대상번호) - 1]
if not 인터뷰[대상이름]:
if 대상이름 == 범인이름:
print(f"{대상이름}은 {모순[대상이름]}")
인터뷰모순 = True
else:
print(f"{대상이름}은 {알리바이[대상이름]}")
인터뷰[대상이름] = True
else:
print("이미 들은 이야기예요 새로운 단서는 없어요")
else:
print("잘못된 대상 번호입니다")
elif 선택행동 == "3":
시각번호 = input("몇 시 영상을 볼까요 ")
if 시각번호 == "1":
if not 카메라[1]:
print("18시 영상입니다 정우진이 복도를 지나가고 있었어요")
카메라[1] = True
else:
print("이미 확인한 영상입니다")
elif 시각번호 == "2":
if not 카메라[2]:
print("20시 영상입니다 김지안이 연구실에서 나오는 모습이 보였어요")
카메라[2] = True
else:
print("이미 확인한 영상입니다")
elif 시각번호 == "3":
if not 카메라[3]:
print(f"22시 영상입니다 실험실 문이 열리고 누군가 빠져나갔어요! 바로 {범인이름}이에요")
카메라[3] = True
카메라여부 = True
else:
print("이미 확인한 영상입니다")
else:
print("잘못된 시각입니다")
elif 선택행동 == "4":
지목자 = input("누가 범인일까요 ")
if 지목자 == 범인이름:
승리여부 = True
승리루프 = 루프수
print(f"정확합니다 범인은 {범인이름}이에요!")
break
else:
print("잘못된 지목입니다 시간이 다시 되감깁니다")
else:
print("잘못된 선택입니다")
print("밤이 되자 실험실이 폭발했습니다!")
print("시간이 되감기며 하루가 다시 시작됩니다")
if 승리여부:
if 승리루프 < 4:
print(f"완벽 승리입니다 {승리루프} 루프 만에 진범을 잡았어요")
else:
print("승리입니다 진범을 잡아 폭발을 막았습니다!")
else:
print("게임 오버입니다 범인이 우주선을 타고 탈출했습니다")
print(f"진범의 사연: {사연[범인이름]}")