Zmienna Enum jako argument kończący pętlę do...while
Ostatnio zmodyfikowano 2014-03-19 19:42
Noweli Temat założony przez niniejszego użytkownika |
Zmienna Enum jako argument kończący pętlę do...while » 2014-03-19 19:17:13 Witam. Postanowiłem że wraz ze swoim jak na razie ubogim zasobem wiedzy o C++ napiszę prymitywną wersję gry KÓŁKO I KRZYŻYK. Mój problem dotyczy zmiennej Enum. Otóż gdy zostanie spełniony warunek IF'a który następnie za pomącą return zwraca wartość GL_WIN do zmiennej GameS to takowa wartość nijak wpływa na pętlę do...while, która zgodnie z moimi oczekiwaniami powinna zakończyć zapętlanie. Head.cpp: int main() { GSTATE GameS = GS_GAMEON; do { GameS = CheckGameState( GameMap ); } while( GameS != GS_WIN || GameS != GS_DRAW ); } Functions.h: enum GSTATE { GS_WIN, GS_DRAW, GS_GAMEON }; GSTATE CheckGameState( char( & gmap )[ 3 ][ 3 ] ) { int hcounter = 0; int ucounter = 0; for( int i = 0; i < 3; i++ ) { for( int j = 0; j < 3; j++ ) { if( gmap[ i ][ j ] == 'x' || gmap[ i ][ j ] == 'o' ) hcounter++; } if( hcounter == 3 ) return GS_WIN; else hcounter = 0; } if( ucounter == 3 ) return GS_WIN; else ucounter = 0; }
|
|
alixir |
» 2014-03-19 19:42:27 Problemem nie jest wartość enum, a warunek while( GameS != GS_WIN || GameS != GS_DRAW ); Jeśli GameS=GS_WIN, to druga część warunku jest prawdziwa, a tym samym cały warunek jest prawdziwy, i pętla się nie kończy. Możesz zmienić go na: while( !( GameS == GS_WIN || GameS == GS_DRAW ) ); |
|
« 1 » |