Code Monkey home page Code Monkey logo

dj_session's Introduction

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

Задание

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

  • Вы угадали загаданное число!
  • Введенное число меньше угадываемого.
  • Введенное число больше угадываемого. Если число было угадано, то у создателя игры (при обновлении страницы) отображается сообщение: "Ваше число угадали с 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

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

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

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

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

dj_session's People

Contributors

radniforg avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.