Connect5 — Piškvorky přes Messenger

Což takhle zahrát si piškvorky přes Messenger? Stačí do vyhledávání napsat @connect5Game a hned vyskočí stránka, přes kterou je to možné!

Ovládání

Komunikace s botem je postavená na několika textových příkazech. V případě neznalosti nebo chyby se stránka ozve a doporučí vhodný příkaz, popř. třeba upozorní, že hráč není na tahu.

  • new — vytvoří novou hru s mřížkou 8x8
  • new 12 — vytvoří novou hru s mřížkou 12x12
  • 12345 — při vytvoření hry se vygeneruje pětimístný kód, který zakládající hráč pošle svému spoluhráči. Ten jej samotný pošle jako zprávu stránce @connect5Game. V tu chvíli se vytvoří mezi hráči nová hra, začíná vyzvaný. Jak již jsem psal, hra je založená čistě na textových příkazech, tudíž zběsilé ťukání do obrázku s vyobrazenými tahy nebude mít účinek tahu dalšího.
  • [A – H][1 – 8] / [A – L][1 – C] — tah se provádí příkazem ve tvaru identifikátoru políčka, kam chce hráč táhnout. V případě mřížky 8x8 je to rozpětí od A1 po H8, v případě 12x12 A1 po LC (po devítce následuje A, B, C namísto 10, 11, 12)
  • give up — vzdát hru

Technické řešení

Existují určitě i zvědavci, kteří by se rádi dozvěděli, jaká to ozubená kolečka pohánějí piškvorkového bota. Pro ty je určen následující odstavec, ostatní klíďo píďo můžou přeskočit na poslední část — Závěrem.

Connect5 je bot vskutku jednoduchý. Datová vrstva je reprezentována několika tabulkami v MySQL databázi. Skripty obsluhující MySQL a zpracovávající požadavky jsou napsány v jazyce PHP. Některým se možná zježí všechny vlasy na hlavě, ale hlavní skript o cca 250 řádcích kódu je dokonce čistě procedurální (haters gonna hate). Herní skript využívá PHP GD knihovnu, která umožňuje pouze základní manipulaci s obrázky, což je ovšem vše co nám stačí. Princip táhnutí je totiž úplně triviální: skript vezme obrázek mřížky z předchozího tahu (popř. prázdnou mřížku na začátku hry), a na ní podle vypočtených souřadnic "přilepí" obrázek kolečka nebo křížku (všechny obrázky jsou ve formátu PNG). Poté uloží zahashované jméno obrázku mřížky po tahu do databáze a obrázek pošle oběma hráčům.

Celá komunikace s Facebookem (resp. Messengerem) probíhá pomocí Graph API od Facebooku, které od minulého roku poskytuje tzv. Messenger Platform, umožňující tvorbu botů pro automatizované odpovídaní. Samotná data jsou přenášena pomocí PHP curl knihovny, posíláním HTTP požadavků a daty ve formě JSONu. To vše je ovšem možné až po založení a následné autorizaci aplikace v systému developers.facebook.com, a jejím spojení s nějakou Facebookovou stránkou, která bude přijímat a posílat zprávy (v tomto případě @connect5Game).

Závěrem

Hru můžete zatím hrát pouze proti člověku, kdo trochu vidí do problematiky herních algoritmů ví, že implementace robota není žádná sranda (...není to tak těžký, Mikuláš je línej :D ). Přesto pokud se ji rozhodnete zkusit a bude vás bavit, budu rád, že jsem někomu zpříjemnil třeba nudnou práci nebo přednášku. Zanedlouho také zveřejním další článek o daleko větší aplikaci, na které pracuju už přes půl roku, tak se těšte :)
Upozornění: Pokud neodehrajete žádný tah do 24 hodin, hra se smaže. Je to bohužel dáno limitací Facebooku.

Přidat komentář

Komentáře

Lol
Komentováno Tue, 16 May 2017 15:57:46 čtenářem mik