moff4 / msu_al_lastprak

Here will be last prak

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

msu_al_lastprak

Сетевая игра "Танки"

Техническое задание

Пользователь запускает программу и выбирает быть сервером или клиентом.
В первом случае пользователь пишет только порт, в другом - ip и порт.

Как только пара пользователей найдена, начинается раунд.
Игроки управляют танком в двумерном пространстве.
Цель каждого - набрать побольше баллов за попаданиия в чужой танк.
В арсенале есть несколько различных снаряды.

Раунд заканчиватся, когда набран максимум баллов.
Победитель выбирается по колличеству баллов.

Далее игрокам предлагается сыграть еще один раунд.

Классы

  • MainMenu - рисует первоначальное окошко, где пользователи могут изменять какие-нибудь параметры

  • Screen - Основное окошко, в котором будет картинка игры и несколько кнопочек

  • Connector - отвечает за соединение игроков и имеет интерфейс для их взаимодействия

  • Engine - графический движок

  • Controller - базовый класс управления игрой

    • User_Controller - класс для управление игрой пользователем
    • Socket_Controller - класс для управления игрой через сокет
  • Basic_Tank - Скелет любого танка

    • Original_Tank - частный случай танка
    • Super_Tank - частный случай танка
    • ...
  • Basic_Misslie - Скелет любого снаряда

    • Original_Misslie - частный случай снаряда
    • Super_Misslie - частный случай снаряда
    • ...
  • Basic_Blow - Скелет любого взрыва

    • Original_Blow - частный случай взрыва
    • ...

Краткий план (фигня, надо переписать)

юзер запускает программу, та ему предлагает варианты: клиент или сервер, и может еще парочку параметров.
в одном случае юзер пишет ip и порт, в другом только порт и происходит соединение. за это отвечает целый класс. результатом его работы должен быть сокет.

юзер тыкает на старт и программа параллелится в три потока:
1й - работает с юзером. ждет нажатия кнопочек и все такое
2й - слушает сокет.

оба эти сокета создают объекты и пихают в расшаренный массив.
3й поток управляет этими объектами, меняет там, передвигает и удаляет.

к примеру ты жмякнул кнопочку "ОГОНЬ", в массиве появился объект снаряда с параметрами скорости, направления и текущей координаты.
затем 3й поток сам будет их менять (точнее вызывать метод, который все меняет)

Доп.инфа: у третьего потока есть публичный флаг - игра на паузе, первый и второй потоки ничего не создают. создавать объекты можно только когда флаг опущен.

About

Here will be last prak


Languages

Language:Python 100.0%