ITPW

Gomoku

Gomoku, czyli kółko i krzyżyk na pięć.

Zasady gry

Gra rozgrywana jest na planszy o wymiarach 15x15 pól. W grze biorą udział dwa programy. Początkowo plansza jest pusta. Następnie programy na przemian stawiają pionki na puste pola na planszy. Jeden program stawia krzyżyki, a drugi kółka. Celem gry jest ułożenie na planszy co najmnij pięciu swoich pionków w ciągłej linii. Poziomo, pionowo, bądź na ukos. Pierwszy gracz, który tego dokona, zostaje zwycięzcą; jeśli nie uda się to nikomu (plansza zostanie zapełniona), następuje remis. Ponadto na jedną rozgrywkę (na całą rozgrywkę, a nie na jeden ruch) jest ograniczenie czasowe. Jeśli program myśli dłużej, to przegrywa. Również wypisanie niepoprawnego ruchu oznacza przegraną.

Komunikacja z arbitrem

Pola planszy są oznaczane dwoma liczbami od 1 do 15. Dla ustalenia uwagi, pierwsza liczba to numer kolumny, a druga numer wiersza, przy czym pole 1 1 to lewe górne.

Twój program powinien komunikować się przez standardowe wejście i wyjście zgodnie z następującym protokołem:

  1. Najpierw wczytaj dwie liczby całkowite. Pierwsza z nich mówi, czy zaczynasz (wtedy jest to 1), czy nie (wtedy jest to 0). Druga liczba to czas, który masz na rozegranie tej gry, w sekundach.
  2. Następnie na zmianę wczytuj ruch przeciwnika i wypisuj swój.
    • Gdy przeciwnik wykona ruch, powinieneś wczytać trzy liczby. Pierwsze dwie to współrzędne pionka postawionego przez przeciwnika. Trzecia z tych liczb, to czas, który pozostał ci jeszcze na grę (w mili sekundach).
    • Gdy jest Twoja kolej, to wypisz swój ruch (dwie liczby od 1 do 15). Następnie należy przejść do nowej linii oraz odświeżyć standardowe wyjście (jeśli program używa buforowanego wyjścia - w C służy do tego funkcja fflush(stdout)).

Przydatne zasoby

W ,,Przydatnych zasobach'' znajduje się arbiter pomocniczy, którego możesz wykorzystać do testowania własnych rozwiązań.

Rozgrywki

Każdy program biorący udział w zawodach zagra z każdym innym dwie gry: w jednej będzie krzyżykiem, a w drugiej kółkiem. W każdej z nich za wygraną otrzyma 4 punkty, za remis 1 punkt, za przegraną 0 punktów. Ostateczy wynik programu to suma punktów z wszystkich jego gier.

ITPW, KNI TEAM