maxim-shvandt / Sea_battle_python

Python project of the "Sea battle" game, using sockets. Uni practice 2017.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Sea_battle_python

Python project of the "Sea battle" game, using sockets. Uni practice 2017.

Проект программы "Морской бой"

===========================================================================

Общее описание работы игры

  1. Игрок запускает у себя программу, компьютер автоматически рандомно располагает корабли на своем поле.

  2. Игрок начинает расставлять свои корабли на своем поле. Расстановка происходит путем выбора корабля из радиогруппы ( 1-, 2-, 3-, 4- и 5-трубный корабль ). Горизонтальное или вертикальное расположение также контролируется радиоргруппой, корабль вращается вокруг своего левого конца. Происходит контроль, чтобы корабль не вышел за пределы поля.

  3. После расстановки игрок жмет на кнопку "BATTLE!" - это сигнал программе, что все готово к игре.

  4. Игрок выбирает клетку на поле противника ( компьютера ) и жмет нопку "огонь". При нажатии происходит проверка программой, "принадлежит" ли данная клетка какому то кораблю. Если да, то отмечается попадание и клетка окрашивается в красный цвет. Иначе цвет синий ( промах ).

  5. Когда один из игроков совершил попадания по всем клеткам на которых были корабли, он - победил и игра завершена.

===========================================================================

Основные элементы программы и этапы разработки

  1. Реализация механизма игры человекас компёютером - противником игрока является компёютер, который рандомно расставляет корабли на своем поле. Реализация механизма расстановки игроком кораблей на своем поле.

  2. Создания GUI - форма, содержащая два поля - игрока и противника, радиогруппу для выбора кораблей и их расположения, основные кнопки управления.

  3. Создания классов, соотв. кораблям, класс "поле" - для себя и поля противника, "соединение" GUI с программой, тестирование.

Предположительные классы:

  1. class CShip - тип определяется размером( кол-вом труб ): Patrol = CShip( 1 ), Kruiser = CShip( 3 ). Каждый объект содержит в себе координаты клеток, на которых находиться. Содержит счетчик попаданий попаданий по себе. Имеет метод, при последнем попадание который шлет сигнал программе, что кораблю потоплен. При каждом выстреле происходит сверение координат каждого корабля с координатами выстрела.

  2. class CField. Количество объектов - 2. "Свое" плоле и поле противника. Содержат матрицу, на которой выполняэться "бой". Также содержат список кораблей, историю попаданий,

About

Python project of the "Sea battle" game, using sockets. Uni practice 2017.


Languages

Language:Python 100.0%