Prosta gra: kółko i krzyżyk (SharpDevelop)

Dzisiaj pokażę wam jak zrobić prostą grę, będzie to gra w kółko i krzyżyk. Użyje do tego Sharpa.

kik16Sharp jest programem bardzo podobnym do Visual studio. Wybieramy  „Nowe rozwiązanie”

kik1Teraz wystarczy wypełnić wolne pola:

kik2Teraz pokaże się nam pulpit prawie taki jak w visual studio.

kik3Jeśli nie mieliśmy nigdy do czynienia z Sharpem warto sobie pootwierać okienka i popatrzeć co gdzie jest. Aby podejrzeć efekt wizualny należy wybrać „Wzór” a zestaw elementów otwieramy w „Narzędzia”

kik4Z zestawu narzędzi wybieramy Label i przeciągamy je na naszą formę, te elementy będą nas informowały czyja jest w tym momencie kolej:

kik5

Teraz znajdujemy w Narzędziach „Panel” i dodajemy do naszej formy, do panelu wrzucamy „tableLayoutPanel” wszystko razem powinno wyglądać jak na zdjęciu poniżej

kik6

dodajemy do niego wiersz i kolumnę aby powstały kwadraty 3X3

kik7

kik8

Wyśrodkujmy ją ładnie i rozciągnijmy. Teraz do każdej komórki należy przeciągnąć „label” i ponazywać je:

l11,l12,l13,l21,l22,l23,l31,l32,l33, tak jak na obrazku

kik10

Teraz zmieniamy im BorderStyle na FixedSingle aby nasz label miał otoczkę.

kik9

Ostatecznie powinno to wyglądać tak:

kik11

Zmieniamy wielkość liter aby nasze kółko bądź krzyżyk było lepiej widoczne:

kik14

kik15

Teraz krzyżyki i kółka będą dobrze widoczne na ekranie. Teraz musimy dodać przycisk rozpoczynający grę a label1 ustawiamy tekst „Zaczyna:”  Tekst dla label2 zostawiamy bez zmian. Ostatecznie wygląda to tak:

kik16

Zaczynamy kodowanie. Najpierw najlepiej ustalić sobie plan. Plan naszej gry wygląda tak:

1. przyciskamy przycisk „start”.

2. algorytm losuje kto będzie zaczynał i wyświetli to w label2.

3. przyciskając pole, wybrany label zmienia tekst z  „” na „X” albo „O”.

4. Odpowiednia konfiguracja kończy grę i wyświetla komunikat o wygraniu kółka, krzyżyka albo o passie.

5. Po wygranej pola są blokowane a grę możemy zacząć od nowa przyciskając „start”.

Na początek ustawiamy Enabled naszego Panel1 na false aby nikt nie mógł rozpocząć gry przed wciśnięciem start:

Program musi wiedzieć czyja jest w danym momencie kolej więc na początku  musimy sobie zadeklarować publiczną zmienną typu boolean

zmienna ta będzie się zmieniać co da nam możliwość stawiania raz kółka raz krzyżyka w zależności od tego czy będzie to true albo false.
Po zadeklarowaniu zmiennej „parzysty” będzie trzeba jeszcze wyzerować wszystkie pola i w przypadku gdy zechcemy pograć jeszcze raz odblokować panel:

Wracamy teraz do naszego wzoru, musimy zrobić odwołanie do każdego naszego labela w formie tak aby po jego naciśnięciu pojawiał nam się krzyżyk albo kółko. W tym celu wracamy do „Wzoru”:

kik18

 

1. Wybieramy lewym przyciskiem myszki label

2. wybieramy we właściwościach „Zdarzenie”

3. Odnajdujemy  Akcja -> „Click” i przyciskamy na puste pole obok, co spowoduje przeniesienie nas do kodu i zrobienie nowego odnośnika do zdarzenia.

 

 

 

 

Czynność tą powtarzamy dla każdego naszego labela do uzyskania czegoś takiego:

Teraz stworzymy funkcje która przy kliknięciu na label będzie sprawdzała czy label jest już wybrany a jeśli nie jest to wprowadzi do niego odpowiedni tekst.

zmienną w naszej funkcji jest „lab” aby sprawić aby funkcja działała należy nasze odwołania do zdarzenia „Click” wypełnić odpowiednim odwołaniem do funkcji:

Dobra czyli można już rozpocząć, zacząć od nowa grę i wstawiać kółka i krzyżyki. Teraz wystarczy stworzyć funkcje która po każdym kliknięciu będzie sprawdzała czy ktoś może nie wygrał czy może nie ma już gdzie stawiać znaczników. Najtrudniejszy był do zrobienia pass czyli sytuacja gdy nikt nie wygrywa. W tym programie wymyśliłem to tak. Zadeklarowałem sobie zmienną publiczną integer i nazwałem ją suma. Po każdym kliknięciu kółka czy też krzyżyka do sumy dodawało się 1 i w momencie gdy nikt nie wygrał a suma równała się 9 gra kończyła się remisem. Podstawa takiej funkcji wygląda tak:

A nasza funkcja kolkoczykrzyzyk zmieni się o dodanie do niej funkcji wygrana:

Czyli teraz mamy tak, po kliknięciu na label uruchamiana jest funkcja „kolkoczykrzyzyk” która najpierw sprawdza czy komórka jest pusta, jeśli tak to za pomocą zmiennej parzysta określa jaki znacznik powinien być w komórce następnie zmienia parametr „parzysta” i na końcu uruchamia funkcje która w zależności od znacznika dodaje jeden do sumy i sprawdza wygrana i stopuje grę gdy suma osiągnie 9. Jest 8 sytuacji w których wygrywa „X” i w których wygrywa „O” trzeba je wszystkie rozpisać w więc dla krzyżyka będzie to wyglądało tak:

Na pewno wielu z was zastanowi się po co ten element „suma -=1” zastosowałem go tutaj ponieważ kod jest realizowany od góry w dół, sytuacja wygrany może zdarzyć się tylko raz ale może zdarzyć się sytuacja w której ktoś wygrywa i zapełnione są wszystkie pola a więc funkcja pokaże komunikat o wygranej i o pasie, nie zdarzy się tak gdy suma nie osiągnie 9 i element ten będzie sprawdzany na samym końcu. Ostatecznie wygląda to tak:

Jak działa program można zobaczyć tutaj:

http://youtu.be/olObSvVBQl8

pobrać program można stąd: kolko_i_krzyzyk

pełen kod gry jest tutaj: kod_gry

Dziękuje wszystkim za uwagę, pozdrawiam. Mam nadzieje, że komuś się przyda.

 

Permalink do tego artykułu: https://visualmonsters.cba.pl/prosta-gra-kolko-i-krzyzyk-sharpdevelop/

Dodaj komentarz

Twój adres email nie będzie publikowany.