iffazainab commited on
Commit
8330125
ยท
verified ยท
1 Parent(s): 82e78c4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -40
app.py CHANGED
@@ -1,4 +1,3 @@
1
- # app.py
2
  import gradio as gr
3
  import requests
4
  import os
@@ -91,39 +90,56 @@ def tutor_bot(mode, selected_class, selected_subject, selected_chapter, action_t
91
  return "Invalid mode or missing input."
92
 
93
  # ------------------ HANGMAN GAME ------------------
94
- words_list = ["biology", "physics", "chemistry", "reaction", "organism", "electron"]
95
-
96
- def start_hangman():
97
- word = random.choice(words_list)
98
- state = {
99
- "word": word,
100
- "masked": ["_" for _ in word],
101
- "tries": 6,
 
 
 
 
 
 
 
102
  "guessed": []
103
- }
104
- return state, f"Word: {' '.join(state['masked'])}\nTries left: {state['tries']}"
 
 
 
 
 
 
 
 
 
 
 
 
105
 
106
- def play_hangman(state, guess):
107
- guess = guess.lower()
108
- if guess in state['guessed']:
109
- return state, f"You already guessed '{guess}'.\nWord: {' '.join(state['masked'])}\nTries left: {state['tries']}"
110
 
111
- state['guessed'].append(guess)
 
 
 
112
 
113
- if guess in state['word']:
114
- for i, c in enumerate(state['word']):
115
- if c == guess:
116
- state['masked'][i] = guess
117
- if "_" not in state['masked']:
118
- return state, f"๐ŸŽ‰ You won! The word was: {state['word']}"
119
- else:
120
- return state, f"โœ… Good guess!\nWord: {' '.join(state['masked'])}\nTries left: {state['tries']}"
121
- else:
122
- state['tries'] -= 1
123
- if state['tries'] == 0:
124
- return state, f"๐Ÿ’€ You lost! The word was: {state['word']}"
125
- else:
126
- return state, f"โŒ Wrong guess!\nWord: {' '.join(state['masked'])}\nTries left: {state['tries']}"
127
 
128
  # ------------------ GRADIO UI ------------------
129
  with gr.Blocks(title="AI Textbook Tutor") as app:
@@ -142,16 +158,6 @@ with gr.Blocks(title="AI Textbook Tutor") as app:
142
  run_button = gr.Button("Run Tutor ๐Ÿง ")
143
  output_box = gr.Markdown()
144
 
145
- with gr.Accordion("๐ŸŽฎ Play Hangman", open=False):
146
- with gr.Row():
147
- start_btn = gr.Button("Start Game")
148
- guess_text = gr.Textbox(label="Your Guess")
149
- hangman_state = gr.State()
150
- hangman_output = gr.Textbox(label="Game Status", lines=4)
151
-
152
- start_btn.click(fn=start_hangman, inputs=[], outputs=[hangman_state, hangman_output])
153
- guess_text.submit(fn=play_hangman, inputs=[hangman_state, guess_text], outputs=[hangman_state, hangman_output])
154
-
155
  def update_subjects(selected_class):
156
  return gr.update(choices=list(class_subject_chapters[selected_class].keys()), value=None)
157
 
@@ -184,5 +190,12 @@ with gr.Blocks(title="AI Textbook Tutor") as app:
184
  outputs=output_box
185
  )
186
 
 
 
 
 
 
 
 
187
  app.launch()
188
 
 
 
1
  import gradio as gr
2
  import requests
3
  import os
 
90
  return "Invalid mode or missing input."
91
 
92
  # ------------------ HANGMAN GAME ------------------
93
+ hangman_questions = [
94
+ {"question": "This is the basic unit of life.", "answer": "cell"},
95
+ {"question": "Powerhouse of the cell.", "answer": "mitochondria"},
96
+ {"question": "The force pulling objects toward the Earth.", "answer": "gravity"}
97
+ ]
98
+
99
+ hangman_state = {"question": "", "answer": "", "display": [], "wrong": [], "guessed": [], "max": 6}
100
+
101
+ def init_hangman():
102
+ q = random.choice(hangman_questions)
103
+ hangman_state.update({
104
+ "question": q["question"],
105
+ "answer": q["answer"].lower(),
106
+ "display": ["_" if c.isalpha() else c for c in q["answer"]],
107
+ "wrong": [],
108
  "guessed": []
109
+ })
110
+ return format_hangman()
111
+
112
+ def guess_hangman(letter):
113
+ letter = letter.lower()
114
+ if letter in hangman_state["guessed"] or letter in hangman_state["wrong"]:
115
+ return format_hangman("Already guessed that.")
116
+
117
+ if letter in hangman_state["answer"]:
118
+ for i, l in enumerate(hangman_state["answer"]):
119
+ if l == letter:
120
+ hangman_state["display"][i] = letter
121
+ else:
122
+ hangman_state["wrong"].append(letter)
123
 
124
+ hangman_state["guessed"].append(letter)
 
 
 
125
 
126
+ if "_" not in hangman_state["display"]:
127
+ return format_hangman("๐ŸŽ‰ You won!")
128
+ if len(hangman_state["wrong"]) >= hangman_state["max"]:
129
+ return format_hangman(f"๐Ÿ’€ You lost! Answer: {hangman_state['answer']}")
130
 
131
+ return format_hangman()
132
+
133
+ def format_hangman(msg=""):
134
+ return f"""
135
+ **โ“ Question:** {hangman_state['question']}
136
+
137
+ **๐Ÿ”  Word:** {' '.join(hangman_state['display'])}
138
+
139
+ **โŒ Wrong Guesses:** {' '.join(hangman_state['wrong'])} ({len(hangman_state['wrong'])}/{hangman_state['max']})
140
+
141
+ {msg}
142
+ """
 
 
143
 
144
  # ------------------ GRADIO UI ------------------
145
  with gr.Blocks(title="AI Textbook Tutor") as app:
 
158
  run_button = gr.Button("Run Tutor ๐Ÿง ")
159
  output_box = gr.Markdown()
160
 
 
 
 
 
 
 
 
 
 
 
161
  def update_subjects(selected_class):
162
  return gr.update(choices=list(class_subject_chapters[selected_class].keys()), value=None)
163
 
 
190
  outputs=output_box
191
  )
192
 
193
+ # Hangman Game Section
194
+ gr.Markdown("## ๐ŸŽฎ Educational Hangman Game")
195
+ hangman_display = gr.Markdown(value=init_hangman())
196
+ letter_input = gr.Textbox(label="Enter a Letter")
197
+ letter_input.submit(guess_hangman, inputs=letter_input, outputs=hangman_display)
198
+ gr.Button("๐Ÿ”„ New Question").click(init_hangman, outputs=hangman_display)
199
+
200
  app.launch()
201