Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/goosescout/machikoro

Machi Koro online game
https://github.com/goosescout/machikoro

machi-koro online pygame python socket

Last synced: about 1 month ago
JSON representation

Machi Koro online game

Awesome Lists containing this project

README

        

# MachiKoro
#### В этом проекте мы попытались воссоздать настольную игру Мачи коро.

Код игры разделён на 4 файла:
* ### `main.py`
> В этом файле находится основной код игры. Главный класс - `Game`, в нём происходят все операции с игрой. Помимо этого, там содержатся дополнительные классы.
* ### `utility.py`
> В этом файле содержатся функции и классы, которые либо не относятся непосредсвенно к игре (загрузка изображений) или необходимы нескольким модулям сразу (класс `Card` необходим модулям `main` и `cards`).
* ### `cards.py`
> В этом файле находятся все карты, которые доступны в игре.
* ### `node.py`
> В этом файле находится класс `Node`, который выполняет все операции по работе с другими компьютерами в сети.

Суть проекта заключается в том, что несколько игроков подключаются к одной игре и играют в компьютерную версию настольной игры Мачи Коро. К сожалению, не все механики настоящей игры удалось реализовать - например игроки не видят чужих карт (хотя они знают, какие карты покупают игроки, и могут сами вести учёт). Но при этом цифровая версия повторяет все ключевые механики реальной игры.

Для своей работы проект использует библиотеку **`socket`**. Когда игрок начинает игру, его компьютер (_далее - хост_) отсылает сообщение всем в локальной сети о том, что идёт поиск игроков. Далее любой компьютер, который получил это сообщение, отсылает непосредственно хосту сообщение о том, что хочет подключиться к игре. Затем этот компьютер попадает в список игроков. Когда игроков становится 4, игра начинается автоматически, или игру может начать хост, если игроков не меньше двух.

После начала игры все игроки оказываются на игровом поле, где есть магазин (общий для всех игроков), иконки игроков и все здания, которые есть у игрока, объединённые в блоки. В начале каждого хода игрок бросает кубик(и). При наличии Станции он может выбрать, сколько кубиков бросать, а при наличии Радиовышки он может перебросить кубики. После выполнения любого действия (покупки карты, конца хода и т.д.) все игроки получают уведомление об этом. Когда один из игроков покупает все 4 достопримечательности (карты справа) - он выигрывает и игра заканчивается.