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

[SFML] Jak sprawdzić czy pola są obok siebie ?

Ostatnio zmodyfikowano 2013-08-10 17:37
Autor Wiadomość
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ć -
C/C++
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;
}
C/C++
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
C/C++
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:
        {
            // sprawdzanie krzyzyka
            kr++; // za każdym razem kiedy pętla się wykonuje zwiększa się licznik DLA KRZYŻYKA
            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 :)
P-89803
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.
P-89804
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:
C/C++
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ł.
P-89815
kubawal
» 2013-08-09 17:15:29
C/C++
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.
P-89819
domin568
Temat założony przez niniejszego użytkownika
» 2013-08-09 19:48:01
Dlaczego się nie wykona ?
P-89839
MrPoxipol
» 2013-08-09 19:53:33
Bo wychodzisz z funkcji..
P-89840
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
P-89841
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 ?
P-89843
« 1 » 2 3
  Strona 1 z 3 Następna strona