Skip to content

mark47B/simple-text-game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Text Adventure — консольная игра

Небольшая консольная текстовая игра на Go с динамической регистрацией команд через рефлексию.

Кратко: движок хранит карту действий (map[string]interface{}) и вызывает нужную функцию через reflect — аргументы команд (строки) преобразуются в целевые типы (*room.Room, *item.Item) перед вызовом. Это даёт гибкость при добавлении новых действий без изменения центрального диспетчера.


Фичи

  • Регистрация действий в рантайме (registerAction).
  • Автоматическое преобразование текстовых аргументов команды в объекты (комната, предмет) через convertToActionArg.
  • Базовые действия: осмотреться, идти, взять, надеть, применить.
  • Простая архитектура: пакеты cmd, game, room, item, player.

Структура проекта (важные пакеты)

  • cmd/ — точка входа (CLI).
  • game/ — основной движок игры (Game), регистрация и выполнение действий, рефлексия.
  • room/ — модель комнаты, связи между комнатами, логика дверей.
  • item/ — определения предметов и ItemRegistry для их генерации по имени.
  • player/ — модель игрока и инвентаря.
  • furniture/ — модуль мебели: структуры Furniture, список предметов на мебели, методы IsBelong и TakeItem. Используется в room при инициализации (столы, стулья и т.п.).

Требования

  • Go 1.18+ (рекомендуется последняя стабильная версия).
  • Модульная поддержка (go modules).

Как запустить (локально)

  1. Клонируйте репозиторий:
git clone https://github.com/mark47B/simple-test-game.git
cd https://github.com/mark47B/simple-test-game.git
  1. Запуск напрямую:
go run main.go

Запуск тестов

В проекте используются обычные go unit-тесты. Запустить все тесты:

go test ./... -v

About

tested reflection on go

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages