Исправления:
1. Игровой процесс + сохраняетсяв базу данных + после успешного прохождения уровня всплывает окно победы, после нажатия на кнопку "следующий уровень" появляется обратный отсчёт и начинается следующий уровень, карта обновляется.
This commit is contained in:
parent
5d34162267
commit
57f7c09541
6 changed files with 2762 additions and 54 deletions
|
|
@ -1,31 +1,44 @@
|
|||
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, steps, duration=0, health=100, hunger=0, sleepiness=0):
|
||||
"""Сохранение игрового прогресса."""
|
||||
session = get_session()
|
||||
def save_game_session(user_id, level, score, duration, steps, health, hunger, sleepiness):
|
||||
"""Сохранение игрового прогресса с обновлением существующей записи."""
|
||||
session = get_session() # Получаем сессию для работы с базой данных
|
||||
try:
|
||||
session.add(GameSession(
|
||||
user_id=user_id,
|
||||
level=level,
|
||||
score=score,
|
||||
steps=steps,
|
||||
duration=duration,
|
||||
health=health,
|
||||
hunger=hunger,
|
||||
sleepiness=sleepiness
|
||||
))
|
||||
session.commit()
|
||||
logging.info(f"Сессия сохранена: user_id={user_id}, level={level}, score={score}")
|
||||
# Проверяем, существует ли уже запись для данного пользователя и уровня
|
||||
existing_session = session.query(GameSession).filter_by(user_id=user_id, level=level).first()
|
||||
if existing_session:
|
||||
logging.info(f"Обновление прогресса для user_id={user_id}, level={level}.")
|
||||
existing_session.score = score
|
||||
existing_session.duration = duration
|
||||
existing_session.steps = steps
|
||||
existing_session.health = health
|
||||
existing_session.hunger = hunger
|
||||
existing_session.sleepiness = sleepiness
|
||||
else:
|
||||
# Если записи нет, создаем новую
|
||||
new_session = GameSession(
|
||||
user_id=user_id,
|
||||
level=level,
|
||||
score=score,
|
||||
duration=duration,
|
||||
steps=steps,
|
||||
health=health,
|
||||
hunger=hunger,
|
||||
sleepiness=sleepiness
|
||||
)
|
||||
session.add(new_session) # Добавляем в сессию
|
||||
session.commit() # Сохраняем изменения в базе данных
|
||||
logging.info(f"Прогресс успешно сохранён: user_id={user_id}, level={level}, score={score}")
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
logging.error(f"Ошибка при сохранении игровой сессии: {e}")
|
||||
raise
|
||||
session.rollback() # Откатываем изменения в случае ошибки
|
||||
logging.error(f"Ошибка при сохранении прогресса: {e}")
|
||||
finally:
|
||||
session.close() # Закрываем сессию
|
||||
|
||||
|
||||
|
||||
def print_user_progress(user_id):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue