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