Изменения:
1. Ошибка "WHERE game_sessions.user_id IS NULL" + игра получает user_id из бд после создания пользователя, авторизации 2. Провиль пользователя + отображается никнейм 3. Уровни + добавлена рамка с 100 уровнями + добавлена система смены цвета кнопки уровня в зависимости от состояния (пройден/не пройден) 4. Окно победы + добавлено отображение никнейма
This commit is contained in:
parent
9f5d36d1a1
commit
5d34162267
13 changed files with 5512 additions and 234 deletions
|
|
@ -1,13 +1,17 @@
|
|||
import logging
|
||||
import tkinter as tk
|
||||
from tkinter import messagebox
|
||||
from config import BACKGROUND_COLOR, PRIMARY_COLOR, BUTTON_COLOR, BUTTON_TEXT_COLOR, FONT, BIG_FONT, ADMIN_LOGIN, ADMIN_PASSWORD
|
||||
from src.auth import login_user
|
||||
from src.ui.admin_ui import AdminApp # Импорт интерфейса администратора
|
||||
from database.db_events import create_user, check_user
|
||||
from src.ui.user_ui.main_menu import UserApp
|
||||
|
||||
class DogAcademyApp:
|
||||
def __init__(self, root):
|
||||
def __init__(self, root, user_id=None):
|
||||
"""Инициализация приложения."""
|
||||
self.root = root
|
||||
self.user_id = user_id
|
||||
self.root.title("Dog Academy Game")
|
||||
self.root.geometry("1920x1080")
|
||||
self.root.configure(bg=BACKGROUND_COLOR)
|
||||
|
|
@ -20,12 +24,11 @@ class DogAcademyApp:
|
|||
self.current_frame.destroy()
|
||||
|
||||
def show_main_menu(self):
|
||||
"""Показать главное меню с названием игры и кнопками."""
|
||||
"""Показать главное меню."""
|
||||
self.clear_frame()
|
||||
self.current_frame = tk.Frame(self.root, bg=BACKGROUND_COLOR)
|
||||
self.current_frame.pack(expand=True)
|
||||
|
||||
# Название игры
|
||||
title = tk.Label(
|
||||
self.current_frame,
|
||||
text="Dog Academy Game",
|
||||
|
|
@ -35,7 +38,6 @@ class DogAcademyApp:
|
|||
)
|
||||
title.pack(pady=50)
|
||||
|
||||
# Кнопка "Войти"
|
||||
login_button = tk.Button(
|
||||
self.current_frame,
|
||||
text="Войти",
|
||||
|
|
@ -46,7 +48,6 @@ class DogAcademyApp:
|
|||
)
|
||||
login_button.pack(pady=20)
|
||||
|
||||
# Кнопка "Зарегистрироваться"
|
||||
register_button = tk.Button(
|
||||
self.current_frame,
|
||||
text="Зарегистрироваться",
|
||||
|
|
@ -63,7 +64,6 @@ class DogAcademyApp:
|
|||
self.current_frame = tk.Frame(self.root, bg=BACKGROUND_COLOR)
|
||||
self.current_frame.pack(expand=True)
|
||||
|
||||
# Заголовок
|
||||
title = tk.Label(
|
||||
self.current_frame,
|
||||
text="Авторизация",
|
||||
|
|
@ -73,19 +73,16 @@ class DogAcademyApp:
|
|||
)
|
||||
title.pack(pady=50)
|
||||
|
||||
# Логин
|
||||
login_label = tk.Label(self.current_frame, text="Логин:", bg=BACKGROUND_COLOR, fg=PRIMARY_COLOR, font=FONT)
|
||||
login_label.pack()
|
||||
self.login_entry = tk.Entry(self.current_frame, font=FONT)
|
||||
self.login_entry.pack(pady=10)
|
||||
|
||||
# Пароль
|
||||
password_label = tk.Label(self.current_frame, text="Пароль:", bg=BACKGROUND_COLOR, fg=PRIMARY_COLOR, font=FONT)
|
||||
password_label.pack()
|
||||
self.password_entry = tk.Entry(self.current_frame, show="*", font=FONT)
|
||||
self.password_entry.pack(pady=10)
|
||||
|
||||
# Кнопка "Показать пароль"
|
||||
show_password_button = tk.Button(
|
||||
self.current_frame,
|
||||
text="Показать пароль",
|
||||
|
|
@ -96,7 +93,6 @@ class DogAcademyApp:
|
|||
)
|
||||
show_password_button.pack(pady=10)
|
||||
|
||||
# Кнопка "Войти"
|
||||
login_button = tk.Button(
|
||||
self.current_frame,
|
||||
text="Войти",
|
||||
|
|
@ -107,7 +103,6 @@ class DogAcademyApp:
|
|||
)
|
||||
login_button.pack(pady=20)
|
||||
|
||||
# Кнопка "Вернуться на главную"
|
||||
back_button = tk.Button(
|
||||
self.current_frame,
|
||||
text="Вернуться на главную",
|
||||
|
|
@ -132,17 +127,21 @@ class DogAcademyApp:
|
|||
|
||||
if login == ADMIN_LOGIN and password == ADMIN_PASSWORD:
|
||||
messagebox.showinfo("Успех", "Вы успешно авторизованы как администратор!")
|
||||
self.show_admin_panel() # Переходим к админ-панели
|
||||
elif check_user(login, password):
|
||||
messagebox.showinfo("Успех", "Вы успешно авторизованы!")
|
||||
self.show_user_dashboard() # Переходим к панели пользователя
|
||||
self.user_id = None # Администратору не нужен user_id
|
||||
self.show_admin_panel()
|
||||
else:
|
||||
messagebox.showerror("Ошибка", "Неверные данные. Попробуйте снова.")
|
||||
success, user_id = login_user(login, password)
|
||||
if success:
|
||||
messagebox.showinfo("Успех", "Вы успешно авторизованы!")
|
||||
self.user_id = user_id # Сохраняем user_id
|
||||
self.show_user_dashboard()
|
||||
else:
|
||||
messagebox.showerror("Ошибка", "Неверный логин или пароль.")
|
||||
|
||||
def show_admin_panel(self):
|
||||
"""Отображение интерфейса администратора."""
|
||||
self.clear_frame()
|
||||
AdminApp(self.root) # Создаем экземпляр админ-панели
|
||||
AdminApp(self.root)
|
||||
|
||||
def show_registration_screen(self):
|
||||
"""Показать экран регистрации."""
|
||||
|
|
@ -150,7 +149,6 @@ class DogAcademyApp:
|
|||
self.current_frame = tk.Frame(self.root, bg=BACKGROUND_COLOR)
|
||||
self.current_frame.pack(expand=True)
|
||||
|
||||
# Заголовок
|
||||
title = tk.Label(
|
||||
self.current_frame,
|
||||
text="Регистрация",
|
||||
|
|
@ -160,36 +158,21 @@ class DogAcademyApp:
|
|||
)
|
||||
title.pack(pady=50)
|
||||
|
||||
# Логин
|
||||
login_label = tk.Label(self.current_frame, text="Логин:", bg=BACKGROUND_COLOR, fg=PRIMARY_COLOR, font=FONT)
|
||||
login_label.pack()
|
||||
self.reg_login_entry = tk.Entry(self.current_frame, font=FONT)
|
||||
self.reg_login_entry.pack(pady=10)
|
||||
|
||||
# Пароль
|
||||
password_label = tk.Label(self.current_frame, text="Пароль:", bg=BACKGROUND_COLOR, fg=PRIMARY_COLOR, font=FONT)
|
||||
password_label.pack()
|
||||
self.reg_password_entry = tk.Entry(self.current_frame, show="*", font=FONT)
|
||||
self.reg_password_entry.pack(pady=10)
|
||||
|
||||
# Кнопка "Показать пароль"
|
||||
show_password_button = tk.Button(
|
||||
self.current_frame,
|
||||
text="Показать пароль",
|
||||
bg=BUTTON_COLOR,
|
||||
fg=BUTTON_TEXT_COLOR,
|
||||
font=FONT,
|
||||
command=self.toggle_registration_password,
|
||||
)
|
||||
show_password_button.pack(pady=10)
|
||||
|
||||
# Никнейм
|
||||
username_label = tk.Label(self.current_frame, text="Никнейм:", bg=BACKGROUND_COLOR, fg=PRIMARY_COLOR, font=FONT)
|
||||
username_label.pack()
|
||||
self.username_entry = tk.Entry(self.current_frame, font=FONT)
|
||||
self.username_entry.pack(pady=10)
|
||||
|
||||
# Кнопка "Зарегистрироваться"
|
||||
register_button = tk.Button(
|
||||
self.current_frame,
|
||||
text="Зарегистрироваться",
|
||||
|
|
@ -200,7 +183,6 @@ class DogAcademyApp:
|
|||
)
|
||||
register_button.pack(pady=20)
|
||||
|
||||
# Кнопка "Вернуться на главную"
|
||||
back_button = tk.Button(
|
||||
self.current_frame,
|
||||
text="Вернуться на главную",
|
||||
|
|
@ -222,19 +204,19 @@ class DogAcademyApp:
|
|||
"""Регистрация нового пользователя."""
|
||||
login = self.reg_login_entry.get()
|
||||
password = self.reg_password_entry.get()
|
||||
username = self.username_entry.get() # Получаем имя пользователя
|
||||
username = self.username_entry.get()
|
||||
|
||||
if login and password and username:
|
||||
success, message = create_user(login, password, username) # Передаем имя пользователя
|
||||
success, message = create_user(login, password, username)
|
||||
if success:
|
||||
messagebox.showinfo("Успех", message)
|
||||
self.show_login_screen()
|
||||
else:
|
||||
messagebox.showerror("Ошибка", message)
|
||||
else:
|
||||
messagebox.showerror("Ошибка", "Пожалуйста, заполните все поля.")
|
||||
messagebox.showerror("Ошибка", "Заполните все поля.")
|
||||
|
||||
def show_user_dashboard(self):
|
||||
"""Переход к пользовательскому интерфейсу."""
|
||||
self.clear_frame()
|
||||
"""Перейти к главному меню пользователя после авторизации."""
|
||||
UserApp(self.root)
|
||||
UserApp(self.root, self.user_id)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue