[POBIERZ] kod źródłowy i inne pliki potrzebne do uruchomienia gry  [POBIERZ] 

Zachęcam do komentowania :) Mile widziane sugestie i pytania, na które chętnie odpowiem

8 paź 2010

Kod w main(), ostatni post przed wersją demo

Oto moje wypociny zawarte w funkcji odpowiadającej za wroga easy. 
W funkcji jest wyswietlenie wroga i jego pocisku, a także wszystkie możliwe kolizje.
Kolizja pociskow z każdej broni z wrogiem, kolizja pocisku wroga z robocikiem, 
kolizja robocika z wrogiem i kolizja pocisku flamethrower z pociskiem wroga czyli możliwość obrony dla robota przed pociskami. 
Przy każdym wywołaniu kolizji "coś się dzieje".  Albo uruchamiamy funkcje odpowiedzialne za LOSOWE wypadanie bonusów, tracimy życia, wypada amunicja, zabijamy wroga
Użyłem Cwrog_easy enemy_e[5]; czyli stowrzyłem 6-elementową tablicę obietków klasy enemy_easy. 6 wrogow tej klasy wystarczy. Liczba wrogich statków uzależniona jest od void etapy() (poprzednie posty).
Napisałem Ostatni post przed wersją demo bo miało być obiektowo, a nie jest do końca. Zastanawiam się aby te kolizje jeszcze upchnąć do klas bo za dużo tu tego ...
Oto kod: 



for(int e=0; e<max_easy; e++) //easy
{
   if( (frame>=0) && (frame<=80) )
   {
   draw_sprite(bufor, wrog, enemy_e[e].pozwro_x, enemy_e [e].pozwro_y);
   draw_sprite(bufor, pociskwroga, enemy_e[e].pozpocwro_x, enemy_e[e].pozpocwro_y);
   }

   if( kolizja(enemy_e[e].pozwro_x,enemy_e[e].pozwro_y,wrog->w,wrog->h,strzal_bazooka.pozpoc_x,strzal_bazooka.pozpoc_y,pocisk->w,pocisk->h) )
   {
      enemy_e[e].odejm_zycia(2);
      strzal_bazooka.pozpoc_y=-40;
      bazooka_dodaj.bazooka(enemy_e[e].pozwro_x,enemy_e[e].pozwro_y);
      zycie_dodaj.aid();
      przyspiesz_dodaj.przyspiesz();
   }

   else if( kolizja(enemy_e[e].pozwro_x,enemy_e[e].pozwro_y,wrog->w,wrog->h,strzal_machinegun.pozpoc_x,strzal_machinegun.pozpoc_y,mach_gun->w,mach_gun->h) )
   {
     enemy_e[e].odejm_zycia(1);
     strzal_machinegun.pozpoc_y=-30;
     bazooka_dodaj.bazooka(enemy_e[e].pozwro_x,enemy_e[e].pozwro_y);
     zycie_dodaj.aid();
     przyspiesz_dodaj.przyspiesz();
   }

   else if( kolizja(enemy_e[e].pozwro_x,enemy_e[e].pozwro_y,wrog->w,wrog->h,strzal_laser.pozpoc_x,strzal_laser.pozpoc_y,laser->w,laser->h) )
   {
     enemy_e[e].odejm_zycia(3);
     bazooka_dodaj.bazooka(enemy_e[e].pozwro_x,enemy_e[e].pozwro_y);
     zycie_dodaj.aid();
     przyspiesz_dodaj.przyspiesz();
   }

   else if( kolizja(enemy_e[e].pozwro_x,enemy_e[e].pozwro_y,wrog->w,wrog->h,strzal_flamethrower.pozpoc_x,strzal_flamethrower.pozpoc_y,flame->w,flame->h) )
   {
     enemy_e[e].odejm_zycia(5);
     enemy_e[e].czest_poc=enemy_e[e].czest_poc-20;
     strzal_flamethrower.pozpoc_y=-30;
     bazooka_dodaj.bazooka(enemy_e[e].pozwro_x,enemy_e[e].pozwro_y);
     zycie_dodaj.aid();
     przyspiesz_dodaj.przyspiesz();
  }
//kolizja pocisku enemy_e z ludkiem
  if( kolizja(ludek.pozs_x,ludek.pozs_y,statek->w,statek->h,enemy_e[e].pozpocwro_x,enemy_e[e].pozpocwro_y,pociskwroga->w,pociskwroga->h) )
  {
    enemy_e[e].pozpocwro_x=0;
    enemy_e[e].pozpocwro_y=700;
    zycia=zycia-2;
  }
//kolizja enemy_e z ludkiem
  if( kolizja(ludek.pozs_x,ludek.pozs_y,statek->w,statek->h,enemy_e[e].pozwro_x,enemy_e[e].pozwro_y,wrog->w,wrog->h) )
  {
    enemy_e[e].pozwro_x=rand()%550;
    enemy_e[e].pozwro_y=0;
    zycia=zycia-4;
  }

//kolizja pocisku enemy_e z pociskiem ludka
  if( kolizja (strzal_flamethrower.pozpoc_x,strzal_flamethrower.pozpoc_y, flame->w, flame->h,enemy_e[e].pozpocwro_x,enemy_e[e].pozpocwro_y,pociskwroga->w,pociskwroga->h) )
  {
    enemy_e[e].pozpocwro_y=700;
  }
  enemy_e[e].strzelanie_wroga();
  enemy_e[e].poruszanie_wroga();
}


Jestem przygotowany na krytykę i otwarty na pomysły co do zmian w kodzie :) 
Pewnie trochę potrwa (w weekend studia)  zanim zrobię kolizje dla innych wrogów ale przy  następnym poście dodam kod w code.google.

Brak komentarzy:

Prześlij komentarz