# Reversi a simple game written in C with GTK+ 1. **Okno główne aplikacji.** ![alt tag](https://github.com/dingorth/Reversi/blob/master/reversi_obrazek.jpg) 2. **Funkcjonalności aplikacji:** - Po kliknięciu przycisku "Nowa gra" przeciwnik dostaje zapytanie czy chce rozpocząć nową grę. Może zaakceptować albo odrzucić propozycję. W tym czasie gracz który wnioskował o nową grę czeka na odpowiedź przeciwnika. W przypadku odpowiedzi pozytywnej gra rozpoczyna się. - Po kliknięciu przycisku "Cofnij" przeciwnik dostaje zapytanie czy pozwala swojemu przeciwnikowi na cofnięcie jednego ruchu. W tym czasie gracz który wnioskował o cofnięcie ruchu czeka na odpowiedź przeciwnika. W przypadku odpowiedzi pozytywnej ruch jest cofany. Można wnioskować tylko o cofnięcie jednego swojego ruchu. - Gracz nie może nacisnąć żądnego pola dla którego jego ruch byłby niepoprawny. - Pola oznaczone małym szarym kółkiem to pola na które gracz może nacisnąć i wykonać poprawny ruch. - Jeśli poprawny ruch na gracza nie istnieje to automatycznie przeciwnik ma 2 ruch. - Jeśli gracz wyjdzie z gry to jego przeciwnik otrzymują taką informację i może wyjść z gry. - Wszystkie niedozwolone akcje są poblokowane. - Gracze podczas rozgrywki mogą ze sobą konwersować. - Po zakończonej rozgrywce obu graczom wyświetla się informacja który z nich wygrał. Mają możliwość albo od razu wnioskować o następną nową grę albo zrezygnować z tej przyjemności i wejść do okna z zakończoną grą i znowu ewentualnie zacząć nową grę lub wyjść. 3. **Moduły aplikacji:** - Moduł główny - tworzy GUI i podpina zdarzenia do sygnałów. - Moduł gry - zarządza całym przebiegiem gry i wszystkimi akcjami z nią związanymi, oraz czatem. - Moduł komunikacyjny - odpowiada za komunikację międzyprocesową. 4. **Uruchamianie / kompilacja:**</br> 4.1 **Linux**</br> Do kompilacji wymagana biblioteka GTK+-3.0</br> Jej instalacja:</br> `sudo apt-get install libgtk-3-dev`</br> Program kompilujemy następnie polecieniem:</br> ``gcc main.c reversi.c pipes-lin.c -std=c99 -o reversi `pkg-config --cflags --libs gtk+-3.0` ``</br> </br> Uruchamiamy w 2 osobnych terminalach poleceniem:</br> `./reversi B` lub `./reversi C` do skutku.</br> Jeśli nie zadziała B to uruchamiamy z C, a drugi z innym parametrem.</br></br> 4.2 **Windows**</br> Na Windowsie postępujemy analogicznie, lecz kompilujemy z plikiem pipes-win.c