.dev | Cards
Поскольку томными вечерами сейчас заниматься особо нечем, я с бумажкой и ручкой выдрочил алгоритм игры в карты (конкретно в Дурачка, но смысловая составляющая будет применима к практически любой карточной игре). Как результат, код для AI игры пишется за час с хвостиком и уместился в примерно 250 строк.
Основные постулаты:
- Кажой карте присваивается определённый «вес», скажем от 0.01 до 1.00
- Специальным картам (например козырям) к весу прибавляется 1.00, в принципе если играть в дурачка с сменным козырем, то можно к сменной масти прибавлять какой-то постепенно увеличивающийся «вес».
- Игра AI делится на атаки и защиту
- Атака
- Цель №1 — повысить свой «средний вес» карт
- Цель №2 — понизить «средний вес» карт противника
- Лучший ход, соответственно, будет тот, который наиболее близко совпадает с моими целями
- Защита
- Цель №1 — удержать свой «средний вес» как можно выше (то бишь тут сразу ясно что порой выгодно «брать», вместо того, чтобы биться)
- Цель №2 — сбить «средний вес» карт противника «выманивая» тяжёлые карты (ведь AI знает, что противник получит из колоды)
- Стратегия элементарно расчитывается методом нехитрого перебора вариантов
- Атака
Вот, собственно, и всё! Осталось сделать кучку опций и продумать интерфейс. В будущем меня, правда, ждёт более сложный момент изучения графического API iPhone, но это должно быть интересно!
Слова:
iphone