Комментарии 100
Где взять круглую картинку с цветами в бОльшем разрешении?
присоединяюсь! хочу колесо маны в большом разрешении!
нашел в чуть большем: wiki.mtgsalvation.com/images/9/98/Color_wheel.jpg
Подозрительно много кода для такой просто задачи (имхо)
Угу, обычных олдскульных массивов вполне бы хватило.
Пример в студию :)
Ну уел, лень писать, точнее дописывать, никаких сложностей в реализации нет, кроме, пожалуй, того, что она в своеборазном C-style получается местами. Если дело принципа, то я конечно могу найти время и дописать :D
Кстати, так и не понял что означает XB, это сколько сколько хочешь B столько и используешь? Из текста не очень понятно, в MtG играл пару раз в юности.
Кстати, так и не понял что означает XB, это сколько сколько хочешь B столько и используешь? Из текста не очень понятно, в MtG играл пару раз в юности.
Что такое «M:tG»? Выглядит как случайный набор символов.
это коллекционная карточная игра Magic: The gathering. Сокращенно M:tg
Magic: the Gathering??) Карточная ролевая игра.
magic: the gathering
кстате была и на PC )
Magic: The Gathering — типа настольная карточная игра с коллекционными картами. ну это если в двух словах.
Более привычное сокращение — MTG.
Более привычное сокращение — MTG.
Кхм, я один не понял о чем это? )
Не один. Автор не с того начал. Лучше бы описал для начала план (с чего начнем, какие библиотеки будем использовать, расшифровал бы аббревиатуру M:tG), а то сходу ринулся код писать.
Судя по всему это привычка многих авторов здесь писать статьи про то, что может понять узкий круг лиц, либо только после того как прочитаешь пол статьи. Я вообще в игры не играю но очень трудно было понять причем тут мана и программирование.
Нет конечно, надеюсь, что не только сам автор понимает этот пост.
Как бы не хватает пары-тройки абзацев текста в начале:
Возникло желание поделиться своим опытом по реализации идеи игры Magic: the Gathering на C#/ Boo…
Игра представляет собой…
Важны такие нюансы как… Подводные камни…
Ну и в таком духе. А то кажется что это статья из долго играющего цикла и надо срочно искать начало.
Как бы не хватает пары-тройки абзацев текста в начале:
Возникло желание поделиться своим опытом по реализации идеи игры Magic: the Gathering на C#/ Boo…
Игра представляет собой…
Важны такие нюансы как… Подводные камни…
Ну и в таком духе. А то кажется что это статья из долго играющего цикла и надо срочно искать начало.
Хорошо бы добавить ссылку на игру. Я думаю не все с нею знакомы.
Нпаример — ru.wikipedia.org/wiki/Magic
Нпаример — ru.wikipedia.org/wiki/Magic
вопрос простой
нафига програмить мтг?
нафига програмить мтг?
Так и не понял, а где разбор земель дающих any type ману?
В следующий раз, наверное.
Ух, таким макаром можно запрограммировать фундамент для карт уже лет через пять, и можно будет начать добавлять карты.
Ах да, ну и конечно, спасибо за гажение — будьте уверены, я это запомню.
Сейчас уже слишком много появилось видов земель, некоторые довольно замороченные :) Снежные, painlands, фильтры etc. Понятно что лучше сначала базовые реализовать, а потом уже расширять.
Не согласен, с тем, что сперва имеет смысл реализовывать базовые, потом расширять. В этом случае мы получаем постоянное объявление ручками новых переменных с тем чтоб добавить парочку типов… И горе нам, если карта требует в оплату например выкинуть из игры другую карту из руки (force of will), скинуть две карты (forbid) или ещё какое жуткое действие — они же тоже получаются «как бы маной». Или наоборот, то, что Вы перечислили.
Ах! вот чего-чего а тематики старого доброго МТГ не ожидал увидеть на хабре. Надобы расчехлить свою коллекцию и пересобрать эки по фану.
А где снежная манна? я смотрю у нас в России все пропустили замерзшее изданиие.
Снежная мана? Можно ссылочку?
en.wikipedia.org/wiki/Ice_Age_(Magic:_The_Gathering)
snow permanents
snow permanents
думаю это не очень существенно, особенно если учесть, что они отличаются только дополнительным навешенным типом.
Мэджик был хорошим развлечением, особенно, до закрытия клуба «Даймонд» на Китай-городе. :)
Пользуясь случаем, хочу прорекламировать пару игр схожей тематики — Spectromancer и Astral Masters, за которыми однажды провел пару нескучных недель, передвигая электронные кусочки бумаги, за неимением настоящих :)
Глянул на spectomancer — красиво…
Можно я не буду выражаться по поводу идеи астрал мастеров? =) Мне тут знакомый ее посоветовал года полтора назад, сказал что он в нее меня сделает. каково же было его разочарование. когда за 20 партий он меня ни разу не смог обыграть. Просто он не знал что есть такая вещь как мтг, в которую у меня стаж уже далеко за…
Сама игра конечно хороша. но только тога когда нет ничего другого.
Сама игра конечно хороша. но только тога когда нет ничего другого.
Точно. Играю на даче в жестком оффлайне 8)
не надоело? в жало играть? мне с живыми противниками через час надоедает =(
с живыми противниками? а вы с кем простите играете, с Deep Blue? :))
На самом деле никакой онлайн с реальными живыми турнирами в Саргоне не сравнится, ни по атмосфере, ни по эмоциям.
На самом деле никакой онлайн с реальными живыми турнирами в Саргоне не сравнится, ни по атмосфере, ни по эмоциям.
Контекст вообще то состоял из Астралмастерс в данной ветке.
Я имел ввиду что даже в онлайне в эту игру надоедает с живыми играть.
А если бы я жил в Санкт-Петербурге, то в сам бы в Саргоне отвисал. Но увы… в нашем Мухосранске нет клубов. И мой DCI ID уже давно был бы исключен из рейтингов, если бы не добрые знакомые из Краснодара, которые раз в пол-года включают меня в какой-нибудь драфт, когда для четности не хватает человека.
Я имел ввиду что даже в онлайне в эту игру надоедает с живыми играть.
А если бы я жил в Санкт-Петербурге, то в сам бы в Саргоне отвисал. Но увы… в нашем Мухосранске нет клубов. И мой DCI ID уже давно был бы исключен из рейтингов, если бы не добрые знакомые из Краснодара, которые раз в пол-года включают меня в какой-нибудь драфт, когда для четности не хватает человека.
у меня есть ощущение, что проще было представить разные типы маны объектами наследниками класса ManaType, тогда Mana превратилась бы по существу в Dictionary<ManaType, Int>… макросы генерирующие толстый интерфейс для класса, выглядят в этом отношении сложновато…
А как же с гибридной маной и т.д.?
этот Dictionary<ManaType,int> противно обрабатывать — 100%, я пробовал что-то подобное.
точнее вот так у меня было:
что по сути тоже самое (в чем-то даже проще).
точнее вот так у меня было:
Copy Source | Copy HTML
- type Mana =
- |Red of int
- |Green of int
- |Blue of int
- |White of int
- |Black of int
- |Colorless of int
Copy Source | Copy HTML
- type ManaCost = class
- ...
- val Cost : Mana list
- ...
- end
что по сути тоже самое (в чем-то даже проще).
мне кажется тебе правда немножко не хватило вступления. )) Резковато в бой рванул.
и еще мне кажется, что для первого раза этого слегка многовато. я в принципе был готов к чему-то такому, но и то мой мозг оказался сломан. :)) может воскресенье виновато.
кстати об этом косвенно свидетельствует и то, что пока нет ни одного комментария по теме поста. все про мтг :)
и еще мне кажется, что для первого раза этого слегка многовато. я в принципе был готов к чему-то такому, но и то мой мозг оказался сломан. :)) может воскресенье виновато.
кстати об этом косвенно свидетельствует и то, что пока нет ни одного комментария по теме поста. все про мтг :)
Я все собирался под Linux написать мтгшку, но, видимо, уже так и не доберусь. Может попробуете ее на Mono наваять? Кроссплатформенный .NET вариант получится. А если еще и сорцы прятать не будете — так и помогут в будущем развитии.
Ну что касается сорцов, то always welcome. Что касается презентационного слоя, то я вообще планировал делать что-то из стека Windows… не знаю есть ли аналог Direct2D на Mono, но писать под OpenGL уж точно не планировалось (в студенчестве объелся этим фреймворком)… а какие еще варианты есть? Конечно всегда можно на Silverlight или Flash…
Пока все совместимо с Моно…
Пока все совместимо с Моно…
Во первых. А как быть со странными манакостами, например по трешолду, грейвярду или фракшинам?
Кстате, а когда платишь колорлесс, какая пойдет в расход? Может на нужный инстант не отстаться, так что процесс не полностью автоматичный.
Да, и ещё, навряд ли есть какая-то надобность программировать Меджик, так как
"..., MAGIC: THE GATHERING are registered trademark of Wizards of the Coast, Inc. MicroProse Software ...", лицензия полностью пропреитарная на игру и правила, т.е. реализация правил в стороннем ПО не приветствуется, тем более уже давно есть www.wizards.com/default.asp?x=magic/magiconline
Кстате, а когда платишь колорлесс, какая пойдет в расход? Может на нужный инстант не отстаться, так что процесс не полностью автоматичный.
Да, и ещё, навряд ли есть какая-то надобность программировать Меджик, так как
"..., MAGIC: THE GATHERING are registered trademark of Wizards of the Coast, Inc. MicroProse Software ...", лицензия полностью пропреитарная на игру и правила, т.е. реализация правил в стороннем ПО не приветствуется, тем более уже давно есть www.wizards.com/default.asp?x=magic/magiconline
Во-первых, странные манакосты — это отдельная тема, иногда они маркируются как Х, иногда в правилах, но к теме этого поста это не относится т.к. это семантика правил.
А насчет лицензии, можете написать большое грозное письмо Apprentice, Magic Workstation, Wagic и т.д. и предупредить их что то, что они делают нехорошо. Я не говорил что я прям игру пишу, я просто теоретизирую на тему правил в M:tG. Копирайт на мышление вроде пока не ввели.
А насчет лицензии, можете написать большое грозное письмо Apprentice, Magic Workstation, Wagic и т.д. и предупредить их что то, что они делают нехорошо. Я не говорил что я прям игру пишу, я просто теоретизирую на тему правил в M:tG. Копирайт на мышление вроде пока не ввели.
Маленький оффтоп: если кто-то играет в MTG на Xbox 360 — пишите :)
ладно, с маной понятно, а продолжения то ждать? В MTG еще много чего интересного есть. Да и подтягивать знания по ООП интереснее в таком приложении. :)
Что-то я сомневаюсь, что вам удастся запрограммировать весь MtG. Разве что ограниченный subset карт…
Главное — сделать непротиворечивый движок, а базу карт наполнять уже можно и коллективно.
ставлю свою шляпу, что непротиворечивый движок сделать не получится, потому что нет общих правил в MtG, карты — это и есть сами правила
вам придется реализовать что-то вроде языка программирования шиворот-навыворот, с тотальным IoC, чтобы программу (правила) можно было динамически расширять прямо в run-time
вам придется реализовать что-то вроде языка программирования шиворот-навыворот, с тотальным IoC, чтобы программу (правила) можно было динамически расширять прямо в run-time
Вполне логично добавить базовые правила, их не так уж много. А потом идти не от маны, а от оплаты.
в общем, удачи
я когда-то занимался этой задачей, и забил, когда понял, что реализация MtG тянет на диссертацию, как минимум
я когда-то занимался этой задачей, и забил, когда понял, что реализация MtG тянет на диссертацию, как минимум
В рамках пары блоков всё не так уж страшно, а дальше просто объём программирования вырастает в геометрической прогрессии, так что в одиночку программировать ЭТО по-моему абсолютно невозможно.
Ну да скоро столкнусь с этим, вероятно, снова — один из проектов клонирует кое-какие части MTG.
Ну да скоро столкнусь с этим, вероятно, снова — один из проектов клонирует кое-какие части MTG.
Мне кажется интересно разобраться в этой теме хотя бы чтобы понимать как в принципе можно реализовать любое правило
не переживайте, автор это понимает лучше других. и он к этому готов :)
У MtGO получилось. Если не брать в расчёт всякие Unhinged / Unglued, то вполне можно. Тем более специально к выходу MtGO механику подправили для более простой реализации в софте — слои расписали, например.
Magic интересен тем, что никогда не знаешь когда и какую свинью он тебе подложит.
Вот, например: Mishra's Workshop
Думаю таких подстав много :)
Вот, например: Mishra's Workshop
Думаю таких подстав много :)
Начинал играть еще 4ой редакцией (и бумажной, и компьютерной), там на диске с игрой была офигительная бродилка, уже не помню названия, но суть в том, что гуляешь по каким-то территориям, выполняешь квесты, сражаешься с монстрами — и получаешь новые карты в колоду.
Если бы такое в виде малтиплеера реализовали — я бы подписался. У меня на M:tG-Online есть купленный аккаунт, но там играть совершенно не прет, не хватает какой-то изюминки.
PS: Залезть, что ли, на пыльный чердак и найти свои коробки с картами? :)
Если бы такое в виде малтиплеера реализовали — я бы подписался. У меня на M:tG-Online есть купленный аккаунт, но там играть совершенно не прет, не хватает какой-то изюминки.
PS: Залезть, что ли, на пыльный чердак и найти свои коробки с картами? :)
Ахх… Shandalar… да собственно игра была прикольная, и самое главное там AI действительно умел играть, что удивительно. Хотя одна особенность всех этих игр с AI в том, что когда подбираешь идеальную колоду, тебя уже не остановить…
У меня тоже на MTG Online акк есть, но там мне неинтересно то, что нужно постоянно тратить деньги на карты. По крайней мере на своем домашнем симуляторе я практикую бережливость и экономичность :)
У меня тоже на MTG Online акк есть, но там мне неинтересно то, что нужно постоянно тратить деньги на карты. По крайней мере на своем домашнем симуляторе я практикую бережливость и экономичность :)
Попробуйте www.yugioh-online.net/top/english/index.html, 2-я по популярности TCG в мире но в России почти не распространена. Возможно менее сбалансированная / продуманная чем МТГ но Имхо на много более фановая.
П.с Когда будите регистрировать Акаунт не указывайте сваю страну как РФ, а то ничего купить не получится )
П.с Когда будите регистрировать Акаунт не указывайте сваю страну как РФ, а то ничего купить не получится )
А в следующей статье мы попытаемся запрограммировать окружающую реальность +)
Как-то всё очень запутано.
А почему нельзя использовать битовую алгебру для этого?
public enum ManaColor: int
{
Undefined = 0,
Red = 2,
Blue = 4,
Green = 8
}
public class Mana
{
public int Color { get; set; }
}
var m = new Mana { Color = ManaColor.Red | ManaColor.Blue }
Зачем городить весь этот огород?
Или я что-то упустила?
А почему нельзя использовать битовую алгебру для этого?
public enum ManaColor: int
{
Undefined = 0,
Red = 2,
Blue = 4,
Green = 8
}
public class Mana
{
public int Color { get; set; }
}
var m = new Mana { Color = ManaColor.Red | ManaColor.Blue }
Зачем городить весь этот огород?
Или я что-то упустила?
Colorless забыла.
Тут простые подходы повсеместно не работают. Хардкодить количество земель, например, опрометчиво — вот появилась земля Snow/Frost, а я даже и не знал об этом.
А с каких это пор int — это хардкод?
что будет если я сделаю следующее:
var a = 10;
var b = (ManaColor)a;
какое значение будет в b?
А если нужно избавиться от enum'a, по используйте себе адаптер и всё тут:
что будет если я сделаю следующее:
var a = 10;
var b = (ManaColor)a;
какое значение будет в b?
А если нужно избавиться от enum'a, по используйте себе адаптер и всё тут:
public static class ManaColorDescriptor { public IManaColorDescription GetDescription(int manaColor) { //Можно в XML задезть, можно в базу, а можно и у сервиса спросить. Что душе угодно. //А умные дяди и тёти используют provider oriented design для этого. switch(manaColor) { сase 2: return new DefaultColorDescription { Color = "Red", Description = "Red Mana" }; default: return new DefaultColorDescription { Color = "Новыя мана", Description = "А кто будет конфиги править или ещё чего делать? Чё это за мана вообще?" }; } } }
Каждый определенный цвет маны порождает вместе с собой определенный набор дополнительной информации, которую очень напряжно реализовать с «ручным» подходом к проблеме. Например, мана участвует в формировании двойной маны, в подсчете общей суммы (converted mana cost) всей маны, в расчетах удовлетворения мана-стоимости а также — это тоже важно — в процессе разбора текстового описания и формирования соответствий в стиле black=swamp.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Программирование Magic: the Gathering — §1 Мана