Исправления:
1. "Пользователь не найден" + заполнила таблицы из бд Dogs, Qoestions. 2. Меню паузы + оно больше не появляется в главном меню, при выборе собаки и уровня. 3. Окно победы + не открывается куча окон, собака не двигается, пока окно победы активно + добавлена кнопка "выйти в главное меню" 3. Окно регистрации + кнопка "посмотреть пароль" 4. таблица GameSessions + сохранение игрового процесса в таблицу GameSessions + одинаковые данные переносятся автоматически в таблицу GameSessions + собранные косточки и тп заполняют только таблицу GameSessions 5. Окно "Профиль пользователя" + нет ошибки открытия окна + корректное сохранение игрового процесса (уровни, косточки) 6. Окно "Магазин" + не кликабельная + кнопка "назад" - shop_ui.py 7. Окно "База знаний" + не кликабельная + кнопка "назад" - knowledge_ui.py
This commit is contained in:
parent
815f432536
commit
9f5d36d1a1
20 changed files with 3093 additions and 157 deletions
Binary file not shown.
|
|
@ -95,13 +95,12 @@ def save_progress(user_id, level, score, duration, health, hunger, sleepiness):
|
|||
session.close()
|
||||
|
||||
def get_user_progress(user_id):
|
||||
"""Получение прогресса пользователя по его ID."""
|
||||
"""Получение игрового прогресса пользователя."""
|
||||
session = get_session()
|
||||
try:
|
||||
progress = session.query(GameSession).filter_by(user_id=user_id).all()
|
||||
return progress
|
||||
except SQLAlchemyError as e:
|
||||
print(f"Ошибка при получении прогресса: {e}")
|
||||
return session.query(GameSession).filter_by(user_id=user_id).all()
|
||||
except Exception as e:
|
||||
print(f"Ошибка при получении прогресса пользователя: {e}")
|
||||
return []
|
||||
finally:
|
||||
session.close()
|
||||
|
|
@ -316,4 +315,4 @@ def update_question(question_id, text, helpful_info):
|
|||
session.rollback()
|
||||
return False, f"Ошибка при обновлении: {e}"
|
||||
finally:
|
||||
session.close()
|
||||
session.close()
|
||||
|
|
@ -46,4 +46,4 @@ def close_sessions():
|
|||
print("Закрытие сессии...")
|
||||
current_session.close()
|
||||
else:
|
||||
print("Нет активной сессии для закрытия.")
|
||||
print("Нет активной сессии для закрытия.")
|
||||
67
database/info/Dogs_table.py
Normal file
67
database/info/Dogs_table.py
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
from database.db_session import get_session
|
||||
from database.models import Dogs
|
||||
|
||||
DOG_CHARACTERS = {
|
||||
"Chihuahua": {
|
||||
"characteristics": "Скорость: 8, Выносливость: 5, Умение: Быстрое уклонение.",
|
||||
"behavior": "Энергичный, часто лайливый.",
|
||||
"care_info": "Нуждается в регулярной чистке зубов и когтей.",
|
||||
"admin_comments": "Идеален для активных владельцев."
|
||||
},
|
||||
"Corgi": {
|
||||
"characteristics": "Скорость: 6, Выносливость: 7, Умение: Дополнительный прыжок.",
|
||||
"behavior": "Дружелюбный, легко обучаемый.",
|
||||
"care_info": "Важно контролировать вес из-за коротких лап.",
|
||||
"admin_comments": "Подходит для семей с детьми."
|
||||
},
|
||||
"Golden Retriever": {
|
||||
"characteristics": "Скорость: 7, Выносливость: 8, Умение: Увеличенные очки за правильные ответы.",
|
||||
"behavior": "Очень умный и добрый.",
|
||||
"care_info": "Требует регулярной чистки шерсти.",
|
||||
"admin_comments": "Идеален для владельцев, ищущих верного друга."
|
||||
},
|
||||
"Husky": {
|
||||
"characteristics": "Скорость: 9, Выносливость: 6, Умение: Ускорение.",
|
||||
"behavior": "Независимый, требует много активности.",
|
||||
"care_info": "Плохо переносит жару, требует частых прогулок.",
|
||||
"admin_comments": "Для опытных владельцев."
|
||||
},
|
||||
"Pomeranian": {
|
||||
"characteristics": "Скорость: 7, Выносливость: 4, Умение: Уменьшение штрафа за ошибки.",
|
||||
"behavior": "Веселый, преданный.",
|
||||
"care_info": "Шерсть требует ежедневного ухода.",
|
||||
"admin_comments": "Идеален для жизни в квартире."
|
||||
},
|
||||
"Pug": {
|
||||
"characteristics": "Скорость: 5, Выносливость: 9, Умение: Сохраняет здоровье при столкновениях.",
|
||||
"behavior": "Ласковый, склонен к перееданию.",
|
||||
"care_info": "Внимание к дыханию и физической активности.",
|
||||
"admin_comments": "Для спокойного образа жизни."
|
||||
},
|
||||
"Yorkshire Terrier": {
|
||||
"characteristics": "Скорость: 6, Выносливость: 5, Умение: Быстрое восстановление характеристик.",
|
||||
"behavior": "Компактный, умный.",
|
||||
"care_info": "Требует профессиональной стрижки.",
|
||||
"admin_comments": "Подходит для маленьких пространств."
|
||||
}
|
||||
}
|
||||
|
||||
def populate_dogs():
|
||||
session = get_session()
|
||||
try:
|
||||
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)
|
||||
session.commit()
|
||||
print("Таблица Dogs успешно заполнена.")
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
print(f"Ошибка при заполнении Dogs: {e}")
|
||||
finally:
|
||||
session.close()
|
||||
34
database/info/GameSessions_table.py
Normal file
34
database/info/GameSessions_table.py
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
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."""
|
||||
session = get_session()
|
||||
try:
|
||||
# Создаем новый объект GameSession
|
||||
game_session = GameSession(
|
||||
user_id=user_id,
|
||||
level=level,
|
||||
score=score,
|
||||
duration=duration,
|
||||
health=health,
|
||||
hunger=hunger,
|
||||
sleepiness=sleepiness,
|
||||
)
|
||||
session.add(game_session)
|
||||
session.commit() # Сохраняем данные в таблице
|
||||
print(f"Игровой процесс для пользователя {user_id} на уровне {level} успешно сохранен.")
|
||||
except SQLAlchemyError as e:
|
||||
session.rollback()
|
||||
print(f"Ошибка при сохранении игрового процесса: {e}")
|
||||
finally:
|
||||
session.close()
|
||||
|
||||
def print_user_progress(user_id):
|
||||
"""Печать прогресса пользователя из таблицы GameSessions."""
|
||||
progress = get_user_progress(user_id)
|
||||
for session in progress:
|
||||
print(f"Уровень: {session.level}, Очки: {session.score}, Время: {session.duration} секунд")
|
||||
99
database/info/Questions_table.py
Normal file
99
database/info/Questions_table.py
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
from database.db_session import get_session
|
||||
from database.models import Dogs, Questions
|
||||
|
||||
DOG_QUESTIONS = {
|
||||
"Chihuahua": [
|
||||
{
|
||||
"question_text": "Почему у Чихуахуа часто возникают проблемы с зубами?",
|
||||
"helpful_info": "Миниатюрный размер приводит к скоплению налета и зубных отложений.",
|
||||
},
|
||||
{
|
||||
"question_text": "Какая активность лучше всего подходит для Чихуахуа?",
|
||||
"helpful_info": "Легкие прогулки и домашние игры.",
|
||||
}
|
||||
],
|
||||
"Corgi": [
|
||||
{
|
||||
"question_text": "Почему важно контролировать вес Корги?",
|
||||
"helpful_info": "Избыточный вес может негативно повлиять на суставы.",
|
||||
},
|
||||
{
|
||||
"question_text": "Как можно поддерживать здоровье суставов у Корги?",
|
||||
"helpful_info": "Обеспечьте умеренную активность и сбалансированное питание.",
|
||||
}
|
||||
],
|
||||
"Golden Retriever": [
|
||||
{
|
||||
"question_text": "Почему важно регулярно вычесывать шерсть Голден Ретривера?",
|
||||
"helpful_info": "Это предотвращает образование колтунов.",
|
||||
},
|
||||
{
|
||||
"question_text": "Какое питание подходит для Голден Ретриверов?",
|
||||
"helpful_info": "Сбалансированное питание с учетом активности и возраста.",
|
||||
}
|
||||
],
|
||||
"Husky": [
|
||||
{
|
||||
"question_text": "Какой климат подходит для Хаски?",
|
||||
"helpful_info": "Они комфортнее чувствуют себя в холодном климате.",
|
||||
},
|
||||
{
|
||||
"question_text": "Почему Хаски требуют много физической активности?",
|
||||
"helpful_info": "Эта порода обладает высокой энергией и выносливостью.",
|
||||
}
|
||||
],
|
||||
"Pomeranian": [
|
||||
{
|
||||
"question_text": "Как правильно ухаживать за шерстью Померанского шпица?",
|
||||
"helpful_info": "Ежедневно расчесывать шерсть, чтобы избежать колтунов.",
|
||||
},
|
||||
{
|
||||
"question_text": "Почему важно следить за зубами Померанского шпица?",
|
||||
"helpful_info": "Они склонны к зубному налету, что может привести к проблемам.",
|
||||
}
|
||||
],
|
||||
"Pug": [
|
||||
{
|
||||
"question_text": "Почему мопсы склонны к ожирению?",
|
||||
"helpful_info": "Их низкая активность и любовь к еде требуют контроля рациона.",
|
||||
},
|
||||
{
|
||||
"question_text": "Какие проблемы с дыханием могут возникнуть у мопсов?",
|
||||
"helpful_info": "Из-за их плоской морды дыхание может быть затруднено.",
|
||||
}
|
||||
],
|
||||
"Yorkshire Terrier": [
|
||||
{
|
||||
"question_text": "Как часто нужно стричь шерсть Йоркширского терьера?",
|
||||
"helpful_info": "Примерно раз в 4-6 недель для поддержания аккуратного вида.",
|
||||
},
|
||||
{
|
||||
"question_text": "Как ухаживать за шерстью Йоркширского терьера?",
|
||||
"helpful_info": "Регулярно расчесывать и использовать специальные средства.",
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
def populate_questions():
|
||||
session = get_session()
|
||||
try:
|
||||
dogs = {dog.breed: dog.dog_id for dog in session.query(Dogs).all()}
|
||||
for breed, questions in DOG_QUESTIONS.items():
|
||||
dog_id = dogs.get(breed)
|
||||
if not dog_id:
|
||||
print(f"Порода '{breed}' отсутствует.")
|
||||
continue
|
||||
for question_data in questions:
|
||||
question = Questions(
|
||||
dog_id=dog_id,
|
||||
question_text=question_data["question_text"],
|
||||
helpful_info=question_data["helpful_info"]
|
||||
)
|
||||
session.add(question)
|
||||
session.commit()
|
||||
print("Таблица Questions успешно заполнена.")
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
print(f"Ошибка при заполнении Questions: {e}")
|
||||
finally:
|
||||
session.close()
|
||||
0
database/info/__init__.py
Normal file
0
database/info/__init__.py
Normal file
|
|
@ -87,4 +87,4 @@ class Notifications(Base):
|
|||
is_read = Column(Boolean, default=False) # Булевый тип для read
|
||||
|
||||
# Связь с таблицей Users
|
||||
user = relationship("Users", back_populates="notifications")
|
||||
user = relationship("Users", back_populates="notifications")
|
||||
Loading…
Add table
Add a link
Reference in a new issue