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: #define PixTo 30 #define empty 101 #define black 102 #define white 103 #define nouse 104 #define setit 105 #define set 1 #define gotoit 0
#define ID_sp1 1001 obsługa WM_PAINT, odpowiada również za rysowanie wszystkich pionków przesuniętych przez AL: case WM_PAINT: paint:; PAINTSTRUCT ps; hdc = BeginPaint( hwnd, & ps );
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 );
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 ); break; kod AL: 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 |