[c++] Warunki logiczne && oraz || nie działają mi w VS 2015
Ostatnio zmodyfikowano 2016-05-02 02:30
Przemek1980 Temat założony przez niniejszego użytkownika |
[c++] Warunki logiczne && oraz || nie działają mi w VS 2015 » 2016-05-02 02:30:38 Witam !!! Na wstępie pragnę nadmienić że dopiero zaczynam przygodę z C++, robię sobie grzecznie kurs i nagle natrafiam na problem typu : przepisuję kod znak w znak z ekranu (kurs wideo) i działa on inaczej niż powinien. aplikacja to prosta gra w kółko i krzyżyk. Problem pojawia się przy sprawdzeniu czy ktoś już wygrał. Funkcja która powinna pokazać meesageboxa po wygranej pokazuje go po pierwszym kliknięciu w cokolwiek. Tutaj kod odpowiedzialny za 'problem' niema żadnego problemu z kodem jak wyremuje sprawdzanie warunków. sprawdziałem też 3 razy nazwy pictureboxow bool wygrana = false; bool wcisniety = true;
.....
private: System::Void graj( System::Object ^ sender, System::EventArgs ^ e ) { PictureBox ^ zdjecie =( PictureBox ^ ) sender; if( wcisniety ) { zdjecie->Image = imageList1->Images[ 1 ]; zdjecie->Tag = "X"; } else { zdjecie->Image = imageList1->Images[ 0 ]; zdjecie->Tag = "O"; } wcisniety = !wcisniety; zdjecie->Enabled = false; wynik(); }
private: Void wynik() { if(( a1->Tag == b1->Tag ) &&( b1->Tag == c1->Tag ) &&( a1->Tag != '?' ) ) wygrana = true; if(( a2->Tag == b2->Tag ) &&( b2->Tag == c2->Tag ) &&( a2->Tag != '?' ) ) wygrana = true; if(( a3->Tag == b3->Tag ) &&( b3->Tag == c3->Tag ) &&( a3->Tag != '?' ) ) wygrana = true; if(( a1->Tag == a2->Tag ) &&( a2->Tag == a3->Tag ) &&( a1->Tag != '?' ) ) wygrana = true; if(( b1->Tag == b2->Tag ) &&( b2->Tag == b3->Tag ) &&( b1->Tag != '?' ) ) wygrana = true; if(( c1->Tag == c2->Tag ) &&( c2->Tag == c3->Tag ) &&( c1->Tag != '?' ) ) wygrana = true; if(( a1->Tag == b2->Tag ) &&( b2->Tag == c3->Tag ) &&( a1->Tag != '?' ) ) wygrana = true; if(( c1->Tag == b2->Tag ) &&( b2->Tag == a3->Tag ) &&( c1->Tag != '?' ) ) wygrana = true; if( wygrana ) { MessageBox::Show( "wygrana", L"Kółko i Krzyżyk", MessageBoxButtons::OK, MessageBoxIcon::Asterisk ); } }
w skrócie ABC to kolumny 123 to wiersze mam wiec 9 picture boxów które po kliknięciu są tagowane X lub O. przed kliknięciem posiadają Tag='?' według mnie powinno działać na kursie działa ale tam jest VS2013 ja mam VS2015. Gdy kompiluje source z kursu VS piszczy ze musi cos pozmieniac ze względu na zgodnosc i wtedy...... to działa... a jak mam krok w krok to samo wklepane w vs2015 to pokazuje mi message boxa po kliknięci w dowolny picturebox tak jakby ignorował całkowicie warunek && a raczej traktował go jak ||. zamkniece messageboxa i ponowne kliknięcie znowu wywołuyje wiadomosc o wygranej. z góry dziękuję za pomoc EDIT !!!!!!!!!!!!!!!! no i po problemie :) z góry przepraszam za zamęt. Błąd leżał po mojej stronie -> użyłem błędnie apostrofu zamiast cudzysłowa w miejscu (c1->Tag != '?') kompilator nie wywalał błędu ale warunek był spełniany po kliknięciu w cokolwiek. Pozdrawiam |
|
« 1 » |