| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- import tkinter as tk
- from tkinter import messagebox
- class SimpleGame:
- def __init__(self, root):
- self.root = root
- self.root.title("Викторина по лекции")
- self.root.geometry("500x450")
- self.root.configure(bg="#1e1e2e")
-
- # Данные игры
- self.score = 0
- self.current = 0
-
- # Вопросы и ответы (из лекции)
- self.questions = [
- {"q": "Внезапный отказ — это...", "a": "Резкое нарушение работоспособности"},
- {"q": "Постепенный отказ свидетельствует о...", "a": "Точности"},
- {"q": "Прерывистые отказы иначе называют...", "a": "Сбои"},
- {"q": "Что помогает от прерывистых отказов в дискретных системах?", "a": "Коды"},
- {"q": "Сколько групп методов восстановления? (цифра)", "a": "4"}
- ]
-
- # Интерфейс
- self.score_label = tk.Label(
- root,
- text=f"Счёт: {self.score}",
- font=("Arial", 14, "bold"),
- bg="#1e1e2e",
- fg="#89b4fa"
- )
- self.score_label.pack(pady=10)
-
- self.question_label = tk.Label(
- root,
- text="",
- font=("Arial", 13),
- bg="#1e1e2e",
- fg="white",
- wraplength=450,
- justify="center"
- )
- self.question_label.pack(pady=40)
-
- self.entry = tk.Entry(
- root,
- font=("Arial", 12),
- justify="center",
- bg="#313244",
- fg="white",
- insertbackground="white"
- )
- self.entry.pack(pady=10)
- self.entry.bind("<Return>", lambda e: self.check_answer())
-
- self.check_btn = tk.Button(
- root,
- text="Ответить",
- font=("Arial", 12),
- bg="#89b4fa",
- fg="#1e1e2e",
- activebackground="#89b4fa",
- cursor="hand2",
- command=self.check_answer
- )
- self.check_btn.pack(pady=10)
-
- self.feedback = tk.Label(
- root,
- text="",
- font=("Arial", 11),
- bg="#1e1e2e",
- fg="#a6e3a1"
- )
- self.feedback.pack(pady=20)
-
- self.next_btn = tk.Button(
- root,
- text="Следующий вопрос →",
- font=("Arial", 11),
- bg="#585b70",
- fg="white",
- state="disabled",
- cursor="hand2",
- command=self.next_question
- )
- self.next_btn.pack(pady=10)
-
- # Загружаем первый вопрос
- self.show_question()
-
- def show_question(self):
- self.question_label.config(text=f"{self.questions[self.current]['q']}")
- self.entry.delete(0, tk.END)
- self.entry.focus()
- self.feedback.config(text="")
- self.next_btn.config(state="disabled")
- self.check_btn.config(state="normal")
-
- def check_answer(self):
- user_answer = self.entry.get().strip().lower()
- correct = self.questions[self.current]["a"].lower()
-
- if user_answer == correct:
- self.score += 1
- self.score_label.config(text=f"Счёт: {self.score}")
- self.feedback.config(text=" Правильно! +1 балл", fg="#a6e3a1")
- else:
- self.feedback.config(
- text=f" Неправильно! Правильный ответ: {self.questions[self.current]['a']}",
- fg="#f38ba8"
- )
-
- self.check_btn.config(state="disabled")
- self.next_btn.config(state="normal")
-
- def next_question(self):
- self.current += 1
- if self.current < len(self.questions):
- self.show_question()
- else:
- messagebox.showinfo(
- "Игра окончена",
- f"Игра завершена!\n\nВаш счёт: {self.score} из {len(self.questions)}"
- )
- self.restart()
-
- def restart(self):
- self.score = 0
- self.current = 0
- self.score_label.config(text=f"Счёт: {self.score}")
- self.show_question()
- if __name__ == "__main__":
- root = tk.Tk()
- game = SimpleGame(root)
- root.mainloop()
|