Kółko i krzyżyk – poruszanie się po planszy strzałkami

0

Witam,
Robie konsolową aplikację która w skrócie ma być grą w kółko i krzyżyk.
Jak wiadomo potrzebna wiec będzie tablica 3x3, po której chciałbym się poruszać strzałkami - na starcie kursor chciałbym aby był na srodku czyli polu [2][2] i przesuwał sie góra dól lewo prawo przeskakując po tablicy. Ktoś ma jakis pomysł aby to zrobić jakąś pętlą?
Pozdrawiam ;P

0

Zamiast poruszania strzałkami możesz ponumerować pola od 1 do 9 i wpisywać do nich znaki przez podanie odpowiednich liczb w konsoli.

0

Tak własnie mam zrobione do tej pory jednak chciałbym to zrobić na strzałkach bo widziałem że jest to możliwe :/

2

Przyda ci się biblioteka typu ncurses do obsługi konsoli.

0

Aby wiedzieć które pole jest aktywne, potrzebujesz dwóch liczb okreslających współrzędne. Tablice indeksowane są od 0, więc dozwolone wartości znajdują się w przedziale od 0 do 2. Tak więc zmienne pamiętające współrzędne aktywnej komórki inicjalizujesz liczbami 1, bo te oznaczają środkowy rząd i kolumnę.

W jakiś sposób zapewne chcesz pokazać aktywne pole. Możesz to zrobić rysując np. ramkę w innym kolorze. Do tego celu przyda się jakaś biblioteka (poprzednik podał tę chyba najpopularniejszą), tak aby nie trzeba było w kółko kasować całej zawartości konsoli i jej znów malować.

Samo poruszanie się po planszy musi być zawarte w pętli – może być do czy while, bo warunek choć znany (wygrana, remis lub przerwanie rozgrywki), to nie wiadomo w którym momencie nastąpi. Bo można wygrać po kilku ruchach, jak również dopiero w ostatnim ruchu.

W takiej pętli należy oczekiwać na wciśnięcie klawisza i odpowiednio reagować na te zdefiniowane. Jeśli wciśnięto klawisz strzałki to sprawdzasz, czy współrzędne aktywnego pola możesz zaktualizować – np. dla strzałki w lewo to współrzędna x minus 1, dla tej w prawo to plus 1 itd. Aby móc przejść do pola po lewej, współrzędna x musi być większa od 0, a w prawo, współrzędna musi być mniejsza od 2.

Pętli ogólnie musi być kilka, bo trzeba zapętlić całą grę (jako program), ale też rozgrywkę (naprzemienne stawianie znaków przez graczy) oraz samo postawienie znaku (poruszanie się po planszy do czasu postawienia znaku). Pamiętaj jednak o tym, aby nie wrzucać całego kodu do funkcji main – podziel go na małe, uniwersalne funkcje.

To tyle w skrócie, jeśli o teorię chodzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1