Pazaak - карточная игра из вселенной Звездных войн. Это похоже на Блэкджек, когда два игрока сражаются друг против друга, пытаясь достичь двадцати, не переходя. У каждого игрока есть «боковая колода» из четырех собственных карт, которые они могут использовать для изменения своего счета.
Leaderboard
По состоянию на 17.06.2015, 16:40 EDT
Изменить: Нептор был дисквалифицирован за мошенничество. Результаты будут исправлены как можно скорее ...
- НЕПТР: ~ 424 000
- Цинциннати Кид: ~ 422 000
- Нестор: ~ 408 000
- Остин Пауэрс: ~ 405 000
- Бастила: ~ 248 000
- Тупой осторожный игрок: ~ 107 000
- Тупой смелый игрок: ~ 87 000
Плей-офф Кубка Пакака
Будет обновлено как можно скорее.
Первый раунд - Нестор против Бастилы и Остина Пауэрса против Цинциннати Кид
Второй раунд - Нестор против Остина Пауэрса и Цинциннати Кид против Бастилы
механика
Геймплей делается по очереди. Игроку 1 сдается карта из основной (домашней) колоды. Колода дома содержит сорок карт: четыре копии от одной до 10. После раздачи карты они могут закончить свой ход и получить новую карту в следующем ходу, стоять на своем текущем уровне или сыграть карту из своей боковой колоды и стоять на новом значении. После того, как игрок один решает, что он хочет сделать, игрок второй повторяет процесс.
Как только оба игрока ушли, руки оцениваются. Если игрок бомбил (прошло более двадцати), другой игрок выиграет, при условии, что он также не бомбил. Если игрок решил встать, а у другого игрока более высокая ценность руки, другой игрок выиграет. Если оба игрока решили встать, победит игрок с более высоким достоинством руки. В случае ничьей ни один из игроков не получает победы.
Если условие выигрыша не выполнено, игра повторится. Если игрок решил закончить свой ход, он получит новую карту и сможет сделать новый выбор. Если они решат встать или если они разыграли карту из своей боковой колоды, им не будет выдана новая карта, и они не смогут выбрать новое действие.
Игра продолжается, пока один из игроков не выиграет. Игры разыгрываются в лучших сетах из пяти.
Почему «простой» пазаак?
Во вселенной «Звездных войн» Пазаак занимался азартными играми. Хотя включение такой системы добавило бы в игру больше динамики, она немного сложна для первого соревнования KoTH.
«Настоящие» боковые колоды Pazaak также были предоставлены самими игроками и могли включать в себя множество различных вариантов карт, таких как негативные карты, позитивные или негативные карты, флип-карты, двойные карты и карты разрешения конфликтов. Это также сделало бы игру более интересной, но потребовало бы игрового интерфейса на месте и потребовало бы гораздо большего от конкурентов. В этой простой игре Pazaak каждый игрок получает одну и ту же боковую колоду: две копии от одного до пяти, из которых четыре выбираются случайным образом.
В зависимости от успеха этой игры, я могу приложить усилия для разработки продвинутой версии, в которой возможны игровые и специальные боковые колоды.
Игроки
Игроками этой игры будут разработанные вами боты. Каждый бот должен расширять класс Player, импортировать пакет Mechanics и находиться в пакете Players следующим образом:
package Players;
import java.util.Collection;
import Mechanics.*;
public class DemoPlayer extends Player {
public DemoPlayer() {
name = "Your Name Here";
}
public void getResponse(int wins[], boolean isPlayerOne,
Collection<Card> yourHand, Collection<Card> opponentHand,
Collection<Card> yourSideDeck, int opponentSideDeckCount,
Action opponentAction, boolean opponentDidPlay) {
action = null;
cardToPlay = null;
}
}
Каждый раунд контроллер будет вызывать метод getResponse для вашего бота, если только ваш бот ранее не указал, что он хочет стоять. Метод getResponse может установить два свойства: действие и карту для игры. Действие может быть одним из следующих:
- КОНЕЦ: Заканчивает ход и в следующем ходу берет новую карту.
- STAND: остается на текущем значении руки. Не будет рисовать карту.
- PLAY: проигрывает карту из боковой колоды и затем встает.
Разыгрываемая карта, очевидно, важна только в том случае, если вы установили действие на ИГРА. Требуется объект карты. Если объект карты, который вы передаете ему, не существует в вашей боковой колоде, ваш бот вместо этого будет стоять.
Параметры, которые ваш бот получает каждый ход:
- Массив, содержащий выигрыши каждого игрока. выигрывает [0] игрока 1, выигрывает 1 игрока 2 (int [])
- Является ли ваш бот первым игроком (булево)
- Коллекция карт, которые вы уже раздали (Коллекция)
- Коллекция карт вашего оппонента была разыграна до сих пор (Коллекция)
- Коллекция карт в вашей боковой колоде (Коллекция)
- Количество карт, оставшихся в боковой колоде противника (int)
- Действие вашего противника в последний раз (Действие) [Примечание: это будет либо КОНЕЦ, либо СТЕНД, никогда не ИГРАТЬ]
- Играл ли ваш оппонент в карту (булево)
Правила бота
Ваши боты могут использовать только ту информацию, которая им предоставлена через метод getResponse. Они не должны пытаться взаимодействовать с любым другим классом. Они могут записывать в один файл для хранения данных между раундами. Они могут иметь любые пользовательские методы, свойства и т. Д. По желанию. Они должны запускаться в разумные сроки (если запуск программы не происходит практически мгновенно, я замечу, что что-то не так).
Если вы обнаружите какой-то эксплойт в коде, вы будете вознаграждены за «сдачу себя». Если я сначала обнаружу эксплойт, я исправлю его, и вы не получите никакой награды.
демос
Контроллер не нужен для написания бота, так как все уже объяснено в этом посте. Однако, если вы хотите проверить, его можно найти здесь: https://github.com/PhantomJedi759/simplepazaak. Включены два основных бота. Никто не должен хорошо противостоять «умному» противнику, поскольку они выбирают только между END и STAND. Вот пример того, что они делают:
New Game!
The standings are 0 to 0
Dumb Bold Player's Hand: []
Dumb Bold Player's new Hand: [2]
Dumb Bold Player has chosen to END
Dumb Cautious Player's Hand: []
Dumb Cautious Player's new Hand: [8]
Dumb Cautious Player has chosen to END
Dumb Bold Player's Hand: [2]
Dumb Bold Player's new Hand: [2, 8]
Dumb Bold Player has chosen to END
Dumb Cautious Player's Hand: [8]
Dumb Cautious Player's new Hand: [8, 3]
Dumb Cautious Player has chosen to END
Dumb Bold Player's Hand: [2, 8]
Dumb Bold Player's new Hand: [2, 8, 7]
Dumb Bold Player has chosen to END
Dumb Cautious Player's Hand: [8, 3]
Dumb Cautious Player's new Hand: [8, 3, 6]
Dumb Cautious Player has chosen to STAND
Dumb Bold Player's Hand: [2, 8, 7]
Dumb Bold Player's new Hand: [2, 8, 7, 6]
Dumb Bold Player has chosen to STAND
Dumb Cautious Player's Hand: [8, 3, 6]
Dumb Cautious Player has chosen to STAND
Dumb Bold Player has bombed out! Dumb Cautious Player wins!
Поскольку эти боты полагаются исключительно на удачу в ничьей, их соотношение выигрышей и проигрышей может сильно различаться. Будет интересно посмотреть, как умение может побороть удачу в игре.
Это должно быть все, что вам нужно! Иди построй несколько ботов!
Разъяснение к правилам
Основная колода состоит из сорока карт: 4x1-10. Перетасовывается в начале каждой руки.
В боковой колоде игрока есть четыре карты, выбранные случайным образом из 2x1-5. Боковая дека сохраняется между руками.
Руки разыгрываются в играх на тройку из пяти. Боты оцениваются по общему количеству выигранных игр, а затем по общему количеству рук.
Соответствие обрабатывается так, что каждый игрок должен будет сыграть 100 000 игр против любого другого игрока.
В Pazaak Cup раунды в стиле исключения сузят, кто же на самом деле лучший бот Pazaak. Каждая пара ботов будет играть за лучшие четыре из семи наборов из 100 000 игр. Кто бы ни выиграл четыре, он поднимется вверх по лестнице к следующему противнику, а проигравшие останутся в битве за последовательные рейтинги. Этот стиль геймплея является наиболее справедливым, поскольку боты не могут «выиграть-фармить» определенных противников, чтобы компенсировать недостаток способностей против других. Кубок Pazaak будет проведен в пятницу, 3 июля, при условии, что будет представлено по меньшей мере восемь ботов. Победитель получит статус «Правильный ответ» и стартовый бонус в Advanced Pazaak, который, как мы надеемся, будет готов к тому же времени, что и Кубок Pazaak.
источник
Ответы:
Цинциннати Кид
Постарайтесь убедиться, что мы берем еще одну карту, если знаем, что проигрываем, в противном случае посмотрите на нашу боковую колоду и общие результаты, чтобы решить, что делать.
Обновлен для улучшения работы с ситуациями, когда противник уже закончил играть. В моем собственном тестировании это, кажется, снова лучший кандидат, по крайней мере сейчас.
источник
Остин Пауэрс
Остин Пауэрс, как вы можете себе представить, любит жить опасно. Если кто-то не выиграл, или он может гарантировать победу, он всегда будет бить, если он позади, или с вероятностью не более 20% не переиграть.
источник
Бастила
Бастила играет консервативно. По ее мнению, 17 так же хорош, как и 20, и гораздо лучше стоять в стороне, чем бомбить.
источник
Нестор
Нестор любит получать 20, используя свою боковую колоду, но когда это не удается, он рассчитывает ожидаемый выигрыш, выбирая стойку или конец, полагая, что противник разумный.
источник
Главк
Главк делает 100 симуляций с перемешанным списком карт и выбирает свой лучший вариант на основе этих симуляций.
источник
HK-47
Вот! Бот моего собственного дизайна. HK-47 пытается убить все мешки с мясом, которые он может, хотя он немного радует своими боковыми колодами.
Пока что он может победить всех, кроме Цинциннати Кид.
источник
NEPTR
(Никогда не заканчивающийся робот, бросающий пирог)
Нептор извини, Нептора обманули. Нептор действительно собирался прийти чистым, он просто хотел сначала повеселиться :(
источник
PazaakGameMain.HAND_GOAL = ingredients; //Trololo, you caught me, sorry!
действительно работает.