2010-02-09

[Java] Gra w Kółko i Krzyżyk - 2. Założenia

Przed przystąpieniem do jakiejkolwiek zabawy z kodem dobrze jest pozbierać myśli i przelać je na papier. Nawet najbardziej podstawowe rzeczy warto jest sobie rozpisać - to później może pomóc w pracy a na pewno nie zaszkodzi. Dotyczy to nie tylko tej gry ale każdego innego projektu.

Zasada działania gry


Gra, o czym chyba każdy wie, polega na stawianiu znaków - kółka (O) i krzyżyka (X) - na planszy składającej się z dziewięciu pól:

012
345
678

Gra toczy się do momentu wyczerpania wolnych pól (0-8) lub gdy jeden z graczy ustawi trzy znaki (kółka lub krzyżyki) obok siebie w pionie, poziomie lub po przekątnej. Gra przeznaczona jest dla dwóch graczy, którzy wykonują po jednym ruchu na przemian.

Założenia


Aplikacja ma umożliwiać grę między Człowiekiem (użytkownikiem komputera) a Komputerem (graczem komputerowym). Celem Komputera jest wygranie pojedynku z graczem (nie jedynie losowe stawianie ruchów) tak więc należy opracować algorytm wg którego Komputer będzie działał aby wygrać.
Istnieje ograniczona ilość rozwiązań, dzięki którym można wygrać grę:
1. Pierwsze rozwiązanie
012

2. Drugie rozwiązanie
345

3. Trzecie rozwiązanie
678

4. Czwarte rozwiązanie
0   
3
6

5. Piąte rozwiązanie
  1 
4
7

6. Szóste rozwiązanie
    2
5
8

7. Siódme rozwiązanie
0
4
8

8. Ósme rozwiązanie
2
4
6

Zwycięży gracz, który pierwszy tak ułoży swoje znaki (kółka lub krzyżyki) aby utworzyły jeden z ośmiu wyżej pokazanych układów.
Grę będzie rozpoczynał użytkownik komputera lub komputer - zależnie od ustawienia. Program będzie miał również możliwość wyboru, który z graczy bedzie posługiwał się znakiem X a który znakiem O.

Aplikacja będzie posiadać interfejs graficzny składający się z dwóch podstawowych elementów: planszy oraz pola na komunikaty. Plansza - jest to tak naprawdę dziewięć przycisków ułożonych za pomocą menedżera GridLayout tak aby tworzyły układ zaprezentowany na rysunku poniżej. Każdy z przycisków odpowiada za jedno pole planszy.


Pole tekstowe znajdujące się pod planszą pełni funkcję informacyjną – informuje
użytkownika dlaczego gra została przerwana. Może się tutaj pojawić komunikat o tym kto zwyciężył lub że nie ma już więcej wolnych pól i w związku z tym pojedynek między
graczami zakończył się remisem.

W następnym odcinku - UML'owy diagram przypadków użycia... :)

Podoba Ci się ten wpis? Kliknij w reklamę. :)

2 komentarze:

  1. w rzeczywistosci taka prosta gra a rozpisana tutaj brzmi jak szachy ;-)

    OdpowiedzUsuń
  2. szachy... to dopiero byłoby roboty i pisania... :)

    OdpowiedzUsuń