Skip to content

aaogoltcov/DJCookies

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Игра "Угадай число" (Сессии)

Задание

Необходимо реализовать игру "Угадай число" для двух пользователей. Суть заключается в следующем: один игрок загадывает число, а второй отгадывает. Все просто :) А теперь подробнее. Когда первый игрок заходит на главную страницу сайта, то он генерирует случайное число, в любом удобном диапазоне, которое отображется на этой странице. Данный игрок является создателем игры. Когда на эту же страницу попадает другой игрок, он не видит это число, но перед ним появляется форма с предложением угадать число. Форма очень простая: поле для ввода угадываемого числа, и кнопка для его проверки. Когда второй игрок вводит число и нажимает на кнопку, он получает одно из следующих сообщений:

  • Вы угадали загаданное число!
  • Введенное число меньше угадываемого.
  • Введенное число больше угадываемого. Если число было угадано, то у создателя игры (при обновлении страницы) отображается сообщение: "Ваше число угадали с 3 попыток". Здесь, конечно, нужно отображать реальное количество попыток второго игрока угадать это число. Следующим число загадывает тот игрок, который раньше обновит страницу. Однако, при желании, можно добавить кнопку "загадать число".

Реализация

Для того, чтобы хранить всю информацию о игре и игроках потребуется добавить несколько моделей в файл models.py, а именно:

  • Game - для хранения информации об игре (каждая игра является отдельной сущностью)
  • Player - для хранения информации об игроке
  • PlayerGameInfo - для связи игрока и игры (здесь мы можем считать количество попыток в какой игре и какой игрок сделал). Фактически она является промежуточной моделью для m2m связи (можно указать ее в through-поле. Подробнее: https://docs.djangoproject.com/en/2.2/ref/models/fields/#django.db.models.ManyToManyField.through).

При попадании на страницу с игрой, пользователю должен приписаться его личный идентификатор и идентификатор игры, в которую он зашел или создал. Для этого необходимо использовать сессии. Сессия создается один раз и хранится в рамках браузера, даже если покинуть сайт или закрыть браузер сессия не удалится. Поэтому для того, чтобы была возможность играть двум игрокам, для каждого из них необходимо открывать страницу с игрой в разных браузерах, либо же в режиме инкогнито.

Подсказки по реализации

  • Храните в сессии player_id и game_id, которые являются id соответствующих моделей.

Дополнительное задание

Реализуйте логику так, чтобы в нее можно играть любое количество игроков (не только 1 игрок и автор). Для этого в PlayerGameInfo нужно будет хранить флаг, является ли текущий игрок автором игры или обычным игроком.

Документация по проекту

Для запуска проекта необходимо:

Установить зависимости:

pip install -r requirements.txt

Выполнить следующие команды:

  • Команда для создания миграций приложения для базы данных
python manage.py migrate
  • Команда для запуска приложения
python manage.py runserver
  • При создании моделей или их изменении необходимо выполнить следующие команды:
python manage.py makemigrations
python manage.py migrate

Экран с загаданным числом Экран с загаданным числом

Экран игрока, которые пытается угадать число Экран игрока, которые пытается угадать число

Экран игрока, который угадал число Экран игрока, который угадал число

Экран игрока, который загадал число, после его отгадывания Экран игрока, который загадал число, после его отгадывания

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages