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

[Allegro] Problem ze zmianą predkosci programu.

Ostatnio zmodyfikowano 2010-01-22 18:27
Autor Wiadomość
maniek099
Temat założony przez niniejszego użytkownika
[Allegro] Problem ze zmianą predkosci programu.
» 2010-01-18 19:50:58
Powitać. Otóż postanowiłem napisać gierkę taką, że widać z góry samochód i ruszamy się nim tylko w lewo i prawo, jedziemy pod prąd no i zderzamy się ze samochodami (pełno takich). Problem polega na tym, że nie chce by cały czas wszystko poruszało się z jedną prędkością i tu właśnie nie wiem jak zastosować timer. Próbowałem bez tych timerów, tylko z rest, że gdy wcisnę strzałkę w dół to zmienna++; i po tem rest(zmienna); lecz gdy zmienna=1, czyli rest(1), to program strasznie wolno już chodzi (jak na grę, ze samochodami to za wolno). Oto mój kawałek kodu (wszystkie funkcje identyczne jak w kursie):

C/C++
init();

install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) );

BITMAP * jaguar = NULL;
BITMAP * bufor = NULL;

bufor = create_bitmap( 800, 600 );
if( !bufor )
{
    set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
    allegro_message( "nie mogę załadować bufora!" );
    allegro_exit();
    return 0;
}

jaguar = load_bmp( "jaguar.bmp", default_palette );

int obraz_x = 40, obraz_y = 400;
double predkosc = 1;
int pixel_y = 0;


while( !key[ KEY_ESC ] )
{
   
   
    rectfill( bufor, 400, pixel_y, 410, pixel_y + 50, makecol( 128, 30, 30 ) );
    masked_blit( jaguar, bufor, 0, 0, obraz_x, obraz_y, jaguar->w, jaguar->h );
    textprintf_ex( bufor, font, 20, 20, makecol( 200, 200, 200 ), - 1, "Predkosc = 
    % d !",predkosc);
   
    blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
    clear_to_color( bufor, makecol( 0, 255, 0 ) );
   
   
   
    pixel_y++;
   
    if( pixel_y == 550 )
         pixel_y = 0;
   
   
    while( speed > 0 )
    {
        if( key[ KEY_DOWN ] ) predkosc += 1;
       
        if( key[ KEY_UP ] ) predkosc -= 1;
       
        if( predkosc < 0 ) predkosc = 0;
       
        if( predkosc > 95 ) predkosc = 95;
       
        speed--;
    }
   
    if( key[ KEY_LEFT ] ) obraz_x--;
   
    if( key[ KEY_RIGHT ] ) obraz_x++;
   
   
    rest( predkosc );
   
}

remove_int( increment_speed );
P-13128
malan
» 2010-01-18 20:26:02
easykoder w jednym ze swoich artów zastosował prędkość. Pobierz kod i przeanalizuj jak on to zrobił: http://www.easykoder.vot.pl/get/artykulyallegro/samochodzik.rar.
P-13130
maniek099
Temat założony przez niniejszego użytkownika
» 2010-01-22 18:27:08
Dzięki wielkie, troszkę inaczej zrobiłem niż w tym programie ale bardzo pomogło:)
P-13214
« 1 »
  Strona 1 z 1