ITPW

Zasady gry Ataxx

Zasady gry Ataxx są bardzo proste.

Jest to gra dla dwóch graczy, w której gracze wykonują ruchy na zmianę.

Gra toczy się na planszy 7x7 pól.
Na planszy znajdują się dwa rodzaje kamieni: kamienie czarne należą do jednego z graczy, kamienie białe - do drugiego.
Początkowo na planszy znajdują się 4 kamienie.
Dwa czarne - na polach a7 i g1 - i dwa białe - na polach a1 i g7. (Patrz Prosta Notacja)

Rozgrywkę rozpoczynają czarne.

Można wykonać ruch na dwa sposoby.

  • Z pola na którym leży własny kamień klonujemy kamień na puste pole sąsiednie. Ruch jest dozwolony w każdym z ośmiu kierunków.
    Np. z a3 na pola: a2, b2, b3, b4, a4
  • Z pola na którym leży własny kamień przesuwamy owy kamień na puste pole na odległość dokładnie dwóch pól.
    Np. z a3 na pola: a1, b1, c1, c2, c3, c4, c5, b5, a5.
    (Czyli po ruchu a3a1 pole a3 jest puste, a na polu a1 jest kamień.)

Po wykonaniu ruchu kamieniem na pewne pole, wszystkie kamienie sąsiadujące z tym polem zmieniają kolor na kolor kamieni gracza wykonującego ruch.

Mamy sześć przypadków kończących grę:
  • Jeżeli plansza nie ma pustych pól, to wygrywa ten gracz, który ma większą ilość kamieni na planszy.
  • Jeżeli plansza ma puste pola a gracz wykorzystał swój limit czasowy, to gracz ten przegrywa.
  • Jeżeli plansza ma puste pola a gracz nie może wykonać żadnego ruchu, to gracz ten przegrywa.
  • Jeżeli na planszy pozostały kamienie tylko jednego z graczy, to wygrywa właściciel kamieni na planszy.
  • Jeżeli takie samo ułożenie kamieni na planszy pojawiło się trzy razy w ciągu rozgrywki i za każdym razem jest ruch tego samego gracza, to jest remis.
  • Jeżeli ostatnie 50 ruchów to skoki (ruchy o 2 pola), to jest remis.


Protokół programu grającego i arbitra


Jest to prosty protokół tekstowy.
Program grający przyjmuje jednoliniowe komendy na standardowe wejście i wypisuje jednoliniowe odpowiedzi na standardowe wyjście.
Pierwszą komendą, jaką dostaje program jest:
czarne $czas
lub
biale $czas
gdzie $czas jest liczbą milisekund, jaką ma do dyspozycji program przez całą partię.
To ustala jakimi kamieniami mamy się ruszać.

Jeśli gracz gra czarnymi, odpowiada wykonaniem ruchu.
Jeśli gracz gra białymi, czeka na pierwszy ruch.


Teraz następuje właściwa rozgrywka (po przesłaniu pierwszego ruchu do arbitra przez białe).
Komenda arbitra oznaczająca wykonanie ruchu przez przeciwnika to:
 $ruch $czas 
gdzie $ruch to zapis ruchu w Prostej Notacji a $czas to liczba milisekund, jaka pozostała programowi do wykorzystania do końca gry.

Prosta Notacja to zapis ruchu, który składa się z dwóch współrzędnych dwóch pól - pola źródłowego i pola docelowego:
$poleZrodlo$poleCel
Współrzędne są zapisane w notacji szachowej (a1 to lewy dolny róg, g7 to prawy górny, a7 to lewy górny).
Przykładowymi ruchami są : a7a6, a1a2, a6b5, a2c3

Arbiter zaczyna mierzyć czas w momencie wysłania ruchu do programu, kończy w momencie otrzymania ruchu od programu.

Wykonanie ruchu polega na wysłaniu odpowiedzi w postaci:
$ruch

Ostatnią komendą wysyłaną do programu jest:
koniec
Komenda ta oznacza koniec rozgrywki. Program nie odpowiada na nią.
Oczekuje się, że program się wtedy zakończy.

Wszystkie komendy i odpowiedzi są zakończone znakiem końca linii.

Program-arbiter sprawdza poprawność ruchów i stwierdza koniec gry.

ITPW, KNI TEAM