Uzaiir commited on
Commit
68064b7
Β·
verified Β·
1 Parent(s): b1d6bf8

Update src/riddles.py

Browse files
Files changed (1) hide show
  1. src/riddles.py +101 -16
src/riddles.py CHANGED
@@ -1,20 +1,105 @@
1
- import csv
2
- import random
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  import streamlit as st
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
 
5
- def load_riddles():
6
- riddles = []
7
- try:
8
- with open('src/Riddles.csv', mode='r', encoding='utf-8') as file:
9
- reader = csv.DictReader(file)
10
- if all(field in reader.fieldnames for field in ['Riddle', 'Hint', 'Answer']):
11
- for row in reader:
12
- riddles.append(row)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  else:
14
- st.write("CSV file is missing one or more required columns: 'Riddle', 'Hint', 'Answer'")
15
- except Exception as e:
16
- st.write(f"Error loading riddles: {e}")
17
- return riddles
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
- def get_random_riddle(riddles):
20
- return random.choice(riddles) if riddles else None
 
1
+ # import csv
2
+ # import random
3
+ # import streamlit as st
4
+
5
+ # def load_riddles():
6
+ # riddles = []
7
+ # try:
8
+ # with open('src/Riddles.csv', mode='r', encoding='utf-8') as file:
9
+ # reader = csv.DictReader(file)
10
+ # if all(field in reader.fieldnames for field in ['Riddle', 'Hint', 'Answer']):
11
+ # for row in reader:
12
+ # riddles.append(row)
13
+ # else:
14
+ # st.write("CSV file is missing one or more required columns: 'Riddle', 'Hint', 'Answer'")
15
+ # except Exception as e:
16
+ # st.write(f"Error loading riddles: {e}")
17
+ # return riddles
18
+
19
+ # def get_random_riddle(riddles):
20
+ # return random.choice(riddles) if riddles else None
21
+
22
+
23
  import streamlit as st
24
+ from riddles import load_riddles, get_random_riddle
25
+
26
+ # Load custom CSS
27
+ def load_css(file_name):
28
+ with open(file_name) as f:
29
+ css = f.read()
30
+ st.markdown(f"<style>{css}</style>", unsafe_allow_html=True)
31
+
32
+ load_css('src/css/style.css')
33
+
34
+ # Load riddles from CSV
35
+ riddles = load_riddles()
36
+
37
+ # Check if riddles loaded
38
+ if not riddles:
39
+ st.write("No riddles found. Please check your CSV file.")
40
+ else:
41
+ # Initialize session state
42
+ if "riddle" not in st.session_state:
43
+ st.session_state.riddle = get_random_riddle(riddles)
44
+ st.session_state.hint_shown = False
45
+ st.session_state.answer_shown = False
46
+ st.session_state.user_answer_key = 0
47
+
48
+ st.header("Let's Riddle!")
49
+ st.write(st.session_state.riddle['Riddle'])
50
 
51
+ # Input for user's answer
52
+ user_answer = st.text_input(
53
+ "Your answer is:",
54
+ placeholder="Type Your Answer Here",
55
+ key=f"user_answer_{st.session_state.user_answer_key}"
56
+ )
57
+
58
+ # Create empty containers to dynamically update content
59
+ feedback_container = st.empty()
60
+ hint_container = st.empty()
61
+ answer_container = st.empty()
62
+
63
+ # Layout: Submit, Hint, Reveal buttons
64
+ col1, col2, col3 = st.columns(3)
65
+ with col1:
66
+ if st.button("Submit"):
67
+ if user_answer.strip().lower() == st.session_state.riddle['Answer'].lower():
68
+ feedback_container.write("βœ… Correct! Well done!")
69
+ else:
70
+ feedback_container.write("❌ Incorrect. Try asking for a hint!")
71
+
72
+ with col2:
73
+ if st.button("Hint"):
74
+ if not st.session_state.hint_shown:
75
+ hint_container.write(f"πŸ’‘ Hint: {st.session_state.riddle['Hint']}")
76
+ st.session_state.hint_shown = True
77
  else:
78
+ hint_container.write("Hint already shown.")
79
+
80
+ with col3:
81
+ if st.button("Reveal"):
82
+ # Clear the hint when answer is shown
83
+ if st.session_state.hint_shown:
84
+ hint_container.empty()
85
+ if not st.session_state.answer_shown:
86
+ answer_container.write(f"🟒 The answer is: {st.session_state.riddle['Answer']}")
87
+ st.session_state.answer_shown = True
88
+ else:
89
+ answer_container.write("Answer already revealed.")
90
+
91
+ # 'Next' button centered
92
+ col_center = st.columns([1, 1, 1])[1]
93
+ with col_center:
94
+ if st.button("Next"):
95
+ st.session_state.riddle = get_random_riddle(riddles)
96
+ st.session_state.hint_shown = False
97
+ st.session_state.answer_shown = False
98
+ st.session_state.user_answer_key += 1
99
+
100
+ # Clear all previous outputs
101
+ feedback_container.empty()
102
+ hint_container.empty()
103
+ answer_container.empty()
104
 
105
+ st.rerun()