File size: 7,414 Bytes
62379d9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
import random
import requests
import streamlit as st
from streamlit_lottie import st_lottie

class QuoteQuizGame:
    def __init__(self):
        self.questions = [
            {
                "question": "Who said: 'The unexamined life is not worth living'?",
                "choices": ["Plato", "Socrates", "Aristotle"],
                "correct_answer": "Socrates"
            },
            {
                "question": "Which philosopher wrote: 'God is dead. God remains dead. And we have killed him.'?",
                "choices": ["Jean-Paul Sartre", "Friedrich Nietzsche", "Albert Camus"],
                "correct_answer": "Friedrich Nietzsche"
            },
            {
                "question": "Who is credited with the quote: 'I think, therefore I am' (originally in Latin: 'Cogito, ergo sum')?",
                "choices": ["René Descartes", "Immanuel Kant", "John Locke"],
                "correct_answer": "René Descartes"
            },
            {
                "question": "Which ancient Chinese philosopher said: 'The journey of a thousand miles begins with a single step'?",
                "choices": ["Confucius", "Sun Tzu", "Lao Tzu"],
                "correct_answer": "Lao Tzu"
            },
            {
                "question": "Who wrote: 'He who has a why to live can bear almost any how'?",
                "choices": ["Viktor Frankl", "Friedrich Nietzsche", "Carl Jung"],
                "correct_answer": "Friedrich Nietzsche"
            },
            {
                "question": "Which existentialist philosopher said: 'Man is condemned to be free'?",
                "choices": ["Albert Camus", "Simone de Beauvoir", "Jean-Paul Sartre"],
                "correct_answer": "Jean-Paul Sartre"
            },
            {
                "question": "Who is known for the quote: 'The owl of Minerva spreads its wings only with the falling of the dusk'?",
                "choices": ["Georg Wilhelm Friedrich Hegel", "Arthur Schopenhauer", "Søren Kierkegaard"],
                "correct_answer": "Georg Wilhelm Friedrich Hegel"
            },
            {
                "question": "Which philosopher wrote: 'The life of man [is] solitary, poor, nasty, brutish, and short'?",
                "choices": ["John Locke", "Thomas Hobbes", "Jean-Jacques Rousseau"],
                "correct_answer": "Thomas Hobbes"
            },
            {
                "question": "Who said: 'He who fights with monsters should look to it that he himself does not become a monster'?",
                "choices": ["Carl Jung", "Friedrich Nietzsche", "Fyodor Dostoevsky"],
                "correct_answer": "Friedrich Nietzsche"
            },
            {
                "question": "Which philosopher wrote: 'The function of prayer is not to influence God, but rather to change the nature of the one who prays'?",
                "choices": ["Søren Kierkegaard", "Blaise Pascal", "Martin Buber"],
                "correct_answer": "Søren Kierkegaard"
            }
        ]
        random.shuffle(self.questions)
        self.score = 0
        self.current_question = 0

    def get_current_question(self):
        return self.questions[self.current_question]

    def check_answer(self, answer):
        question = self.questions[self.current_question]
        if question["choices"][answer - 1] == question["correct_answer"]:
            self.score += 1
            return True
        return False

    def next_question(self):
        self.current_question += 1
        return self.current_question < len(self.questions)

def load_lottie_url(url: str):
    r = requests.get(url)
    if r.status_code != 200:
        return None
    return r.json()

def show_animation(name, url):
    anim = load_lottie_url(url)
    st_lottie(anim, key=name)

def main():
    st.set_page_config(page_title="Quote Quiz Game with Animations", layout="wide")

    st.title("Quote Quiz Game with Animations")

    if 'quiz_game' not in st.session_state:
        st.session_state.quiz_game = QuoteQuizGame()
        st.session_state.game_over = False

    quiz = st.session_state.quiz_game

    # Quiz Game Section
    st.header("PhD-level Quote Quiz Game")
    if not st.session_state.game_over:
        question = quiz.get_current_question()
        st.write(f"Question {quiz.current_question + 1}:")
        st.write(question["question"])
        
        answer = st.radio("Choose your answer:", question["choices"], key=f"question_{quiz.current_question}")
        
        if st.button("Submit Answer"):
            correct = quiz.check_answer(question["choices"].index(answer) + 1)
            if correct:
                st.success("Correct!")
            else:
                st.error(f"Incorrect. The correct answer was: {question['correct_answer']}")
            
            if not quiz.next_question():
                st.session_state.game_over = True
    
    if st.session_state.game_over:
        st.write(f"Game over! Your final score is: {quiz.score} out of {len(quiz.questions)}.")
        if quiz.score == len(quiz.questions):
            st.write("Perfect score! You're a true philosophy expert!")
        elif quiz.score >= len(quiz.questions) * 0.8:
            st.write("Excellent job! You have a deep understanding of philosophical quotes.")
        elif quiz.score >= len(quiz.questions) * 0.6:
            st.write("Good effort! You have a solid grasp of famous quotes.")
        elif quiz.score >= len(quiz.questions) * 0.4:
            st.write("Not bad! There's room for improvement in your philosophical knowledge.")
        else:
            st.write("Keep studying! The world of philosophy has much to offer.")
        
        if st.button("Play Again"):
            st.session_state.quiz_game = QuoteQuizGame()
            st.session_state.game_over = False
            st.experimental_rerun()

    # Animation Section
    st.header("Animations")
    st.markdown('# Animations: https://lottiefiles.com/recent') 
    st.markdown("# Animate with JSON, SVG, Adobe XD, Figma, and deploy to web, mobile as tiny animation files ")

    col1, col2, col3 = st.columns(3)

    with col1:
        show_animation("Badge1", "https://assets5.lottiefiles.com/packages/lf20_wtohqzml.json")
        show_animation("Badge2", "https://assets5.lottiefiles.com/packages/lf20_i4zw2ddg.json")
        show_animation("Badge3", "https://assets5.lottiefiles.com/private_files/lf30_jfhmdmk5.json")
        show_animation("Graph", "https://assets6.lottiefiles.com/packages/lf20_4gqhiayj.json")

    with col2:
        show_animation("PhoneBot", "https://assets9.lottiefiles.com/packages/lf20_zrqthn6o.json")
        show_animation("SupportBot", "https://assets5.lottiefiles.com/private_files/lf30_cmd8kh2q.json")
        show_animation("ChatBot", "https://assets8.lottiefiles.com/packages/lf20_j1oeaifz.json")
        show_animation("IntelligentMachine", "https://assets8.lottiefiles.com/packages/lf20_edouagsj.json")

    with col3:
        show_animation("GearAI", "https://assets10.lottiefiles.com/packages/lf20_3jkp7dqt.json")
        show_animation("ContextGraph", "https://assets10.lottiefiles.com/private_files/lf30_vwC61X.json")
        show_animation("Yggdrasil", "https://assets4.lottiefiles.com/packages/lf20_8q1bhU.json")
        show_animation("Studying", "https://assets9.lottiefiles.com/packages/lf20_6ft9bypa.json")

if __name__ == "__main__":
    main()