Program zaliczeniowy - goban

Całkowicie nieoficjalna wersja wstępna

Synopsis

Interaktywna plansza do gry w go.

(do napisania programu nie jest potrzebna umiejętność gry w go, a jedynie znajomość podstawowych zasad, które są opisane w tym dokumencie)

Plansza

Plansza składa się z przecinających się 19 poziomych i 19 pionowych linii. Czasem zamiast 19x19 stosuje się plansze 13x13 lub 9x9.

Linie pionowe tradycyjnie oznaczane są literami, poziome liczbami.[1]

Zadanie: program ma otworzyć okno, w którym jest narysowana plansza, oraz przycisk do wyjścia z programu.

Piony

Do gry służą czarne i białe piony, które gracze na przemian kładą na przecięciach linii

Zadanie: w momencie kliknięcia w pobliżu przecięcia linii [2] program ma umieścić na planszy odpowiedni pion (co najmniej czarne lub białe kółko odpowiedniego rozmiaru) [3].

Sąsiedztwo

Sąsiadami danego przecięcia są najbliższe przecięcia połączone z nim linią pionową lub poziomą (nie na skos)

Zadanie: w momencie kliknięcia w pobliżu przecięcia zawierającego pion, program ma wypisać zawartość tego pola i pól sąsiednich, np. tak:

Kliknięto A4: czarny
A3: wolne
A5: czarny
B4: biały

Grupy

Jeżeli pion sąsiaduje z pionem tego samego koloru mówimy, że są one połączone. Grupa to maksymalny zbiór pionów takich, że każdy z nich jest połączony z innym pionem z tego zbioru (pion niepołączony z żadnym pionem możemy traktować jako grupę jednoelementową).

Zadanie: w momencie kliknięcia w pobliżu przecięcia zawierającego pion, program ma wypisać grupę, do której należy dany pion.

Oddechy

Wolne pole sąsiadujące z pionem danej grupy jest nazywane oddechem tej grupy. Liczba oddechów danej grupy to liczba takich pól.

Zadanie: w momencie kliknięcia w pobliżu przeci ¹cia zawierającego pion, program ma wypisać oddechy grupy do której należy dany pion.

Przykład

Powyższa ilustracja przedstawia czarną grupę i dwie białe grupy. Małe kwadraciki oznaczają oddechy. Jeśli biały zagra w punkcie oddechu wspólnego dla dwóch swoich grup, połączy je w jedną grupe.

Życie i śmierć

Grupa żyje, jeśli ma co najmniej jeden oddech.

Ruch odbierający życie (ostatni oddech) grupie przeciwnika powoduje usunięcie z planszy wszystkich pionów tej grupy.

Jeśli Biały zagra w punkcie A, czarna grupa jest martwa i zostaje zdjęta z planszy

Ruch odbierający ostatni oddech własnej grupie jest niedozwolony, chyba, że zabija grupę przeciwnika (czyli po jej zdjęciu z planszy nasza grupa będzie miała oddech).

Zadanie: program ma realizować powyższe reguły.

Przypisy

[1] Tradycyjnie używane są litery: ABCDEFGHJKLMNOPQRST od lewej do prawej, oraz liczby od 1 do 19 od dołu do góry planszy.

[2] Pojęcie "w pobliżu" jest umyślnie nieprecyzyjne. Program musi je realizować tak, aby używanie go było wygodne; nierealistyczne jest wymaganie, by użytkownik kliknął dokładnie w punkcie przecięcia linii. Możliwą definicją "pobliża"jest np. obszar w promieniu 1/3 odległości między liniami.

[3] Można też użyć jakiejś ładnej bitmapy.