[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

3 paź 2010

Etapy w grze

Przyszedł czas na rozmyślenia jak zrobić w grze etapy. Myślałem nad tym trochę i wymyśliłem taką funkcję, która przyjmuje globalną zmienną zawierającą liczbę punktów zdobytych przez gracza. Wcześniej w jakimś poście wspomiałem o zmiennej punktacja i teraz o niej pomówimy. Liczba punktów będzie odpowiadała poszczególnym etapom. 
Gra oczywiście zaczyna się z 0-wym dorobkiem punktów. Po zestrzeleniu "odpowiedniego" wroga dostaniemy "odpowiednią" ilość punktów zależnie od poziomu trudności wroga.
np: Cwrog_easy
if(zycia<=0)
{
punktacja++;
}

dostajemy 1 pkt

Cwrog_medium 
if(zycia<=0)
{
punktacja=punktacja+2;

} 
dostajemy 2 pkt 
itd... Jak wyjdzie demo to wtedy zmodyfikuje się odpowiednie wartości co do życ wroga i punktacji za zabicie go.



Teraz opiszę funkcję etapy.
Pierwszej części nie będę opisywał bo wszystko widać...
Do switcha przesyłamy argument etap zawierający liczbę, która jest równa etapowi. i w case przypisujemy do zmiennych wartości np:

 case 1:  
  max_easy=3; - tylu wrogów Cwrog_easy wystąpi w 1 etapie czyli 3
 max_medium=0; - tylu wrogów Cwrog_medium wystąpi w 1 etapie czyli 0
 max_hard=0; 
- tylu wrogów Cwrog_hard wystąpi w 1 etapie
 
max_vhard=0; - tylu wrogów Cwrog_vhard wystąpi w 1 etapie (narazie go nie ma ale trwwaja prace nad wymyśleniem ruchów dla niego)
 max_b1=0; 
- tylu bossów Cboss1 wystąpi w 1 etapie

void etapy(int pkt)
{
   if(pkt<=35) { etap=1; }
   else if( (pkt>36) && (pkt<=60) ) { etap=2; }
   else if( (pkt>61) && (pkt<=120) ) { etap=3; }
   else if( (pkt>121) && (pkt<180) ) { etap=4; }
   else if( (pkt>181) && (pkt<280) ) { etap=5; }
   else if( (pkt>281) && (pkt<400) ) { etap=6; }
   else if( (pkt>441) && (pkt<590) ) { etap=7; }
   else if( (pkt>591) && (pkt<740) ) { etap=8; }
   else if( (pkt>741) && (pkt<890) ) { etap=9; }
   else if( (pkt>891) && (pkt<991) ) { etap=10; }
   else if( (pkt>991) && (pkt<1100) ) { etap=11; }

   switch(etap)
   {

      case 1:
      max_easy=3;
      max_medium=0;
      max_hard=0;
      max_vhard=0;
      max_b1=0;
      break;

      case 2:
      max_easy=1;
      max_medium=2;
      max_hard=0;
      max_vhard=0;
      max_b1=0;
      break;

      case 3:
      max_easy=1;
      max_medium=1;
      max_hard=1;
      max_vhard=0;
      max_b1=0;
      break;

      case 4:
      max_easy=2;
      max_medium=1;
      max_hard=1;
      max_vhard=0;
      max_b1=0;
      break;

     // itd

      case 10:
      max_easy=0;
      max_medium=0;
      max_hard=0;
      max_vhard=0;
      max_b1=1;
      break;

    }
}


Od jakiegoś czasu nie piszę o kodzie w main() bo przyjdzie na to czas, więc pokażę co zrobimy z taką zmienną w głównej pętli gry: 
for(int e=0; e<max_easy; e++) 
{} 
for(int m=0; m<max_medium; m++) 
{}
Taka pętla wykona się tyle razy ilu mamy wrogów w poszczególnym etapie (funkcja etapy i instrukcja case). Zawarte w niej będą funkcje sprawdzające kolizję z różnymi obiektami i inne ciekawe rzeczy ale o tym w następnym poście :) Myślę, że w ciągu 2 tyg powstanie "wczesna" wersja  beta  
P.S. Jeżeli znacie strony z bitmapami o tematyce kosmicznej to dajcie link, bardzo mi pomożecie  :) 

Brak komentarzy:

Prześlij komentarz