tolek Temat założony przez niniejszego użytkownika |
» 2015-10-27 00:39:55 no to tak, podam kod mojej mapy: #define POKAZ 1 #define UKRYJ 0 #define SZER 50 #define WYS 30
void mapa( int x, int y ) { char rys[ WYS ][ SZER ] = { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, ..........................................tu jest narysowany labirynt, ucialem to..................................................... { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, }; int dl_x = 1000 / SZER; int dl_y = 600 / WYS; for( y = 0; y < WYS; y++ ) for( x = 0; x < SZER; x++ ) { if( rys[ y ][ x ] != 0 ) { setcolor( WHITE ); bar( x * dl_x, y * dl_y, x * dl_x + 20, y * dl_y + 20 ); } } } i funkcja, która miałaby odczytywać kolor(kolor ścian to biały) o 20 pikseli przed postacią (wartość przykładowa), dla postaci poruszającej się np. w prawo: case RIGHT: if( x < maxX - 285 - 5 ) x = x + 5;
if( getpixel( x + 20, y ) == WHITE ) break; Oczywiście nie działa to zgodnie z oczekiwaniami :( |