[SFML] Jak sprawdzić czy pola są obok siebie ?
Ostatnio zmodyfikowano 2013-08-10 17:37
domin568 Temat założony przez niniejszego użytkownika |
[SFML] Jak sprawdzić czy pola są obok siebie ? » 2013-08-09 15:25:10 Witam , kończę grę kółko i krzyżyk , napisałem własne sprawdzanie kto wygrał , jednak jest ono nie poprawne , próbowałem kilkoma sposobami (obmyśleć wszystkie metody i je wpisać - if(( krzyzyk[ 0 ].x == 3 || krzyzyk[ 1 ].x == 3 || krzyzyk[ 2 ].x == 3 || krzyzyk[ 3 ].x == 3 ) &&( krzyzyk[ 0 ].y == 3 || krzyzyk[ 1 ].y == 3 || krzyzyk[ 2 ].y == 3 || krzyzyk[ 3 ].y == 3 ) && ( krzyzyk[ 1 ].x == 269 || krzyzyk[ 2 ].x == 269 || krzyzyk[ 3 ].x == 269 || krzyzyk[ 4 ].x == 269 ) &&( krzyzyk[ 1 ].y == 3 || krzyzyk[ 2 ].y == 3 || krzyzyk[ 3 ].y == 3 || krzyzyk[ 4 ].y == 3 ) && ( krzyzyk[ 2 ].x == 535 || krzyzyk[ 3 ].x == 535 || krzyzyk[ 4 ].x == 535 || krzyzyk[ 5 ].x == 535 ) &&( krzyzyk[ 2 ].y == 3 || krzyzyk[ 3 ].y == 3 || krzyzyk[ 4 ].y == 3 || krzyzyk[ 5 ].y == 3 ) ) { cout << "gorny lewo prawo" << endl; }
if( krzyzyk[ kr ].x == krzyzyk[ kr - 1 ].x && krzyzyk[ kr ].x == krzyzyk[ kr - 2 ].x ) { cout << "2 SPOSÓB KR " << endl; return true; break; }
, sprawdzać czy poprzedni sprite ma taką samą wartość x , albo y ) lecz to zdało się na nic bo i tak będzie taka sytuacja w której ktoś zrobi to inaczej , tutaj mam moją funkcje sprawdzającą , oraz tablice vectotów , które przechowują pozycje kólka i krzyzyka bool Pole::sprawdzFigury( sf::Sprite * sprite, short & kogo_kolej, int i, int & kr, int & ko ) { static sf::Vector2f krzyzyk[ 5 ]; static sf::Vector2f krzyzyk[ 4 ]; cout << kogo_kolej << endl; switch( kogo_kolej ) { case 2: { kr++; krzyzyk[ kr ].x = sprite[ i ].getPosition().x; krzyzyk[ kr ].y = sprite[ i ].getPosition().y; break; } case 1: { ko++; kolko[ ko ] = sprite[ i ].getPosition(); cout << "Narysowano kolko " << endl; cout << kolko[ ko ].x << endl; cout << kolko[ ko ].y << endl; break;
Czy moglibyście mnie jakoś naprowadzić , narazie mam jeszcze siłę woli i chciałbym to napisać sam ale kompletnie nie mam pomysłu . Z góry dzięki za pomoc :) |
|
MrPoxipol |
» 2013-08-09 15:26:55 Narysuj sobie na kartce te pola i pomyśl kiedy pole a, jest koło pola b.
PS Staraj się pisać czytelniejszy kod i wstawiać komentarze. |
|
Monika90 |
» 2013-08-09 16:29:21 Nie rozumiem co ma sprawdzanie kto wygrał wspólnego z pozycjami sprite'ów na ekranie? Masz chyba tablicę ze stanem gry, coś jak: enum Field { Empty, X, O }; Field board[ 3 ][ 3 ] = { };
i sprawdzasz w tej tablicy, czy nie? PS. Istnieje dużo ciekawszy sposób sprawdzania czy i kto wygrał. |
|
kubawal |
» 2013-08-09 17:15:29 if( krzyzyk[ kr ].x == krzyzyk[ kr - 1 ].x && krzyzyk[ kr ].x == krzyzyk[ kr - 2 ].x ) { cout << "2 SPOSÓB KR " << endl; return true; break; }
|
Instrukcja break się nie wykona. |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2013-08-09 19:48:01 Dlaczego się nie wykona ? |
|
MrPoxipol |
» 2013-08-09 19:53:33 Bo wychodzisz z funkcji.. |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2013-08-09 19:57:03 a no tak :) , to break zostało jeszcze po tym jak nic nie zwracałem |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2013-08-09 20:10:09 @Monika90 Nie wykorzystuje enum przy moim projekcie , mam również tablice jednowymiarową , o jaki sposób Ci chodzi ? |
|
« 1 » 2 3 |