BlackJack
Оскільки у мене був вибух, що працює над оригінальним викликом KOTH, я хотів придумати ще один. Для мене задоволення від цих завдань AI полягає в удосконаленні порівняно простого бота, який грає в дуже просту гру. В силу ймовірнісного характеру карткових ігор, я думаю, що блекджек може бути цікавою КОШТОВОЮ грою, подібно до TPD.
Всі правила виведені з опису BlackJack з взуттям на цьому веб-сайті
Правила щодо карт та колоди
- Боти грають за столами чотирьох (4) конкурентів та одного (1) дилера
- Одне (1) взуття (перетасована колода) ділиться всіма гравцями та дилером до вичерпання, після чого буде додана нова довільно переміщена колода і гра буде продовжена. Боти НЕ ПОВІДОМЛЕНІ про додавання цієї нової колоди. Таке повідомлення може бути додане, якщо відсутність цієї функції спричиняє достатні труднощі / проблеми.
- Існує вхід 10 за раунд, а картки безкоштовні
- Ідеальна / ідеальна рука має оцінку 21
- Усі картки обличчя мають значення 10
- Усі цифрові картки варті своєї кількості
- Тузи коштують 11 або 1. Це буде вирішуватися автоматично рамками, а не ботами.
- Згідно з правилами , всі картки гравців роздаються обличчям догори та є видимими. Одна з карт дилера - лицьовою стороною вниз, а інша - лицьовою стороною вгору.
Оцінка балів
- Оцінки понад 21, у яких використовується туз як 11, примушують туз зменшити значення до 1
- бали перевищують 21, які неможливо примусити нижче порогу 21 "перебору" бота
Дилер
- Дилер тягне, поки він не кинеться, або не перевищить бал 17, в який момент він змушений стояти
Ставки та фішки
- На початку кожного раунду стягується ставка 10 , тому мінімальна ставка 10, а мінімальна ставка 1. ПРИМІТКА - ставка є абсолютною вартістю аргументу ставки, тому не турбуйте спробу негативних ставок.
- Боти, які не можуть дозволити собі придбання, видаляються з конкурсу
- Роблячи ставки, боти не можуть ставити більше, ніж у них є фішки
- Якщо ставка можлива, ставка з фішками негайно видаляється з бота і додається до ставки
- Вигравши ставку, ви отримаєте бот в розмірі 2х фішок. Однак, оскільки ставка віднімається від фішок бота, бот розбивається і потім виграє 1х ставку.
- Боти виграють ставки лише в тому випадку, якщо їх оцінка більша, ніж у дилера
Поломка геймплея
Одна рука
- Коли гра починається, кожному гравцеві ітеративно видається одна картка, а з їх фішок віднімається плата за вхід / мінімум 10 доларів США.
- Дилер малює
- Робиться другий прохід, а ще одна картка роздається всім гравцям.
- Дилер малює
- Потім (у тому ж порядку, в якому вони були розроблені) кожен бот виконується, як описано в розділі "Інтерфейс програміста", і повинен зробити рух або стояти. Ставки вважаються рухом. Зверніть увагу, що ставка не впливає на здатність паличок робити додаткові рухи. Можна зробити ставки, а потім намалювати карту, а також можна зробити декілька карт, і вони зробити ставки перед тим, як стояти.
- Коли всі боти зірвалися або стояли, дилер грає до свого порогу 17
- Оцінки ботів порівнюються з результатами дилера, ставки виграються та програються
Один раунд
Вважається складати п'ять (5) рук. Між рук, список учасників сортується для видалення гравців, а потім додатково обробляється, щоб гарантувати, що всі боти грають однаковою кількістю рук (положення про те, що кількість записів не розподілятиметься рівномірно серед таблиць чотирьох ботів. ).
Інтерфейс програміста та юридичні рухи
Як задокументовано у файлі CardShark:
# DOCUMENTATION
# INPUT SPECIFICATION
# $ ./foo.bar <hand-score> <hand> <visible cards> <stake> <chips>
# <hand-score> is the present integer value of the player's hand.
# <hand> is a space-free string of the characters [1-9],A,J,Q,K
# <visible cards> every dealt card on the table. when new shoes are brought
# into play, cards drawn therefrom are simply added to this list
# NOTE: the first TWO (2) cards in this list belong to the dealer.
# one however will be "hidden" by a "#". the other is visible.
# !!! THE LIST IS CLEARED AT THE END OF HANDS, NOT SHOES !!!
# <stake> the number of chips which the bot has bet this hand
# <chips> the number of chips which the bot has
# SAMPLE INPUT
# $ ./foo.bar 21 KJA KQKJA3592A 25 145
#
# OUTPUT SPECIFICATION
# "H"|"S"|"D"|"B" (no quotes in output)
# "H" HIT - deal a card
# "S" STAND - the dealer's turn
# "D" DOUBLEDOWN - double the bet, take one card. FIRST MOVE ONLY
# "B 15" BET - raises the bot's stakes by $15.
Як (зараз) зафіксовано у файлі Карт:
# class CARD
# card is a container for representing paper playing cards in
# otherwise fairly functional programming.
# letter()
# gets the letter used to identify the card in a string
# LETTER MAPPINGS
# Ace : 'A'
# Two : '2'
# Three : '3'
# Four : '4'
# Five : '5'
# Six : '6'
# Seven : '7'
# Eight : '8'
# Nine : '9'
# Ten : 'T'
# Jack : 'J'
# Queen : 'Q'
# King : 'K'
# "Hidden": '#'
Вихідний код системи балів - ТУТ
Зразки ботів
Лім 17
#!/usr/bin/env python
import sys
s = sys.argv
if int(s[1]) < 17:
print "H"
else:
print "S"
Мови вступу
В даний час підтримуються Java, c / c ++, Python та Lisp. Буде докладено розумних зусиль, щоб включити подання іншими мовами, але пам’ятайте, що фінальний конкурс проводитиметься на скриньці Linux.
Вибір переможця
Переможцем стане автор бота, який послідовно накопичував найбільшу кількість фішок протягом ще не визначеної кількості таблиць та раундів. Переможець буде оголошений 3 червня, але оголошення може бути відкладено, якщо все ще надходять документи. Конкурс тривав безстроково.