[C++] Pętla Do While kończy się niespodziewanie - prosze o pomoc z warunkiem petli
Ostatnio zmodyfikowano 2015-12-01 13:59
gz08 Temat założony przez niniejszego użytkownika |
[C++] Pętla Do While kończy się niespodziewanie - prosze o pomoc z warunkiem petli » 2015-11-27 17:56:39 Otóż chciałem napisać prosta grę będącą cyfrowym "odpowiednikiem" gry "Kółko i krzyżyk". Niestety ze względu na moją nikłą wiedze informatyczną wyszedł mi z tego potwór mający prawie 400 linijek :-). Ale nie to jest problemem: pętla do while, odpowiedzialna za zakończenie programu po wygranie jednego z graczy, kończy się niespodziewanie tzn.: zaraz po dowolnym ruchu drugiego gracza. Gracza nr. 1 tj.: odpowiednik krzyżyka jest przedstawiany jako "1", a gracz nr. 2 - jako "2". Pola są ponumerowane w taki sposób: 1 | 2 | 3 -------------- 4 | 5 | 6 -------------- 7 | 8 | 9 Tyle słowem wstępu - proszę o pomoc w odpowiednim sformułowaniu warunku pętli do while Oto kod (a dokładniej fragment wraz z argumentem pętli do while: while((( pole1 != 1 && pole2 != 1 && pole3 != 1 ) &&( pole1 != 1 && pole5 != 1 && pole9 != 1 ) &&( pole1 != 1 && pole4 != 1 && pole7 != 1 ) &&( pole2 != 1 && pole5 != 1 && pole8 != 1 ) &&( pole3 != 1 && pole5 != 1 && pole7 != 1 ) &&( pole3 != 1 && pole6 != 1 && pole9 != 1 ) &&( pole4 != 1 && pole5 != 1 && pole6 != 1 ) &&( pole7 != 1 && pole8 != 1 && pole9 != 1 ) ) &&(( pole1 != 2 && pole2 != 2 && pole3 != 2 ) &&( pole1 != 2 && pole5 != 2 && pole9 != 2 ) &&( pole1 != 2 && pole4 != 2 && pole7 != 2 ) &&( pole2 != 2 && pole5 != 2 && pole8 != 2 ) &&( pole3 != 2 && pole5 != 2 && pole7 != 2 ) &&( pole3 != 2 && pole6 != 2 && pole9 != 2 ) &&( pole4 != 2 && pole5 != 2 && pole6 != 2 ) &&( pole7 != 2 && pole8 != 2 && pole9 != 2 ) ) ); Z góry dziękuje za pomoc. Pozdrawiam, gz08 |
|
carlosmay |
» 2015-11-27 18:26:59 Warunek sugeruje, że wszystkie pola muszą być wypełnione tymi samymi znakami. Nie mogą być wszystkie '&&'. Pętla ma się wykonywać jeśli trzy pionowo lub kolejne trzy pionowo lub kolejne trzy poziomo lub kolejne trzy na ukos itd. Wiesz, że warunek można łamać na kilka linii? |
|
gz08 Temat założony przez niniejszego użytkownika |
» 2015-11-27 18:34:33 Jak zapisać taki łamany argument? |
|
gz08 Temat założony przez niniejszego użytkownika |
» 2015-11-27 18:45:21 O łamanym argumencie dowiedziałem się sam :-) Proszę o pomoc z głównym problemem tematu. |
|
carlosmay |
» 2015-11-27 19:09:15 Pętla ma się wykonywać jeśli trzy pionowo lub kolejne trzy pionowo lub kolejne trzy poziomo lub kolejne trzy na ukos itd. |
Przecież to jest wskazówka. Wystarczy przełożyć to na kod. Musisz jeszcze trochę pomyśleć. Na gotowca za wcześnie. |
|
gz08 Temat założony przez niniejszego użytkownika |
» 2015-11-27 19:15:07 O racja :-D . Nie zauważyłem, że kolega napisał mi pseudokod / zdanie logiczne, które opisuje dokładnie to co chce zrobić. |
|
gz08 Temat założony przez niniejszego użytkownika |
» 2015-11-27 19:33:36 Wymyśliłem coś takiego: do ... while(( pole1 && pole2 && pole3 ) ||( pole1 && pole4 && pole7 ) ||( pole1 && pole5 && pole9 ) ||( pole2 && pole5 && pole8 ) ||( pole3 && pole5 && pole7 ) ||( pole3 && pole6 && pole9 ) ||( pole4 && pole5 && pole6 ) ||( pole7 && pole8 && pole9 ) == 0 ); Niestety nie działa - pętla tym razem nie kończy się nigdy |
|
carlosmay |
» 2015-11-27 20:07:56 Daj rzucić okiem na kod. |
|
« 1 » 2 3 |