Ідея цього виклику проста: створити бота, щоб грати в карточну гру Euchre.
Для тих із вас, хто їх ще не знає, я написав тут Еухре правила, коли вони стосуються цього завдання.
Я рекомендую використовувати python або щось подібне, але єдиним реальним обмеженням є те, що він повинен бути сумісний з кодом контролера
Вхід:
Ваш бот euchre отримає різні види введення залежно від поточної фази гри або раунду. Взагалі кажучи, ви отримаєте фазу гри на першому рядку з комою та кількістю очок, яку має ваша команда, а потім відповідні дані у наступних рядках.
Хронологічно ваш бот отримає дані в такому порядку:
Ordering Trump:
js,ah,qc,ts,jc // the cards in your hand
2 // number of points your team has
0 // number of tricks your team has taken
ordering // the phase of the game
th // the turned up card
p,p // each previous player’s decision
Naming Trump:
js,ah,qc,ts,jc // the cards in your hand
2 // number of points your team has
0 // number of tricks your team has taken
naming // the phase of the game
p // each previous player’s decision
Dealer Discarding:
js,ah,qc,ts,jc // the cards in your hand
2 // number of points your team has
0 // number of tricks your team has taken
discard // the phase of the game
th // the card you will pick up
Going alone:
js,ah,qc,ts,jc // the cards in your hand
2 // number of points your team has
0 // number of tricks your team has taken
alone // the phase of the game
h // the trump suit
n,n // each previous player’s decision
Your turn:
js,ah,qc,ts,jc // the cards in your hand
2 // number of points your team has
0 // number of tricks your team has taken
turn // the phase of the game
h // the trump suit
td,8h,p // each previous player’s card
Trick data:
// the cards in your hand (none, since this happens at the end of a trick)
2 // number of points your team has
1 // number of tricks your team has taken
trick // the phase of the game
0 // the index of the following list that is your card
js,tc,4d,js // the cards played during the trick in the order they were played
Вихід:
Ваш бот euchre матиме різні виходи залежно від поточної фази гри або раунду.
Ordering Trump:
p //for pass
OR
o //for order up
Naming Trump:
p //for pass
OR ANY OF
c,s,h,d //the suit you want to name
Going alone:
n // no
OR
y // yes
Your turn:
js //the card you want to play
Оцінка:
Оцінка вашого бота - це загальна кількість виграних ігор.
Ваш бот буде грати проти кожного іншого бота, і він завжди буде співпрацювати з його копією.
Примітки:
Ось простий шаблон у python2.7:
#!/usr/bin/python2.7
import sys
data = sys.stdin.readlines()
hand = data[0].strip().split(',') # Hand as a list of strings
points = int(data[1]) # Number of points
tricks = int(data[2]) # Number of tricks
out = ''
if data[3] == 'ordering':
card = data[4] # The upturn card
prev = data[5].strip().split(',') # The previous player's decisions as a list
# Ordering logic
out = # 'o' or 'p'
elif data[3] == 'naming':
prev = data[4].strip().split(',') # The previous player's decisions as a list
# Naming logic
out = # 'p', 'h', 's', 'c', or 'd'
elif data[3] == 'discard':
card = data[4] # The card you'll take
# Discarding logic
out = # The card you want to discard
elif data[3] == 'alone':
trump = data[4] # The trump suit
prev = data[5].strip().split(',') # The previous player's decisions as a list
# Alone logic
out = # 'y' for yes, 'n' for no
elif data[3] == 'turn':
trump = data[4] # The trump suit
prev = data[5].strip().split(',')
# Turn logic
out = # The card you want to play
elif data[3] == 'trick':
trump = data[5]
cards = data[6].strip().split(',')
my_card = cards[int(data[4])]
# Data logic
print(out)
Завжди буде 4 загальні відповіді. Якщо хтось піде наодинці, то відповідь їх партнера буде "р" на свою чергу.
Я намагався зменшити кількість зайвого введення, щоб бути надзвичайно зрозумілим:
2а. Як ваша позиція щодо дилера / лідера, так і карта, яку грав ваш партнер, можна визначити за кількістю попередніх результатів. Між вами та вашим партнером є 1 гравець. Наприклад, якщо ви отримуєте "td, 8h, p" в якості останнього рядка на черзі, ви можете бачити, що ваш партнер грав 8h, а в іншій команді є гравець, який збирається один.
Якщо вам цікаво, угода робиться традиційним способом (у два раунди чергування пакетів по 2 та 3 карти), але це не дуже важливо для вашого бота, тому ...
Якщо другий гравець вирішить замовити у козирній фазі, ця фаза продовжиться, але їхні результати будуть майже ігноровані. Іншими словами, хто замовлює першим, той є в команді Намер, незалежно від будь-якого іншого результату.
Нижче наведено параметри за замовчуванням для різних фаз гри. Якщо ви не отримаєте дійсну відповідь на цей раунд, то ваша відповідь буде змінена на те, що нижче.
Замовлення Трампа: с
Ім'я Трампа: с
Відмова: (перша картка в руці)
Ідучи наодинці: н
Ваша черга: (перша юридична картка у вашій руці)
Ось код контролера для ваших тестових цілей.
6а. Зауважте, що ви можете передати 2 або 4 бот-імена, якщо ви даєте йому 4 боти, то вони потрапляють у довільне співпрацю, а з 2 вони є партнерами з копіями самих себе.
6б. Вам потрібен каталог "ботів" у тому ж каталозі, що і код контролера, і ваш код бота повинен бути в каталозі ботів.
Тим, хто хоче, щоб їх бот запам'ятав, в які карти грали, вам надається можливість під час фази "фокус", яка повідомляє вашому боту, в які карти грав. Ви можете записати файл у каталог ботів до тих пір, поки цей файл не перевищує 1 кб.
Табло:
Old Stager: 2
Marius: 1
Random 8020: 0