Riddle / src /streamlit_app.py
Uzaiir's picture
Update src/streamlit_app.py
ffe335f verified
raw
history blame
5.31 kB
# import streamlit as st
# from riddles import load_riddles, get_random_riddle
# # Loading CSS from file
# def load_css(file_name):
# with open(file_name) as f:
# css = f.read()
# st.markdown(f"<style>{css}</style>", unsafe_allow_html=True)
# load_css('src/css/style.css')
# # Loading riddles
# riddles = load_riddles()
# # Checking if riddles loaded
# if not riddles:
# st.write("No riddles found. Please check your CSV file.")
# else:
# # Initializing session state variables
# if "riddle" not in st.session_state:
# st.session_state.riddle = get_random_riddle(riddles)
# st.session_state.hint_shown = False
# st.session_state.answer_shown = False
# st.session_state.user_answer_key = 0
# # Displaying the riddle
# st.header("Lets Riddle")
# st.write(st.session_state.riddle['Riddle'])
# # Users input
# user_answer = st.text_input("Your answer is :",placeholder="Type Your Answer Here", key=f"user_answer_{st.session_state.user_answer_key}")
# # Buttons submit , hint , reveal
# col1, col2, col3 = st.columns(3)
# with col1:
# if st.button("Submit"):
# if user_answer.strip().lower() == st.session_state.riddle['Answer'].lower():
# st.write("Correct! Well done!")
# else:
# st.write("Incorrect, ask for a hint")
# with col2:
# if st.button("Hint"):
# if not st.session_state.hint_shown:
# st.write(f"Hint: {st.session_state.riddle['Hint']}")
# st.session_state.hint_shown = True
# else:
# st.write("Hint already shown.")
# with col3:
# if st.button("Reveal"):
# if not st.session_state.answer_shown:
# st.write(f"The answer is: {st.session_state.riddle['Answer']}")
# st.session_state.answer_shown = True
# else:
# st.write("Answer already revealed.")
# #Next riddle
# st.write("")
# # Center the button by using a three-column layout
# col_center = st.columns([1, 1, 1])[1]
# with col_center:
# if st.button("Next"):
# st.session_state.riddle = get_random_riddle(riddles)
# st.session_state.hint_shown = False
# st.session_state.answer_shown = False
# st.session_state.user_answer_key += 1 # Increment key to reset input
# st.rerun()
import streamlit as st
from riddles import load_riddles, get_random_riddle
# Load custom CSS
def load_css(file_name):
with open(file_name) as f:
css = f.read()
st.markdown(f"<style>{css}</style>", unsafe_allow_html=True)
load_css('src/css/style.css')
# Load riddles from CSV
riddles = load_riddles()
# Check if riddles loaded
if not riddles:
st.write("No riddles found. Please check your CSV file.")
else:
# Initialize session state
if "riddle" not in st.session_state:
st.session_state.riddle = get_random_riddle(riddles)
st.session_state.hint_shown = False
st.session_state.answer_shown = False
st.session_state.user_answer_key = 0
st.header("Let's Riddle!")
st.write(st.session_state.riddle['Riddle'])
# Input for user's answer
user_answer = st.text_input(
"Your answer is:",
placeholder="Type Your Answer Here",
key=f"user_answer_{st.session_state.user_answer_key}"
)
# Create empty containers to dynamically update content
feedback_container = st.empty()
hint_container = st.empty()
answer_container = st.empty()
# Layout: Submit, Hint, Reveal buttons
col1, col2, col3 = st.columns(3)
with col1:
if st.button("Submit"):
if user_answer.strip().lower() == st.session_state.riddle['Answer'].lower():
feedback_container.write("βœ… Correct! Well done!")
else:
feedback_container.write("❌ Incorrect. Try asking for a hint!")
with col2:
if st.button("Hint"):
if not st.session_state.hint_shown:
hint_container.write(f"πŸ’‘ Hint: {st.session_state.riddle['Hint']}")
st.session_state.hint_shown = True
else:
hint_container.write("Hint already shown.")
with col3:
if st.button("Reveal"):
# Clear the hint when answer is shown
if st.session_state.hint_shown:
hint_container.empty()
if not st.session_state.answer_shown:
answer_container.write(f"🟒 The answer is: {st.session_state.riddle['Answer']}")
st.session_state.answer_shown = True
else:
answer_container.write("Answer already revealed.")
# 'Next' button centered
col_center = st.columns([1, 1, 1])[1]
with col_center:
if st.button("Next"):
st.session_state.riddle = get_random_riddle(riddles)
st.session_state.hint_shown = False
st.session_state.answer_shown = False
st.session_state.user_answer_key += 1
# Clear all previous outputs
feedback_container.empty()
hint_container.empty()
answer_container.empty()
st.rerun()