Zenjubo Temat założony przez niniejszego użytkownika |
Rysowanie planszy w konsoli - gra kółko i krzyżyk » 2012-04-23 14:29:17 Witam,
Mam pytanie odnosnie fragmentu poniższego kodu, funkcja ta rysuje plansze do gry "Kółko i Krzyżyk", niestety... nie rozumiem jak :/ ja np zrobiłbym tablice [3][3] a tu jest jedno wymiarowa, dla cyfry 3 i 6 program przenosi sie do nastepnej lini, dzieje sie tak z pewnościa przez (i % 3)... jeśli ktoś mógł by mi to "łopatologicznie" wytłumaczyc, jak to się dzieje.. bede wdzięczny :)
Pozdrawiam
void plansza( char t[] ) { for( int i = 1; i <= 9; i++ ) { cout << " " << t[ i ] << " "; if( i % 3 ) cout << "|"; else if( i != 9 ) cout << "\n---+---+---\n"; else cout << endl; } }
|
|
DejaVu |
» 2012-04-23 14:37:20 W uproszczeniu:
1. Wypisz liczbę.
2. Jeżeli licznik nie jest podzielny przez 3 to rysuj pionową kreskę.
3. Jeżeli licznik jest podzielny przez 3 to przejdź do nowej linii.
4. Jeżeli jest podzielne przez 3 to przejdź do nowej linii.
Reasumując: Kurs C++
PS. Ten kod da się dużo prościej napisać :P nawet na tej jednej tablicy :) |
|
Zenjubo Temat założony przez niniejszego użytkownika |
» 2012-04-23 16:15:54 Dziekuje za szybka odp, mam jednak jeszcze watpliwosci...
jak dla mnie:
1. Wypisz liczbę.
2. Jeżeli licznik nie jest podzielny przez 3 to rysuj pionową kreskę.
3. Jeżeli licznik jest podzielny przez 3 to...i tu mam problem.. bo jest warunek else if( i != 9 )i tu liczba jes np rozna od 9 to powinien narysowac \n---+---+---\n"; a w przeciwnym wypadku dopiero przejsc do nowej lini :/ pewnie to banalne.... dzieki
|
|
DejaVu |
» 2012-04-23 16:18:08 To samo zapisane inaczej (czytelniej):
if( i % 3 != 0 ) { cout << "|"; } else { if( i != 9 ) { cout << "\n---+---+---\n"; } else { cout << endl; } }
|
|
Zenjubo Temat założony przez niniejszego użytkownika |
» 2012-04-23 16:30:40 To rozumiem, tylko ze jeśli program przejdzie do tego if( i != 9 ) { cout << "\n---+---+---\n"; } i np 3 jest rozne to wykona sie to cout << "\n---+---+---\n";, i jak dla mnie nie powinno sie wtedy wykonac to bo if zostal spelniony... wiec dlaczego przechodzi do else? |
|
DejaVu |
» 2012-04-23 16:35:07 |
|
corthell |
» 2013-04-10 09:25:27 Witam.
Podepnę się pod temat, ponieważ też pracuję nad grą kółko i krzyżyk, jednak w trochę rozszerzonej wersji.
Jest to wersja z planszą 10x10 a wygrywa gracz, który jako pierwszy zdobędzie 4 pola (poziom, pion i skos). Problem mój polega na tym, że nie mam pomysłu jak zrobić funkcję sprawdzającą fakt, że dany gracz zajął 4 sąsiadujące pola ;/ W wersji 3x3 (standart) poszdłem trochę na piechotę i napisałem dwie funkcje, które za każdym razem sprawdzały wszystkie kombinacje (3 poziom, 3 pion i 2 skos) dla danego gracza. Jeśli któraś z 8 kombinacji nie była spełniona to gramy dalej :). Jednak w rozszerzonej wersji, z moich obliczeń wynika, że takich kombinacji jest aż 218! więc to chyba trochę za dużo, żeby co kolejkę komputer wykonywał tyle sprawdzeń, mam rację? :) Proszę o jakąś podpowiedź lub nakierowanie mnie, bo patrząc na to, iż początkujący ze mnie programista trochę ciężko będzie mi wymyśleć coś lepszego i szybszego. Proszę o pomoc.
Pozdrawiam. |
|
usmiech |
» 2013-04-11 03:33:42 Zastosuj: // bool TicTacToe::searchLine(const int &x, const int &y, const int &xAdd, const int &yAdd, const int &howManyToWin, const int //&playerPiece)
Ale nie jest to proste.... Pozdrawiam :)
ps Nie wiem jak to robisz, ale w tym przypadku gra ta napisana jest z class TicTacToe, stad // bool TicTacToe:: |
|
« 1 » 2 |