Изменения:

1. Ошибка "WHERE game_sessions.user_id IS NULL"
+ игра получает user_id из бд после создания пользователя, авторизации
2. Провиль пользователя
+ отображается никнейм
3. Уровни
+ добавлена рамка с 100 уровнями
+ добавлена система смены цвета кнопки уровня в зависимости от состояния (пройден/не пройден)
4. Окно победы
+ добавлено отображение никнейма
This commit is contained in:
Xatiko 2024-12-03 02:23:50 +03:00
parent 9f5d36d1a1
commit 5d34162267
13 changed files with 5512 additions and 234 deletions

View file

@ -1,3 +1,7 @@
import logging
from sqlalchemy.exc import SQLAlchemyError
from database.db_session import get_session
from database.models import Dogs
@ -47,21 +51,44 @@ DOG_CHARACTERS = {
}
def populate_dogs():
"""
Заполнение таблицы Dogs предустановленными данными.
"""
session = get_session()
try:
logging.info("Начинается заполнение таблицы Dogs.")
for breed, data in DOG_CHARACTERS.items():
dog = Dogs(
breed=breed,
characteristics=data['characteristics'],
behavior=data['behavior'],
care_info=data['care_info'],
admin_comments=data['admin_comments']
)
session.add(dog)
existing_dog = session.query(Dogs).filter_by(breed=breed).first()
if not existing_dog:
dog = Dogs(
breed=breed,
characteristics=data['characteristics'],
behavior=data['behavior'],
care_info=data['care_info'],
admin_comments=data['admin_comments']
)
session.add(dog)
session.commit()
print("Таблица Dogs успешно заполнена.")
except Exception as e:
logging.info("Таблица Dogs успешно заполнена.")
except SQLAlchemyError as e:
session.rollback()
print(f"Ошибка при заполнении Dogs: {e}")
logging.error(f"Ошибка при заполнении Dogs: {e}")
finally:
session.close()
def get_all_dogs():
"""
Получение списка всех пород собак из базы данных.
:return: Список объектов Dogs.
"""
session = get_session()
try:
dogs = session.query(Dogs).all()
return dogs
except SQLAlchemyError as e:
logging.error(f"Ошибка при получении списка собак: {e}")
return []
finally:
session.close()

View file

@ -1,34 +1,48 @@
import logging
from sqlalchemy import func
from database.db_events import get_user_progress
from database.db_session import get_session
from sqlalchemy.exc import SQLAlchemyError
from database.models import GameSession
def save_game_session(user_id, level, score, duration, health, hunger, sleepiness):
"""Сохранение игрового процесса в таблицу GameSessions."""
def save_game_session(user_id, level, score, steps, duration=0, health=100, hunger=0, sleepiness=0):
"""Сохранение игрового прогресса."""
session = get_session()
try:
# Создаем новый объект GameSession
game_session = GameSession(
session.add(GameSession(
user_id=user_id,
level=level,
score=score,
steps=steps,
duration=duration,
health=health,
hunger=hunger,
sleepiness=sleepiness,
)
session.add(game_session)
session.commit() # Сохраняем данные в таблице
print(f"Игровой процесс для пользователя {user_id} на уровне {level} успешно сохранен.")
except SQLAlchemyError as e:
sleepiness=sleepiness
))
session.commit()
logging.info(f"Сессия сохранена: user_id={user_id}, level={level}, score={score}")
except Exception as e:
session.rollback()
print(f"Ошибка при сохранении игрового процесса: {e}")
finally:
session.close()
logging.error(f"Ошибка при сохранении игровой сессии: {e}")
raise
def print_user_progress(user_id):
"""Печать прогресса пользователя из таблицы GameSessions."""
"""
Печать прогресса пользователя из таблицы GameSessions.
:param user_id: ID пользователя
"""
if not user_id:
logging.error("user_id отсутствует. Невозможно получить прогресс.")
return
progress = get_user_progress(user_id)
if not progress:
print(f"У пользователя с ID {user_id} нет сохраненного прогресса.")
return
print(f"Прогресс пользователя (user_id={user_id}):")
for session in progress:
print(f"Уровень: {session.level}, Очки: {session.score}, Время: {session.duration} секунд")
print(f"- Уровень: {session.level}, Очки: {session.score}, Время: {session.duration} сек")