Riddle / src /streamlit_app.py
Uzaiir's picture
Update src/streamlit_app.py
8dad10b verified
raw
history blame
2.37 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()