[Allegro] Wiele tych samych obrazków oraz przemieszczanie obrazka
Ostatnio zmodyfikowano 2012-10-09 18:25
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 |
|
SeaMonster131 |
» 2012-10-06 20:29:52 Co do nieograniczonej liczby pocisków, możesz użyć np: 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.. pociskX += cos( angle ); pociskY += sin( angle );
Gdzie angle to kąt lufy. |
|
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) |
|
SeaMonster131 |
» 2012-10-06 20:49:34 To wygląda bardziej np tak: 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 :) |
|
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 |
|
SeaMonster131 |
» 2012-10-06 23:44:21 Napisałem, że możesz użyć na przykład vector |
|
wisien92 Temat założony przez niniejszego użytkownika |
» 2012-10-07 15:39:55 a sorka jakoś to przeoczyłem
|
|
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] |
|
« 1 » 2 |