Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Pętla Do While kończy się niespodziewanie - prosze o pomoc z warunkiem petli

Ostatnio zmodyfikowano 2015-12-01 13:59
Autor Wiadomość
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
P-140919
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?
P-140922
gz08
Temat założony przez niniejszego użytkownika
» 2015-11-27 18:34:33
Jak zapisać taki łamany argument?
P-140923
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.
P-140924
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.
P-140927
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ć.
P-140932
gz08
Temat założony przez niniejszego użytkownika
» 2015-11-27 19:33:36
Wymyśliłem coś takiego:
C/C++
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
P-140936
carlosmay
» 2015-11-27 20:07:56
Daj rzucić okiem na kod.
P-140942
« 1 » 2 3
  Strona 1 z 3 Następna strona