Pazaak - карткова гра зі всесвіту "Зоряних воєн". Він схожий на BlackJack: два гравці, що протистоять один одному, намагаються досягти двадцяти, не переходячи. Кожен гравець має "бічну колоду" з чотирьох власних карт, які він може використовувати для зміни свого рахунку.
Таблиця лідерів
Станом на 17.06.2015 @ 16:40 EDT
Редагувати: Нептор був дискваліфікований за обман. Оцінки будуть зафіксовані якнайшвидше ...
- НЕПТР: ~ 424 000
- Малюк у Цинциннаті: ~ 422 000
- Нестор: ~ 408 000
- Остін Пауерс: ~ 405 000
- Бастіла: ~ 248 000
- Тупий обережний гравець: ~ 107 000
- Тупий сміливий гравець: ~ 87 000
Насмішкова плей-офф Кубка Pazaak
Буде оновлено якнайшвидше.
Перший раунд - Нестор проти Бастіли та Остін Пауерс проти Малюка Цинциннаті
Другий раунд - Нестор проти Остін Пауерс і Сінциннаті Малюк проти Бастіли
Механіка
Гра проводиться по черзі. Гравець один отримує карту з основної (домашньої) колоди. Дом-майданчик містить сорок карт: чотири примірники від однієї до 10. Після роздачі картки вони можуть вирішити закінчити свою чергу та отримати наступну чергу нову карту, стояти за поточним значенням або зіграти в карту зі своєї бокової колоди та стояти за новою цінністю. Після того, як гравець вирішить, що хоче зробити, два гравці повторюють процес.
Після того як обидва гравці пішли, руки оцінюються. Якщо гравець вибухнув (вийшов за двадцять), то другий гравець виграє, за умови, що він також не вибухнув. Якщо гравець вирішив стати, а інший гравець має більшу цінність, другий гравець виграє. Якщо обидва гравці вирішили стати, виграє гравець з більшим значенням руки. У разі нічиєї, жоден гравець не отримує виграш.
Якщо умова перемоги не виконана, гра повториться. Якщо гравець вирішив закінчити свою чергу, він отримає нову карту і може зробити новий вибір. Якщо вони вирішили стати, або якщо вони зіграли в карту зі своєї бокової колоди, їм не буде видано нову карту і не зможуть вибрати нову дію.
Гра триває так, поки один гравець не виграє гру. Ігри грають у кращих-трьох з п’яти сетів.
Чому "простий" Пазак?
У всесвіті "Зоряних воєн" Пазаак займався азартними іграми. Хоча включення такої системи додало б більшої динаміки грі, для перших змагань KoTH це трохи складніше.
"Справжні" бокові колоди Pazaak також надавались самими гравцями, і вони могли включати багато різних варіантів карт, таких як негативні картки, позитивні чи негативні картки, фліп-карти, подвійні картки та картки краватки. Це також зробить гру цікавішою, але вимагає ігрового інтерфейсу на місці та вимагатиме набагато більшої кількості конкурентів. У цій грі Simple Pazaak кожен гравець отримує одну і ту ж бічну колоду: дві копії від однієї до п’яти, з яких чотири вибрані випадковим чином.
Залежно від успіху цієї гри, я можу докласти зусиль, щоб розробити вдосконалену версію, в якій можливі ігрові та власні бічні колоди.
Гравці
Гравці цієї гри будуть ботами, розробленими вами. Кожному боту необхідно розширити клас Player, імпортувати пакет Механіка та розміститись у пакеті гравців так:
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 може встановити два властивості: дії та карту для гри. Дія може бути однією з таких:
- END: Закінчується черга і черпає нову карту наступного витку.
- СТЕНД: Залишається при поточному значенні руки. Не буде малювати карту.
- ГРА: Відтворює карту з бічної колоди, а потім стоїть.
Картка, яку потрібно грати, очевидно, має значення лише в тому випадку, якщо ви встановите дію PLAY. Він бере об’єкт Картки. Якщо об’єкт Картки, який ви переходите до нього, не існує у вашій бічній колоді, ваш бот замість нього ВИМОГИ.
Параметри, які ваш бот отримує щоразу, такі:
- Масив, що містить виграші кожного гравця. win [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!
Оскільки ці боти покладаються виключно на удачу жеребкування, їх коефіцієнт виграш-втрат може різко відрізнятися. Буде цікаво подивитися, як майстерність може боротися з удачею в грі.
Це має бути все, що потрібно! Іди будуй ботів!
Пояснення Правил
Основна колода - це сорок карт: 4х1-10 Перестановляється на початку кожної руки.
У бічній колоді гравця є чотири карти, вибрані випадковим чином із 2x1-5. Бічна палуба зберігається між руками.
Руки розігруються в іграх за найкращу трійку з п’яти. Боти оцінюються виходячи із загальної кількості виграних ігор, а потім від загальної кількості рук.
Збіг проводиться так, що кожному гравцеві доведеться зіграти 100 000 ігор проти кожного іншого гравця.
У Кубку Pazaak раундів стилю елімінації звузить, хто насправді найкращий бот Pazaak. Кожне пару ботів буде грати за найкращі чотири з семи наборів по 100 000 ігор. Хто виграє чотири, перейде вгору по сходах до наступного суперника, і програвші залишаться в бою за послідовний рейтинг. Цей стиль гри є найбільш справедливим, оскільки боти не можуть «виграти» певних супротивників, щоб компенсувати відсутність здібностей проти інших. Кубок Pazaak відбудеться у п’ятницю, 3 липня, за умови наявності щонайменше восьми поданих ботів. Переможець отримає статус правильної відповіді та стартовий бонус у Advanced Pazaak, який, сподіваємось, буде готовий майже до того ж часу, коли проводиться Кубок Pazaak.