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

[Allegro] Wiele tych samych obrazków oraz przemieszczanie obrazka

Ostatnio zmodyfikowano 2012-10-09 18:25
Autor Wiadomość
wisien92
Temat założony przez niniejszego użytkownika
[Allegro] Wiele tych samych obrazków oraz przemieszczanie obrazka
» 2012-10-06 20:28:27
Witam, jestem zupełnie początkującym programistą i zacząłem swoją zabawe z biblioteką allegro w celu stworzenia prostej gry aby poznać oraz nauczyć się operować na tej bibliotece. Moim celem jest zrobienie prostej gry 2d w ktorej kierujemy czołgiem oraz strzelamy. Poruszanie się czołgu juz zaimplementowałem oraz gdy wciśniemy spacje pojawia się pocisk(narazie sam obrazek-kolizjami zajmę się później) przed lufą.

I tutaj mam prośbę aby ktoś mi pomógł aby ten pocisk zaczął się przemieszczać. Mysłałem nad użyciem jakiejść pętli, która by zwiększała punkt X bądź Y obrazka ... ale niestety gdy implementowałem to pocisk odrazu pojawiał się w odległości od lufy(nie było momentów przejściowych). W późniejszym etapie planuje sprawić, że gdy pocisk dotknie ściany bądź przeciwnika zniknie(kolizje pojazdu oraz ściany już zaimplementowałem).

Kolejnym pytaniem jest jak sprawić aby tych pocisków w tym samym momencie było kilka na ekranie?

Z góry dziękuje za pomoc.
Pozdrawiam
P-66211
SeaMonster131
» 2012-10-06 20:29:52
Co do nieograniczonej liczby pocisków, możesz użyć np: » standard C++vector.

//
która by zwiększała punkt X bądź Y obrazka ... ale niestety gdy implementowałem to pocisk odrazu pojawiał się w odległości od lufy(nie było momentów przejściowych)
Hm..
C/C++
pociskX += cos( angle );
pociskY += sin( angle );

Gdzie angle to kąt lufy.
P-66213
wisien92
Temat założony przez niniejszego użytkownika
» 2012-10-06 20:44:00
Ten kod odpowiada za wyświetlanie pocisku obok lufy

if( face == 3)//face mówi w którą strone zwrócony jest gracz
{
bullet_x = player_x+25;
bullet_y = player_y-19;
bullet = load_bmp("pociskhorizontal.bmp",default_palette);
}

i teraz czy  pętlą for(warunki)bullet_y--; i jeszcze wyświetlenie obrazka czy to da mi efekt "lecenia" pocisku? (bo mi nie wychodzi ;p)
             
P-66216
SeaMonster131
» 2012-10-06 20:49:34
To wygląda bardziej np tak:
C/C++
if( face == 3 && wystrzeleniePocisku )
{
    pociskX = czolgX;
    pociskY = czolgY;
    pociskKierunek = 3;
    pociskLeci = true;
}

if( pociskLeci )
{
    ..
    if( pociskKierunek == 3 )
    {
        pociskX++;
    }
   
    if( kolizja )
         pociskLeci = false;
   
}
To jest taka wersja dla jednego pocisku, gdzie powinieneś zrozumieć ogólny zamysł jak to działa :)
P-66217
wisien92
Temat założony przez niniejszego użytkownika
» 2012-10-06 20:52:50
rozumiem że tam gdzie są kropki to warunki if dla innych kierunków, jeżeli tak to zamysł mniej wiecej zrozumiałem to teraz sobie pokombinuje :D dzięki za pomoc


zwraca mi błąd że true jest niezadeklarowane .... mam jakiś nagłówek specjalny dla true wrzucić czy zdefiniować w jakiś sposób?



działa i śmiga aż miło :D teraz tylko pytanie jak sprawić aby takich pocisków mogło być kilka naraz ... ? :D
P-66218
SeaMonster131
» 2012-10-06 23:44:21
Napisałem, że możesz użyć na przykład » standard C++vector
P-66244
wisien92
Temat założony przez niniejszego użytkownika
» 2012-10-07 15:39:55
a sorka jakoś to przeoczyłem
P-66308
wisien92
Temat założony przez niniejszego użytkownika
» 2012-10-08 22:42:25
a więc potrafie wygenerowac wiele pociskow naraz tylko teraz nie wiem jak sprawic aby kazdy z nich sie poruszał ... z 1 było jakoś bardzo prosto :P

oto moj kod na generowanie pociskow poprzez wcisnięcie spacji:

if( key[KEY_SPACE])
           {             
                        if(face==0)
                        { 
                        for(i=0; i<NUM_BULLETS; i++)
                        {
                                 bullet_t * bullet = &bullets[i];
                                 bullets[i].active = 1;
                                 if(bullets[i].active ==1)
                                 {
                                         draw_sprite(
                                          background,        
                                          bullet_sprite,
                                          player_x,
                                          player_y);
                                 }
                                
                           }
             
                         }
                 //etc
               }
[/i]
P-66474
« 1 » 2
  Strona 1 z 2 Następna strona