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

Przesuwanie warcabów przez AL

Ostatnio zmodyfikowano 2014-01-28 09:42
Autor Wiadomość
AssSoft
Temat założony przez niniejszego użytkownika
Przesuwanie warcabów przez AL
» 2014-01-28 09:42:06
(UWAGA! temat może być powtórką, natrafiłem na błąd przy wysyłaniu pierwszej wersji posta. Możliwe że stary post został wysłany z opóźnieniem)
Natrafiłem na dość spory problem przy pisaniu prostych warcabów. AL nie chce przesuwać pionków, funkcja zwraca true mimo, że nic się nie dzieje.
wszystkie define:
C/C++
#define PixTo 30 // liczba pixeli między ramką szachownicy a jej używaną częścią
#define empty 101 // pole puste
#define black 102 // pionek czarny
#define white 103 // pionek biały
#define nouse 104 // nieużywany
#define setit 105 // wybrano
#define set 1 // wybieranie
#define gotoit 0 // przesuwanie
// ID przycisków:
#define ID_sp1 1001

obsługa WM_PAINT, odpowiada również za rysowanie wszystkich pionków przesuniętych przez AL:
C/C++
case WM_PAINT:
paint:;
PAINTSTRUCT ps; // deklaracja struktury
hdc = BeginPaint( hwnd, & ps );
// pokazywanie szachownicy
hbmObraz =( HBITMAP ) LoadImage( NULL, "C:/programs/Cszachy/DATA/szachownica.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
hbmOld =( HBITMAP ) SelectObject( hdcNowy, hbmObraz );
GetObject( hmbObraz, sizeof( bmInfo ), & bmInfo );
SelectObject( hdcNowy, hbmOld );
BitBlt( hdc, 100, 100, bmInfo.bmWidth, bmInfo.bmHeight, hdcNowy, 0, 0, SRCCOPY );
// pokazywanie pionków:
i = 0;
ii = 0;
liczpw = 0;
liczpb = 0;
while( i < 8 )
{
    while( ii < 8 )
    {
        if( szachownica[ i ][ ii ] == white )
        {
            oldP =( HPEN ) SelectObject( hdc, blackP );
            oldB =( HBRUSH ) SelectObject( hdc, whiteB );
            Ellipse( hdc,( Sp[ i ][ ii ].Xpoz - 3 ) + 6,( Sp[ i ][ ii ].Ypoz - 3 ) + 10, Sp[ i ][ ii ].Xpoz + 80, Sp[ i ][ ii ].Ypoz + 80 );
            oldP =( HPEN ) SelectObject( hdc, blackP );
            oldB =( HBRUSH ) SelectObject( hdc, whiteB );
            Pw[ liczpw ].use = true;
            Pw[ liczpw ].Xpoz = i;
            Pw[ liczpw ].Ypoz = ii;
            liczpw++;
        }
        if( szachownica[ i ][ ii ] == black )
        {
            oldP =( HPEN ) SelectObject( hdc, whiteP );
            oldB =( HBRUSH ) SelectObject( hdc, blackB );
            Ellipse( hdc,( Sp[ i ][ ii ].Xpoz - 3 ) + 6,( Sp[ i ][ ii ].Ypoz - 3 ) + 10, Sp[ i ][ ii ].Xpoz + 80, Sp[ i ][ ii ].Ypoz + 80 );
            oldP =( HPEN ) SelectObject( hdc, blackP );
            oldB =( HBRUSH ) SelectObject( hdc, whiteB );
            Pb[ liczpb ].use = true;
            Pb[ liczpb ].Xpoz = i;
            Pb[ liczpb ].Ypoz = ii;
            liczpb++;
        }
        if( szachownica[ i ][ ii ] == empty && Sp[ i ][ ii ].use == true )
        {
            oldP =( HPEN ) SelectObject( hdc, blackP );
            oldB =( HBRUSH ) SelectObject( hdc, blackB );
            Ellipse( hdc,( Sp[ i ][ ii ].Xpoz - 3 ) + 6,( Sp[ i ][ ii ].Ypoz - 3 ) + 10, Sp[ i ][ ii ].Xpoz + 80, Sp[ i ][ ii ].Ypoz + 80 );
            oldP =( HPEN ) SelectObject( hdc, blackP );
            oldB =( HBRUSH ) SelectObject( hdc, whiteB );
        }
        ii++;
    }
    ii = 0;
    i++;
}
EndPaint( hwnd, & ps ); // zwalniamy hdc
break;

kod AL:
C/C++
bool AL()
{
    i = 0;
    ii = 0;
    int x = 0;
    int y = 0;
    int iii = 0;
    int iiii = 0;
    while( i < 8 )
    {
        while( ii < 8 )
        {
            if( szachownica[ i ][ ii ] == black )
            {
                x = i - 2;
                y = ii;
                if( szachownica[ x ][ y ] == white )
                {
                    AC[ iii ].Xpoz = i;
                    AC[ iii ].Ypoz = ii;
                    AC[ iii ].XEpoz = x;
                    AC[ iii ].YEpoz = y;
                    AC[ iii ].use = true;
                    iii++;
                    Ali++;
                }
                x = i;
                y = ii - 2;
                if( szachownica[ x ][ y ] == white )
                {
                    AC[ iii ].Xpoz = i;
                    AC[ iii ].Ypoz = ii;
                    AC[ iii ].XEpoz = x;
                    AC[ iii ].YEpoz = y;
                    AC[ iii ].use = true;
                    iii++;
                    Ali++;
                }
                x = i;
                y = ii + 2;
                if( szachownica[ x ][ y ] == white )
                {
                    AC[ iii ].Xpoz = i;
                    AC[ iii ].Ypoz = ii;
                    AC[ iii ].XEpoz = x;
                    AC[ iii ].YEpoz = y;
                    AC[ iii ].use = true;
                    iii++;
                    Ali++;
                }
                x = i - 1;
                y = ii - 1;
                if( szachownica[ x ][ y ] == white )
                {
                    AC[ iii ].Xpoz = i;
                    AC[ iii ].Ypoz = ii;
                    AC[ iii ].XEpoz = x;
                    AC[ iii ].YEpoz = y;
                    AC[ iii ].use = true;
                    iii++;
                    Ali++;
                }
                x = i;
                y = ii;
            }
            ii++;
        }
        ii = 0;
        i++;
    }
    i = 0;
    ii = AC[ Ali ].XEpoz - 2;
    iii = AC[ Ali ].YEpoz;
    iiii = ii - 1;
    bool move = 0;
    while( i < Ali )
    {
        if( szachownica[ ii ][ iii ] == white && szachownica[ iiii ][ iii ] == empty )
        {
            AC[ i ].ATmod = 10;
            szachownica[ AC[ i ].XEpoz ][ AC[ i ].YEpoz ] = empty;
            szachownica[ iiii ][ iii ] = black;
            move = true;
        }
        if( move == true )
        {
            goto end;
        }
        ii = AC[ i ].XEpoz;
        iii = AC[ i ].YEpoz - 2;
        iiii = iii - 2;
        if( szachownica[ ii ][ iii ] == white && szachownica[ iiii ][ iii ] == empty )
        {
            AC[ Ali ].ATmod = 10;
            szachownica[ AC[ i ].XEpoz ][ AC[ i ].YEpoz ] = empty;
            szachownica[ iiii ][ iii ] = black;
            move = true;
        }
        if( move == true )
        {
            goto end;
        }
        ii = AC[ i ].XEpoz - 1;
        iii = AC[ i ].YEpoz - 1;
        iiii = ii - 2;
        int iiiii = iii - 1;
        if( szachownica[ ii ][ iii ] == white && szachownica[ iiii ][ iiiii ] == empty )
        {
            AC[ Ali ].ATmod = 10;
            szachownica[ AC[ i ].XEpoz ][ AC[ i ].YEpoz ] = empty;
            szachownica[ iiii ][ iiiii ] = black;
            move = true;
        }
        if( move == true )
        {
            goto end;
        }
        i++;
    }
    end:;
    if( move == false )
    {
        i = 0;
        ii = 0;
        while( i < 8 )
        {
            while( ii < 8 )
            {
                if( szachownica[ i ][ ii ] == black && Sp[ i ][ ii ].use == true )
                {
                    x = i - 4;
                    y = i - 2;
                   
                    if( szachownica[ x ][ ii ] == empty && szachownica[ y ][ ii ] == empty )
                    {
                        szachownica[ i ][ ii ] = empty;
                        szachownica[ x ][ ii ] = black;
                        i = 8;
                        ii = 8;
                        move = true;
                    }
                }
                ii++;
            }
            ii = 0;
            i++;
        }
    }
    i = 0;
    ii = 0;
    iii = 0;
    iiii = 0;
    return move;
}
jeśli to nie wystarczy podam resztę kodu programu
P-103390
« 1 »
  Strona 1 z 1