войти зарегистрироваться

.NETПрограммирование Magic: the Gathering — §2 Карта

Продолжим наше обсуждение программирования Magic the Gathering. Сегодня мы обсудим то, как формируется объектная модель конкретной карты. Поскольку карты взаимдействуют со всеми участниками системы (с игроками, другими картами, и т.д.), мы также затронем вопросы реализации базового поведения карт. Как и предже, мы будем использовать экосистему .Net, хотя в будущем (намек) мы увидим использование неуправляемого С++. Также, для примеров мы воспользуемся картами 8й и поздних редакций.[1]

Предыдущие посты: §1

.NETПрограммирование Magic: the Gathering — §1 Мана


Хочется начать посты про программирование Magic: the Gathering (M:tG), и начнем мы пожалу с самого простого – с концепции «маны». Мана – это то, чем оплачиваются все заклинания. Несмотря на то, что с виду маны всего 5 типов, на самом деле все чуть-чуть сложнее. Давайте попробуем разобраться.


PythonBoo — питонообразный .NET язык

Приветствую уважаемые Хабрапользователи, хочется мне рассказать Вам об “ещё одном языке программирования” носящим названием Boo. Язык этот к удивлению малоизвестный, но при этом является очень мощным и удобным, и что самое главное, показывает прекрасный пример заимствования хороших идей в новом и интересном контексте, а именно реализацию синтаксически очень близкого к Python языка в качестве компонента .NET инфраструктуры.

.NETЯзыки предметной области Domain-Specific Languages (DSL)

Что это?


Это некоторая форма компьютерных языков, разрабатываемых для специфичной предметной области. Это то, что позволяет вам (разработчикам ПО) лучше взаимодействовать с носителями “доменных знаний”. А так же позволяет более лаконично оформлять бизнес-логику. Это то, что представляет собой, к примеру, SQL, Linq, многое из синтаксиса Ruby On Rails.

.NETПример практики BDD при работе со Specter Framework

specter-log Specter – инфраструктура для составления объектно-поведенческих спецификаций для .NET. Он предоставляет возможности для обеспечения разработки, руководствуясь поведением системы (BDD), требуя от разработчиков написания исполняемой спецификации для объектов перед написанием самих объектов. Технически это ни чем не отличается от разработки по средствам тестирования (TDD), хотя различия в форме написания снимают психологический барьер для написания “тестов” для кода, которого ещё не существует. Есть множество проектов для различных платформ, реализующих данную идею (К примеру RSpec для Ruby, NSpec для .NET. Подробнее о средах здесь).
Specter использует возможности мета-программирования языка Boo (CLR .NET) для написания неплохо читаемых спецификаций.