[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

28 wrz 2010

Bonusy w grze

Pora no kolejnego posta... Mam nadzieję, że będę miał więcej czasu to poświęcę trochę więcej czasu na projekt w tym tyg.
Mając już kilka typów wrogów (zapewne dojdzie jeszcze kilka) czas na obiecane bonusy spadające po zestrzeleniu wroga. 
Oto klasa bazowa Cammo zawierająca podstawowe zmienne i metodę, które będą dziedziczyły klasy pochodne.
Oto ona:

class Cammo
{
public:
 int poz_x, poz_y;
 int cyfra_losowa;


 Cammo::Cammo()
 {
   poz_x=0;
   poz_y=1000;
 }

 void ogranicznik()
 {
    if( (poz_y==465) || (poz_y==466) )
    {
         poz_y=1000;
    }
 }
};



Klasa sama w sobie nic nie robi... Zawiera tylko 3 elementy składowe. Pozycję x i y i cyfrę losową, a także funkcję ogranicznik(), która ogranicza zakres spadania bonusu do zmiennej y>=466 (aby bonusik nie leciał nam po interfejsie).

Dopiero klasy pochodne wyjaśnią koncepcję utworzenia klasy bazowej. Oto pierwsza z nich

class Cammo_bazooka: public Cammo
{
public:
   void bazooka(int pozx,int pozy)
   {
   cyfra_losowa=rand()%8;
      if( (cyfra_losowa==4) && (poz_y>800) )
      {
           poz_x=pozx;
           poz_y=pozy;
      }
   }
};

 

Klasa  ta dziedziczy publicznie z klasy Cammo i zawiera 1 metodę, która będzie używała odziedziczone elementy z klasy bazowej. 
No ok ale po co to właściwie?? Już tłumaczę...  Klasa zawiera metodę void bazooka(int pozx,int pozy), która przyjmuje 2 argumenty od trafionego przez nas wroga. Funkcja będzie wywoływana w main() TYLKO WTEDY gdy trafimy we "właściwego" wroga. Właściwego, bo z każdego wroga będzie wypadał inny rodzaj amunicji. 
Po każdym obiegu głównej pętli gry i trafieniu we wroga cyfra losowa przyjmuje losową wartość z przedziału 0-8 i w instrukcji if( (cyfra_losowa==4) && (poz_y>800) ) sprawdzamy czy wylosowana cyfra to 4(akurat taką wybrałem nie ma to żadnego znaczenia) i czy na planszy gry nie ma bonusu (poz_y>800) to w miejscu trafionego wroga wypada nam bonus.
Jak sama nazwa  wskazuje ta klasa dotyczy bonusu w postaci dodatkowej amunicji. Wykorzystanie jej będzie miało miejsce w main(). 

Oto pozostałe 3 klasy stworzone prawie identycznie jak Cammo_bazooka. Różnią się częstotliwością wypadania broni. Im mocniejsza broń tym rzadziej wypadnie.
 

class Cammo_machgun: public Cammo
{
public:
   void machgun(int pozx,int pozy)
   {
      cyfra_losowa=rand()%13;
      if( (cyfra_losowa==4) && (poz_y>800) )
      {
          poz_x=pozx;
          poz_y=pozy;
      }
   }
};

//********************************************************************************************
class Cammo_laser: public Cammo
{
public:
   void laser(int pozx,int pozy)
   {
      cyfra_losowa=rand()%17;
      if( (cyfra_losowa==4) && (poz_y>800) )
      {
           poz_x=pozx;
           poz_y=pozy;
      }
   }
};

//********************************************************************************************
 

class Cammo_flame: public Cammo
{
public:
   void flame(int pozx,int pozy)
   {
       cyfra_losowa=rand()%22;
       if( (cyfra_losowa==4) && (poz_y>800) )
       {
           poz_x=pozx;
           poz_y=pozy;
       }
   }
};



W następnym poście umieszczę bonusy z życiem i przyśpieszaczem(czyt. dopalacz :P). Jak macie jakiś pomysł z jakimś bonusem, który uatrakcyjni grę to piszcie :) 

Brak komentarzy:

Prześlij komentarz