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

[Allegro] Pocisk nie chce lecieć cały czas

Ostatnio zmodyfikowano 2008-10-05 18:44
Autor Wiadomość
lynx
» 2008-10-03 20:27:39
O nie... formułuj precyzyjniej pytania, bo po co ja to mam pisać?


Funkcja rest(liczba); zatrzymuje program na określoną liczbę milisekund. Co zresztą też chyba gdzieś w tutku pisało. Po za tym masz już w kodzie timer, to tylko zmniejsz jego wartość i program będzie działał wolniej.

/edit:
Funkcja install_int_ex(increment_speed, BPS_TO_TIMER(100)); jest odpowiedzialna za szybkość obrotów, zmniejsz wartość BPS_TO_TIMER, i będzie chodzić wolniej.
P-1806
Tombol
Temat założony przez niniejszego użytkownika
» 2008-10-03 20:32:24
Ok dokładnie chodzi mi o coś takiego


for(int i; i > 300; i++, rest(1))
pocisk--;


Ale coś takiego nie działa :/
Popróbuje z tymi timerami
P-1807
DejaVu
» 2008-10-03 20:45:14
To zobacz gdzie wstawiasz wywołanie funkcji rest(), a gdzie jest nawias kończący pętlę while.
P-1811
Tombol
Temat założony przez niniejszego użytkownika
» 2008-10-03 21:12:26
chyba chodzi Ci o pętle for a nie while ?
No chyba że to te while  while( !key[KEY_ESC])



edit;
Kurde kombinuje jak koń pod górę a nadal mi nie wychodzi
zrobiłem monstrualną pętle po to żeby zwolnić pętle która robi że pocisk leci niestety pocisk stoi ja już serio nie wiem co mam robić :/
Od 2 dni już się z tym bawię i nadal nie wiem :/
P-1812
DejaVu
» 2008-10-03 22:36:39
Zasadniczo kod który wkleiłeś się nie kompiluje, więc rozwodzenie się o tym czemu Ci nie działa coś o czym piszesz nie jest obecnie tematem do dyskusji. W kodzie masz nieprawidłową ilość nawiasów klamrowych zamykających (o 1 za dużą). Jak zrobisz, żeby kod się kompilował możemy rozwiązywać Twój problem (inna sprawą jest, że miejsce błędu już Ci podałem, czyli zasięg pętli while).
P-1819
Tombol
Temat założony przez niniejszego użytkownika
» 2008-10-04 07:35:40
Dziwne bo mi się kompiluje :p
Ale teraz podam kod na którym obecnie działam

C/C++
/////////////////////////////////////////////////////BZDETY//////////////////////////////////////////////
#include <allegro.h>

volatile long speed = 0;
void increment_speed()
{
    speed++;
}
END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );
///////////////////////////////////DEKLARACJE ZMIENNYCH//////////////////////////////////////////////
int statek_x = 500, statek_y = 440;
int pocisk_x = statek_x, pocisk_y = 440;
int pocisk_ruch;
//////////////////////////////////DEKLARACJE FUNKCJI////////////////////////////////////////////////////
bool kolizja( void )
{
    if( statek_x > 590 )
         return true;
   
    if( statek_x < 10 )
         return false;
   
}
////////////////////////////////////////////////MAIN///////////////////////////////////////////////////////
int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 32 );
    set_gfx_mode( GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0 );
    clear_to_color( screen, makecol( 0, 0, 0 ) );
    install_timer();
    install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) );
   
    BITMAP * statek = NULL;
    BITMAP * pocisk = NULL;
    BITMAP * bufor = NULL;
    ////////////////////////////////////////////////BUFORY I OBRAZKI///////////////////////////////////////////////////////////
    bufor = create_bitmap( 640, 480 );
    if( !bufor )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie mogę utworzyć bufora  !" );
        allegro_exit();
        return 0;
    }
   
    statek = load_bmp( "statek.bmp", default_palette );
    if( !statek )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka statek!" );
        allegro_exit();
        return 0;
    }
   
    pocisk = load_bmp( "pocisk.bmp", default_palette );
    if( !pocisk )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka pocisk!" );
        allegro_exit();
        return 0;
    }
    /////////////////////////////////////////////////////GUZIKI////////////////////////////////////////////
    while( !key[ KEY_ESC ] )
    {
        if( key[ KEY_LEFT ] )
        {
            statek_x--;
            if( kolizja() == false )
            {
                statek_x++;
            }
        }
        if( key[ KEY_RIGHT ] )
        {
            statek_x++;
            if( kolizja() == true )
            {
                statek_x--;
            }
        }
        if( key[ KEY_SPACE ] )
        {
           
        }
        //clear_to_color(screen, makecol(0,0,0));
        //rest(10);
        /////////////////////////////////////////////////////RYSOWANIE//////////////////////////////////////////
        masked_blit( statek, bufor, 0, 0, statek_x, statek_y, statek->w, statek->h );
        masked_blit( pocisk, bufor, 0, 0, pocisk_x, pocisk_y, pocisk->w, pocisk->h );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
    }
    /////////////////////////////////////////////////CZYSZCZENIE//////////////////////////////////////////
    remove_int( increment_speed );
    destroy_bitmap( statek );
    destroy_bitmap( pocisk );
    destroy_bitmap( bufor );
    allegro_exit();
    return 0;
}
END_OF_MAIN();
P-1821
DejaVu
» 2008-10-04 12:50:45
No dobra, ten się kompiluje. Teraz powiedz mi: czego nie rozumiesz w kodzie do którego podałem Ci linka na samym początku?
C/C++
if( nacisnieto_esc == true )
{
    pokaz_pocisk = true;
    pocisk_pozycja_x = 40;
    pocisk_ruch_x = 3;
}
pocisk_pozycja_x += pocisk_ruch_x;
if( pocisk_pozycja_x >= 800 ) pokaz_pocisk = false;

if( pokaz_pocisk == true )
{
    //sprawdzanie czy pocisk w coś trafił itp.
   
    //wyświetlanie pocisku
}
W powyższym kodzie masz zawarte przecież rozwiązanie, a obecnie jesteśmy już 10 postów dalej i twierdzisz, że problem nie został rozwiązany pomimo, że dostałeś rozwiązanie.
P-1824
Tombol
Temat założony przez niniejszego użytkownika
» 2008-10-04 16:21:37
Chodzi mi o to co dana funkcja oznacza bo jak napisze taki kod jak podałeś to przecież nie zadziała :P
np rysujpocisk albo pocishruch to co te funkcje oznaczają ?
P-1825
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona