monopoly

Created: 2008-12-26 12:36
Updated: 2016-05-08 20:33

README.markdown

Документация к игре монополия, написанной в ходе прослушивания курса «Технология программирования», преподаватель: Кленин Александр Сергеевич. Работу выполнил студент 246 группы Дзема Дмитрий Борисович dmitriy@dzema.name

Для работы игры необходимы:

  • ruby 1.8.6. тестировалось на версии ruby 1.8.6 (2007-09-24 patchlevel 111) [powerpc-darwin8.11.0]
  • rubygems:
    • mongrel
    • rake (для запуска немногочисленных тестов и спек)
    • active_support
    • JSON
    • camping
    • evma_httpserver

Запуск игры

Для запуска игры предназначены 2 файла.

interface.rb

Запускает клиент игры и веб-интерфейс. Принимает следующие аргументы командной строки

  • -p --port Локальный порт, на котором клиент ждет запросы (default: 8080)
  • -h --host ip-адрес, на котором клиент ждет запросы (default: localhost)
  • -d --default После запуска начинать игру с параметрами по умолчанию (правила buxter.js, имя игрока "Default Player"). Полезно для тестирования

После запуска начинает ждать входящих запросов по указанным ip-адресу и порту. Интерфейс доступен по адресу http://$host:$port/interface/

greedy_robot.rb

Запускает игровой AI. Он подсоединяется по указанному адресу как игрок и ведет себя как обычный удаленный игрок, за исключением того, что у него нет веб-интерфейса и он ходит самостоятельно. Аргументы командной строки:

  • -p --port Локальный порт, на котором робот ждет запросы (default: 9999)
  • -a --address ip-адрес, на котором робот ждет запросы (default: localhost)
  • -n --name Имя робота в игре (default: Greedy Bot)
  • --host HOST:PORT Адрес игрока, к которому подключается робот (default: localhost:8080)

Описание архитектуры

Игра состоит из нескольких компонент, которые реализованы в виде классов ЯП Ruby. Основной идеей было разделение логики игры от сетевого интерфейса.

  • rules.rb Класс инкапсулирует работу с правилами, преобразует имена полей вида StartingMoney в starting_money
  • game_state.rb Инкапсулирует работу с изменяющимся состоянием игры, таким как порождение состояние игры из правил, создание игроков и т.д.
  • player.rb Инкапсулирует работу с недвижимостью игрока, его банкротством и т.д.
  • core.rb Инкапсулирует в себе правила игры, кто в какой момент может ходить, как закладывается недвижимость и т.д. Работает с сущностями типа «игрок»
  • network.rb Все, связанное с работой по сети: отпарвка и отсылка запросов по внутреннему протоколу игры, установление соответствия между сетевыми адресами и сущностями «игрок». Содержит класс Monopoly::Request для отправки запроса удаленным клиентам.
Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more