Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -11,39 +11,57 @@ state = {
|
|
11 |
"hints_used": 0
|
12 |
}
|
13 |
|
14 |
-
# Enhanced Storyline with Historical Context
|
15 |
story_intro = """
|
16 |
## 🐦 The Tyne Bridge Pigeon Rebellion
|
17 |
|
18 |
-
|
|
|
19 |
|
20 |
-
**Pigeon Dave
|
21 |
-
|
22 |
-
But **disaster has struck**—**Pigeon Dave has vanished without a trace**!
|
23 |
|
24 |
The **Lord Mayor is preparing his speech**, the **media is swarming**, and the **city’s reputation is on the line**. If Pigeon Dave is not found **within the next hour**, the ceremony will be an **absolute disaster**.
|
|
|
25 |
|
26 |
-
|
|
|
|
|
27 |
|
28 |
-
|
29 |
|
30 |
-
|
|
|
31 |
|
32 |
-
|
|
|
|
|
33 |
"""
|
34 |
|
35 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
puzzles = [
|
37 |
-
{"clue": "
|
38 |
-
{"clue": "The Tyne Bridge was inspired by another, more famous British bridge. Which one?", "answer": "Sydney Harbour Bridge"},
|
39 |
-
{"clue": "
|
40 |
-
{"clue": "Following a trail of
|
41 |
-
{"clue": "A
|
42 |
-
{"clue": "
|
43 |
-
{"clue": "Inside the library, an **ancient-looking book falls from the shelf
|
44 |
-
{"clue": "
|
45 |
-
{"clue": "
|
46 |
-
{"clue": "
|
47 |
]
|
48 |
|
49 |
# Timer and Scoring System
|
@@ -54,7 +72,7 @@ def start_game():
|
|
54 |
state["found_dave"] = False
|
55 |
state["start_time"] = time.time()
|
56 |
state["hints_used"] = 0
|
57 |
-
return story_intro
|
58 |
|
59 |
def get_hint():
|
60 |
if state["progress"] < len(puzzles):
|
@@ -65,14 +83,11 @@ def get_hint():
|
|
65 |
def game_logic(user_input):
|
66 |
if state["progress"] < len(puzzles):
|
67 |
current_puzzle = puzzles[state["progress"]]
|
68 |
-
if user_input
|
69 |
state["progress"] += 1
|
70 |
state["clues_solved"] += 1
|
71 |
if state["progress"] == len(puzzles):
|
72 |
-
|
73 |
-
elapsed_time = time.time() - state["start_time"]
|
74 |
-
score = max(100 - (elapsed_time // 10) - (state["hints_used"] * 5), 0)
|
75 |
-
return f"🎉 You found Pigeon Dave! Newcastle is saved! 🐦\nFinal Score: {int(score)}", None
|
76 |
return f"✅ Correct! {puzzles[state['progress']]['clue']}", None
|
77 |
else:
|
78 |
return "❌ Not quite! Try again.", None
|
@@ -84,9 +99,11 @@ def reset_game():
|
|
84 |
# Gradio Interface
|
85 |
with gr.Blocks() as app:
|
86 |
gr.Markdown(story_intro)
|
|
|
|
|
87 |
|
88 |
game_output = gr.Textbox(label="Game Status", interactive=False, value=start_game())
|
89 |
-
user_input = gr.
|
90 |
submit_btn = gr.Button("Submit Answer")
|
91 |
hint_btn = gr.Button("Get a Hint")
|
92 |
reset_btn = gr.Button("Reset Game")
|
|
|
11 |
"hints_used": 0
|
12 |
}
|
13 |
|
14 |
+
# Enhanced Storyline with Historical Context and Plot Twists
|
15 |
story_intro = """
|
16 |
## 🐦 The Tyne Bridge Pigeon Rebellion
|
17 |
|
18 |
+
### **The Crisis**
|
19 |
+
Newcastle is in **full-blown crisis**.
|
20 |
|
21 |
+
The city's **most famous pigeon**, Pigeon Dave, is missing. As the **only bird in history to receive a salary**, he was meant to be the guest of honor at Newcastle’s **prestigious heritage ceremony**.
|
|
|
|
|
22 |
|
23 |
The **Lord Mayor is preparing his speech**, the **media is swarming**, and the **city’s reputation is on the line**. If Pigeon Dave is not found **within the next hour**, the ceremony will be an **absolute disaster**.
|
24 |
+
"""
|
25 |
|
26 |
+
history_section = """
|
27 |
+
### **A Look Back in Time**
|
28 |
+
The **Tyne Bridge**, completed in **1928**, is one of Newcastle’s most iconic landmarks. During its construction, a peculiar legend emerged—a pigeon, affectionately known as **Pigeon Dave**, became a fixture among the workers.
|
29 |
|
30 |
+
Every morning, Dave **arrived like clockwork**, perched on scaffolding, and “supervised” the laborers. He became such an integral part of the team that, as a **good-humored gesture**, the city **put him on the payroll**, making him the **first and only paid pigeon in British history**.
|
31 |
|
32 |
+
His story, once well-known, faded into obscurity—until today. **Now, it’s your job to track him down.**
|
33 |
+
"""
|
34 |
|
35 |
+
mission_section = """
|
36 |
+
### **Your Mission**
|
37 |
+
Unravel the conspiracy, follow the clues, and ensure Newcastle’s most famous bird **gets the recognition he deserves!**
|
38 |
"""
|
39 |
|
40 |
+
# Introducing Plot Twists & Multiple Endings
|
41 |
+
plot_twists = [
|
42 |
+
"Pigeon Dave was **kidnapped by a secret underground pigeon racing ring** operating in Newcastle! Find the hideout and negotiate his release!",
|
43 |
+
"Dave wasn’t kidnapped—**he was accidentally removed from city records due to a clerical error**. You must battle Newcastle’s bureaucracy to reinstate him!",
|
44 |
+
"Dave doesn’t want to return—he’s **gone into retirement** in a cozy Jesmond garden. Convince him to come back for one last grand public appearance!"
|
45 |
+
]
|
46 |
+
|
47 |
+
endings = [
|
48 |
+
"🏅 **Best Ending:** Dave arrives just in time, delivers a ceremonial ‘coo,’ and gets a **golden bird bath** in his honor!",
|
49 |
+
"🥈 **Neutral Ending:** A **random pigeon fills in for Dave**, the crowd doesn’t notice, and the ceremony proceeds. Meanwhile, Dave watches from a rooftop, nodding approvingly.",
|
50 |
+
"🥉 **Bad Ending:** The Mayor replaces the event with a **two-hour PowerPoint on council budgets.** Newcastle mourns the lost legend."
|
51 |
+
]
|
52 |
+
|
53 |
+
# New Set of More Challenging & Historically Rich Puzzles (Multiple Choice Format)
|
54 |
puzzles = [
|
55 |
+
{"clue": "A cryptic message was found in a Greggs receipt near the Quayside.\nWhere should you investigate first?", "options": ["Grey’s Monument", "Tyne Bridge", "St. James’ Park"], "answer": "Tyne Bridge"},
|
56 |
+
{"clue": "The Tyne Bridge was inspired by another, more famous British bridge. Which one?", "options": ["Tower Bridge", "Sydney Harbour Bridge", "Brooklyn Bridge"], "answer": "Sydney Harbour Bridge"},
|
57 |
+
{"clue": "What is the only letter that does **not** appear in any UK city name?", "options": ["J", "Q", "X"], "answer": "J"},
|
58 |
+
{"clue": "Following a trail of breadcrumbs, you find a mysterious coded note reading: ‘NUFCTHR33L3G3ND’.\nWhat does it refer to?", "options": ["Kevin Keegan", "Alan Shearer", "Bobby Robson"], "answer": "Alan Shearer"},
|
59 |
+
{"clue": "A pub in Bigg Market reports a pigeon causing chaos at **closing time**. Solve this riddle:\n‘Though I have no feet, I leave tracks behind; You follow me wherever I go, Yet you cannot touch me or hold me. What am I?’", "options": ["Wind", "Shadow", "Echo"], "answer": "Shadow"},
|
60 |
+
{"clue": "A cryptic text message appears on your phone: ‘**Check the relic that guards wisdom.**’\nWhere should you look?", "options": ["Library", "Museum", "Cathedral"], "answer": "Library"},
|
61 |
+
{"clue": "Inside the library, an **ancient-looking book falls from the shelf**. The inside cover has a single question written in ink:\n‘**The more you take, the more you leave behind. What am I?**’", "options": ["Memories", "Footsteps", "Secrets"], "answer": "Footsteps"},
|
62 |
+
{"clue": "What is the **oldest building in Newcastle still standing?**", "options": ["Theatre Royal", "Castle Keep", "The Sage"], "answer": "Castle Keep"},
|
63 |
+
{"clue": "If Pigeon Dave worked on the Tyne Bridge construction, where would he have hidden?", "options": ["High Level Bridge", "The Baltic", "Central Station"], "answer": "High Level Bridge"},
|
64 |
+
{"clue": "What was Newcastle’s original name during Roman times?", "options": ["Hadrian’s Wall", "Pons Aelius", "Vicus"], "answer": "Pons Aelius"}
|
65 |
]
|
66 |
|
67 |
# Timer and Scoring System
|
|
|
72 |
state["found_dave"] = False
|
73 |
state["start_time"] = time.time()
|
74 |
state["hints_used"] = 0
|
75 |
+
return story_intro
|
76 |
|
77 |
def get_hint():
|
78 |
if state["progress"] < len(puzzles):
|
|
|
83 |
def game_logic(user_input):
|
84 |
if state["progress"] < len(puzzles):
|
85 |
current_puzzle = puzzles[state["progress"]]
|
86 |
+
if user_input == current_puzzle["answer"]:
|
87 |
state["progress"] += 1
|
88 |
state["clues_solved"] += 1
|
89 |
if state["progress"] == len(puzzles):
|
90 |
+
return random.choice(endings), None
|
|
|
|
|
|
|
91 |
return f"✅ Correct! {puzzles[state['progress']]['clue']}", None
|
92 |
else:
|
93 |
return "❌ Not quite! Try again.", None
|
|
|
99 |
# Gradio Interface
|
100 |
with gr.Blocks() as app:
|
101 |
gr.Markdown(story_intro)
|
102 |
+
gr.Markdown(history_section)
|
103 |
+
gr.Markdown(mission_section)
|
104 |
|
105 |
game_output = gr.Textbox(label="Game Status", interactive=False, value=start_game())
|
106 |
+
user_input = gr.Radio(label="Your Answer", choices=[""], interactive=True)
|
107 |
submit_btn = gr.Button("Submit Answer")
|
108 |
hint_btn = gr.Button("Get a Hint")
|
109 |
reset_btn = gr.Button("Reset Game")
|