Пісочниця для програмістів

Привіт, Хабрахабр!

Я хочу зіграти з тобою в гру.


Але якщо бути точним, то я хочу презентувати вам результат моєї роботи за останні пару місяців. Кодова назва — пісочниця.

Що це?
Суть цієї системи проста: це пісочниця для програмістів. Тут можна і потрібно писати штучний інтелект для своїх ботів і грати з ботами інших учасників. У що грати? Все просто — в дурня. Так-так, в карткову гру.

Дана система виросла з невеликого проекту з вивчення пермішенов в Java. Спочатку мені було просто цікаво як працюють розмежування виконуваного коду, як будується плагинная архітектура і т. д. Але в підсумку захотілося обернути все це на закінчений продукт — ось як все вийшло.

Кому цікаво, давайте поглянемо ближче на саму систему.

Перш за все хочу сказати що все нижчевикладене ви можете знайти на Intro сторінці в самій системі. Там ж є більш-менш повне керівництво, воно дозволить подолати і без того низький поріг входження. Так само хочу зауважити що стадія проекту — ОБТ, але це жодним чином не позначається на функціональності. Все заплановане для релізу вже на борту. Попереду лише допиливание хотілок і полірування.

Як працює система?
Життєвий цикл гравця дуже проста. Після реєстрації та активації акаунту* у Вас з'являється доступ до всіх функцій системи. І тепер Ви, як гравець, можете писати, компілювати і завантажувати вашого бота.

Після завантаження відбувається раунд проти самої системи. Це називається — кваліфікація. Мета лише одна — перевірити на вошивість код бота. Якщо бот грає не чесно грати не вміє, а може навіть намагається дурити, він автоматом отримує штраф і далі грати не може. Для продолженния його потрібно виправити і залити повторно.

Слідом за кваліфікацією бот вже може брати участь в турнірі. Гравці для турніру підбираються за Швейцарською системою. Ігри проводяться щогодини. Турнір триває тиждень. Підсумки підводяться щонеділі. Очки розподіляються за формулою рейтингу Ело. І перша трійка потрапляє в Історію Турнірів. По всім переможцям є зведення — Зал Слави.

* тут прошу зауважити що листи активації гугл може позначати як спам. Цю проблему, на жаль, подолати не вдалося. DNS налаштував по повній, але все ж, з незрозумілих мені причин, довіру не на висоті.

Як користуватися?

Інтерфейс

Коментувати скріни я думаю буде зайвим, тому спробую привернути увагу картинками.

Зал Слави


Історія турнірів


Статистика гравця


Лог гри (початок)


Форма завантаження бота (запам'ятайте її, це вхідна точка в турнір)


Бот

Код який потрібно написати залежить цілком від вас. Можна реалізувати просту стратегію, як у противника в кваліфікаційному раунді, а можна розробити і свою. Для написання потрібні: java + maven + редактор.

Сам інтерфейс бота містить всього два методи, які система смикає по черзі в перебігу гри в залежності від ролі гравця. Об'єкт який надходить на вхід кожного з методів містить всю необхідну інформацію про поточний стан гри, на її основі і потрібно робити висновки і робити ходи.

public interface Ai {

/**
* Called by executor every move when your role is Attacker
* @param table cards on the table
* @return attacking card
*/
Card onAttack(Table table);

/**
* Called by executor every move when your role is Defender
* @param table cards on the table
* @return defending card
*/
Card onDefence(Table table);
}


Навіщо?
Для вас це спосіб позмагатися. Адже не те що кожен програміст, а навіть кожна людина любить змагатися і доводити свою першість.

Для мене це досвід підтримки системи в продакшені. Сподіваюся отримані знання дозволять і далі розвивати розпочату (якщо, звичайно, це буде цікаво).

Де грати?
Ось ссилочка — sandbox.x-lab.space

Хостинг не наворочений, так що заодно і провайдера перевірю, чи витримає він іменоване явище хабраэффектом.

Всім дякую за увагу. Чекаю на ваші запитання, відгуки, конструктивну критику, для мене це важливо.

p.s.
Якщо помилився хабом або ресурсом (сам думав куди краще, сюди або на geektimes) — підкажіть, я перенесу.

З'явилося бажання взяти участь?

/>
/>


<input type=«radio» id=«vv72436»
class=«radio js-field-data»
name=«variant[]»
value=«72436» />
так, спробую зайти пограти на дозвіллі
<input type=«radio» id=«vv72438»
class=«radio js-field-data»
name=«variant[]»
value=«72438» />
ні, повно вже такого добра
<input type=«radio» id=«vv72440»
class=«radio js-field-data»
name=«variant[]»
value=«72440» />
це не для програмістів взагалі!

Проголосувало 55 осіб. Утрималося 40 осіб.


Потрібна стаття про саму систему, як вона побудована, як працює, на яких технологіях і тп?

/>
/>

<input type=«radio» id=«vv72442»
class=«radio js-field-data»
name=«variant[]»
value=«72442» />
так, тут явно потрібно розібратися
<input type=«radio» id=«vv72444»
class=«radio js-field-data»
name=«variant[]»
value=«72444» />
немає, всім і так все відомо

Проголосувало 62 людини. Утримався 31 людина.


Тільки зареєстровані користувачі можуть брати участь в опитуванні. Увійдіть, будь ласка.


Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.