[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

13 wrz 2010

Klasa bazowa wroga pierwsza wzmianka o dziedziczeniu

Kolejny raz przebudowałem klasę wroga. Dzięki pomysłom Tomkos'a zmieniłem troszkę klasę. Oto efekt:

class Cwrog
{
protected :
  int zycia;
public:
  int pozwro_x, pozwro_y;
  int pozpocwro_x, pozpocwro_y;  
  int czest_poc, lot_pion;
  void poruszanie_wroga();
  void strzelanie_wroga();  
  void odejm_zycia(int);  
 Cwrog::Cwrog()
 {
   pozwro_x=rand()%550;
   pozwro_y=0;
   czest_poc=0;
   zycia=3;
   lot_pion=0;
 }
};
 

void Cwrog::poruszanie_wroga()

{
  if(zycia<=0)
  {
     
punktacja++; 
  }
  if( (pozwro_y>430) || (zycia<=0) )
  {
     zycia=3;
     pozwro_x=rand()%740;
     pozwro_y=-100;
  }
  if(lot_pion==2)
  {
    pozwro_y++;
    lot_pion=0;
  }

  lot_pion++;
}

 



void Cwrog::strzelanie_wroga()
{
   if(pozwro_y>=0)
   {
      if ( (pozpocwro_y>460) || (pozpocwro_y==0) )  
      {
        if (czest_poc>=200)
        {
          pozpocwro_x=pozwro_x+7;
          pozpocwro_y=pozwro_y+25; 
        }
      } 


      if(czest_poc==200)
      {
         czest_poc=0;
      }

      czest_poc++;
   }

   pozpocwro_y=pozpocwro_y+2; 

   if (pozpocwro_y>460)
   {
      pozpocwro_y=800;
   }
}


 
void Cwrog::odejm_zycia(int minus)
{
   zycia=zycia-minus;
}


Zmiany są nieznaczne.
- zmienna lot_pion oznacza szybkość z jaką będzie się przemieszczał wróg w dół. Spowodowane jest to tym, że nie mogę użyć zmiennej typu float, double, ponieważ przy wszystkie dotychczasowe funkcje przyjmują zmienne typu integer, także funkcje biblioteczne allegro. Mogłem oczywiście robić rzutowanie lub konwersję ale to by było trochę bez sensu i spowalniało by grę...  Zrobiłem sobie pewną funkcję, która zwiększa pozwro_y o 1 co 2 obiegi pętli czyli tak naprawdę jakbyśmy mogli użyć float to daje ten sam efekt co pozwro_y=pozwro_y+0,5;  Dzięki tej funkcji możemy opóźniać spadanie wroga w dół.
void Cwrog::poruszanie_wroga()
*
* 

if(lot_pion==2)
{
  pozwro_y++;
  lot_pion=0;
}

  lot_pion++;

-usunąłem kilka if-ów z metod


I tak mamy podstawową klasę. Utworzę teraz klasę pochodną odpowiadającą za 
wroga o poziomie easy.

class Cwrog_easy : public Cwrog
{
};

 


EDIT: rysunek pomocniczy obrazujący ruch wroga_easy



Kod źródłowy zamieszczę po stworzeniu kilku klas wrogow. Uporządkuję też kod i stworzę kilka plików nagłówkowych wraz z cpp dzięki radzie Michała Ciepłego (komentarz w jakimś poście). Ja jeszcze jako tako się w nim odnajduję ale jak ktoś inny otworzy kod tak jak Michał to jednak nie ma pojęcia co się dzieje. Tak więc kod zamieszczę dopiero za kilka postów.
Kilka postów wstecz inni urzytkownicy napisali mi klika cennych rad, które oczywiście w miarę czasu zastosuję :) Dzięki za pomoc i proszę o więcej, jeżeli macie jakieś pomysły :)

Brak komentarzy:

Prześlij komentarz