Warsztat.GD

Społeczność => Projekty zaawansowane => Wątek zaczęty przez: stecboss w Sierpień 15, 2010, 21:10:23

Tytuł: [done] Space destroyer
Wiadomość wysłana przez: stecboss w Sierpień 15, 2010, 21:10:23
Jestem początkującym programistą i zamierzam stworzyć grę 2D w C++ w oparciu o bibliotekę Allegro. Może to nie jest coś bardzo ambitnego, lecz dla mnie praktycznie początkującego (programuję strukturalnie w C++ ok. 6 miesięcy i uczę sięobiektowości) to małe wyzwanie :)
Gra ma będzie miałą nazwę: "Space Destroyer".
Gra będzie podobna do gry Chicken Invaders. Z góry będą spadały w naszą stronę wrogie statki, a naszym zadaniem będzie strzelanie do nich i przetrwanie jak najdłużej.
Gra będzie podzielona na etapy(zobaczymy ile ich będzie)
-będą 4 rodzaje broni (jak gra się spodoba i będą jakieś propozycje to będzie więcej broni)
-kilka rodzajów wrogich statków (będą się od siebie różniły wytrzymałością, trajektorią lotu i... zobaczymy czym jeszcze :p)
-ważnym elementem w grze będzie "wyskakująca" amunicja po zestrzeleniu statku, którą trzeba będzie zbierać aby móc jak najdłużej przetrwać, ponieważ amunicja będzie ograniczona i trzeba będzie ją uzupełniać.
-planuję zrobić bonusy: apteczki z życiami, przyśpieszacze ruchu statku i... zobaczymy w trakcie pracy nad projektem.
-no i... tutaj zostawiam miejsce na Wasze propozycje, które rozważę i być może wdrożę do projektu :)

oto "zalążek gry" ver.1.00
(http://img189.imageshack.us/img189/8434/nowyobrazmapabitowa2m.png)
Polecam  mojego bloga gdzie można pobrać kod źródłowy i wszystkie pliki potrzebne do uruchomienia gry. Na blogu opisuję co robię po kolei i mam nadzieję, że komuś kto także bawi się z allegro pomogę :) Zachęcam do komentowania i własnych sugestii na forum jak i blogu

http://stecboss.blogspot.com/
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Liosan w Sierpień 15, 2010, 23:48:58
Wiesz czym zrobiłeś na mnie wrażenie? Tym, że jesteś początkujący, a wybrałeś dobry projekt na początek :) Nie żadne MMO, RPG, czy whatever. Skończona gra tej klasy jest znacznie cenniejsza (dla Ciebie) niż projekt zaawansowany, ale rozgrzebany. I w dodatku w kilku punktach spisałeś to, co zamierzasz zrobić :) Generalnie, trzymam kciuki :)

Jakbyś potrzebował darmowych grafik w klimacie strzelamy-w-kosmosie, może ta strona pomoże: http://www.lostgarden.com/2007/04/free-game-graphics-tyrian-ships-and.html

Liosan
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Super Mario w Sierpień 16, 2010, 00:13:40
Trzymam kciuki jak wyzej ;).
Zapisuje sie do obserwatorow i postaram sie byc na biezaco ;).

Powodzenia !
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Oti w Sierpień 16, 2010, 01:24:51
Również trzymam kciuki. Zrobiłem podobną gierkę na jedno compo(http://www.warsztat.gd/projects.php?x=view&id=537), jakbyś chciał, to mogę podrzucić kod, lub pomóc, napisz na gg(3957147). Pozdrawiam.
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: stecboss w Sierpień 24, 2010, 12:38:16
Narazie zrobiłem
-poruszanie się robocikiem
-strzelanie 1 rodzajem broni
-"coś" spada z góry, strzela tracąc nam życia i możemy to zestrzelić (narazie do testowania)
-jakiś interfejs gry z poziomem żyć i robocikiem pokazującym swe zniszczenia
- i jakieś dźwięki w tle :P
oto screen z "gry"

(http://img820.imageshack.us/img820/8434/nowyobrazmapabitowa2m.png)

Kod źródłowy oraz wszystkie pliki potrzebne do odpalenia gry wraz z biblioteczką allegro, a także opis tworzenia gry od podstaw do pobrania na moim blogu http://stecboss.blogspot.com/ (http://stecboss.blogspot.com/)
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Barthap w Sierpień 24, 2010, 13:09:12
hmm niech zgadnę, ten zalążek gry jest częściowo zrobiony w allegro 4 na podstawie tej strony: http://www.easykoder.vot.pl/ (http://www.easykoder.vot.pl/)
Przykład: http://www.easykoder.vot.pl/get/artykulyallegro/kolizja.rar (http://www.easykoder.vot.pl/get/artykulyallegro/kolizja.rar)

Ale trzymam kciuki jak inni, jeśli Ci się uda, to może być ciekawa gierka.
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: stecboss w Sierpień 24, 2010, 14:22:39
tak kolizję wziąłem z tej strony :) Próbowałem sam coś wykombinować ale nie do końca wychodziło, a ta kolizja się sprawdza :)
Tytuł: Space destroyer
Wiadomość wysłana przez: stecboss w Sierpień 29, 2010, 13:05:18
Pojawiła się wersja 1.02
dodałem 4 rodzaje broni: narazie nie zrobiłem kolizji ale niedługo dorobię...
(http://img339.imageshack.us/img339/6558/menubazooka.png)     (http://img243.imageshack.us/img243/9100/menumachinegun.png)     (http://img682.imageshack.us/img682/7237/menulaser.png)     (http://img412.imageshack.us/img412/1047/menuflamethrower.png)

W grze bronie zmieniamy klawiszami na klawiaturze:
1-bazooka
2-karabin maszynowy
3-laser
4-miotacz ognia
i strzelamy spacją.

To by było na tyle. Wszystko opisałem na moim blogu gdzie jest do ściągnięcia kod źródłowy i inne pliki potrzebne do uruchomienia gry.
http://stecboss.blogspot.com/ (http://stecboss.blogspot.com/)
Jeżeli macie jakieś spostrzeżenia, uwagi, pomysły to piszcie :)
Na tym etapie gierka wygląda tak:
(http://img823.imageshack.us/img823/9816/nowyobrazmapabitowa2j.png)
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: mar-ek1 w Sierpień 29, 2010, 20:40:17
Zerknąłem na twojego bloga i na początek proponuję zmienić ten fragment:
Cshots strzal_bazooka;
Cshots strzal_machinegun;
Cshots strzal_laser;
Cshots strzal_flamethrower;
na taki:
Cshots weapon[4]; //wtedy np. weapon[0] to bazooka, weapon[1] to machinegun itd.I wtedy bardzo upraszcza ci się kod odpowiedzialny za strzał (sprawdzanie czy naciśnięta spacja):
if(key[KEY_SPACE])
{
   if((weapon[wybranaBron].pozpoc_y<0) || (weapon[wybranaBron].pozpoc_y == 0))
   {
       weapon[wybranaBron].strzelaniee(ludek.pozs_x,ludek.pozs_y);
       play_sample(weapon[wybranaBron].dzwiek,200,200,1000,0);  //tylko musisz przenieść sample do klasy broni
   }
}
I jest mniej pisania przy dodawaniu nowej broni.
//=========================================
Zainteresował mnie ten fragment z bloga:
Cytuj
Klasa sama w sobie nic nie robi ustawia tylko początkową pozycję pocisku (x i y) dopiero w main zabawa się zaczyna :P
Jeśli to oznasza, że kod odpowiedzialny (http://odpowiedzialnosc-zarzadu.e-adwokat.eu/cywilna.html) za poruszanie pocisków masz w main() to radzę przenieść go przenieść do jakiejś klasy (chociażby do Cshots), a w pętli głównej dać tylko pociski.update(), ale to temat na dłuższego posta, a takich nie lubię pisać :P, może zrozumiesz o co mi chodzi.

To tyle na początek, kiedy przeczytam bloga do końca to może jeszcze coś napiszę. Gdybyś miał jakieś wątpliwości dot. moich wskazówek to pisz tutaj albo na priv.

EDIT:
Pobrałem paczkę z kodem i oto moje uwagi:
- wszystkie klasy dałeś do jednego pliku, radzę jednak trzymać się zasady 1 klasa = 1 plik (no dwa bo .h i .cpp), uwierz to cholernie ułatwia organizację kodu i ewentualne poprawki

- wskaźniki na bitmapy przenieś do klas

- na jedną bitmapę dawaj kilka obrazków, np zamiast czegoś takiego:
Statek_HP100=load_bmp("BMP/Statek_HP/Statek_HP100.bmp",default_palette);
     Statek_HP90=load_bmp("BMP/Statek_HP/Statek_HP90.bmp",default_palette);
     Statek_HP80=load_bmp("BMP/Statek_HP/Statek_HP80.bmp",default_palette);
     Statek_HP70=load_bmp("BMP/Statek_HP/Statek_HP70.bmp",default_palette);
     Statek_HP60=load_bmp("BMP/Statek_HP/Statek_HP60.bmp",default_palette);
     Statek_HP50=load_bmp("BMP/Statek_HP/Statek_HP50.bmp",default_palette);
     Statek_HP40=load_bmp("BMP/Statek_HP/Statek_HP40.bmp",default_palette);
     Statek_HP30=load_bmp("BMP/Statek_HP/Statek_HP30.bmp",default_palette);
     Statek_HP20=load_bmp("BMP/Statek_HP/Statek_HP20.bmp",default_palette);
     Statek_HP10=load_bmp("BMP/Statek_HP/Statek_HP10.bmp",default_palette);
     Statek_HP0=load_bmp("BMP/Statek_HP/Statek_HP0.bmp",default_palette);
Będziesz miał:
Statek_HP=load_bmp("BMP/Statek_HP.bmp",default_pallete);I po prostu zamiast rysować całą bitmapę rysujesz odpowiedni kawałek (dalej kombinuj jak to rozegrać ;) )

- Jak najwięcej rzeczy pakuj do klas, a jak najmniej rób zmiennych globalnych, podpowiem, że cały twój kod da się upchnąć do klas (no może nie trzeba tego robić z pętlą główną)

- koniecznie dodaj do klas postaci, broni itd. funkcje rysujące, wtedy wystarczy, że masz w pętli głównej np. statek.draw(); i jeśli coś chcesz w niej zmienić to robisz to w pliku klasy i nie rozwalasz kodu reszty gry to samo tyczy się funkcji wczytującej bitmapę itd. A jeśli nie chcesz tego przepisywać kilka razy (bo w gruncie rzeczy to niektóre funkcje będą się powtarzać w kilku klasach) to radzę poczytać o dziedziczeniu, ale tu już trzeba chwilę pomyśleć nad rozplanowaniem struktury klas żeby się nie pogubić więc na początek może nie zagłębiaj się w to.

EDIT2: Proponuję zrobić poruszanie postacią za pomocą myszki (np. postac.x = mouse.x) i strzelanie lewym przyciskiem myszy. Jeśli projekt się rozwinie to możesz zrobić coś w rodzaju magazynków tak żeby trzeba było przeładować broń co określoną ilość strzałów (można to dać pod prawy przycisk mychy). Zmiana broni może zostać pod cyferkami, ale radzę dodać przyciski następna/poprzednia broń np. pod klawiszami Q i W.
Heh ale się rozpisałem :D

Jeśli czegoś nie zrozumiałeś to prawdopodobnie moja wina, bo mam spore problemy z przekazywaniem informacji :P

Życzę powodzenie przy projekcie :)

PS: To pewnie nie koniec moich wskazówek więc przygotuj się na kolejną lawinę tekstu ^^ bo czuję wewnętrzną potrzebę pomagania i lubię to ;)
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Avaj w Sierpień 30, 2010, 11:34:07
@mar-ek1: Dziedziczenia nie używasz po to, żeby "nie pisać kilka razy kodu". Lepiej wtedy zwykłą kompozycję zastosować.
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: ANtY w Sierpień 30, 2010, 12:12:21
@mar-ek1: co do jednej klasy - 2 pliki, to lepiej pozostawić każdemu dowolność, przy większych projektach masz 200 plików, myślisz, że łatwiej się po tym poruszać i jest lepsza organizacja? Lepiej się poprawia, gdy dodanie jednej rzeczy powoduje zmiany w 14 plikach zamiast w jednym?
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: mar-ek1 w Sierpień 30, 2010, 14:37:20
@Avaj: Może teraz napiszę jeszcze większe bzdury niż wcześniej, może nie do końca rozumiem dziedziczenia (http://spadek.info.pl/dziedziczenie.html) (albo najzwyczajniej w świecie mylę pojęcia  :P), ale chodziło mi o to, że jeśli zrobię np. klasę CObject i w niej będzie funkcja WczytajBitmape(), a następnie będę dziedziczył po tej klasie w klasach pochodnych (CBron, CStatek, itd.) to nie będę musiał pisać tej funkcji w każdej z osobna. Ale tak jak mówiłem, mogę się na tym nie znać (może tylko mi się wydaje, że wiem o co chodzi),ale człowiek całe życie się uczy, więc proszę nie zmieszać mnie z błotem  ;)

@ANtY: Jak dojdę w projekcie do 200 plików to pewnie zmienię zdanie, ale przy np. 20 dobrze mi się pracuje. Zgodzę się, że lepiej pozostawić każdemu dowolność, w końcu to co uważam za wygodne nie musi być wygodne dla kogoś innego,i zamiast:
Cytuj
radzę jednak trzymać się zasady 1 klasa = 1 plik (no dwa bo .h i .cpp), uwierz to cholernie ułatwia organizację kodu i ewentualne poprawki
Mogłem napisać coś w stylu:
Cytuj
Uważam, że rozdzielenie klas na osobne pliki jest wygodniejsze i ułatwia mi pracę, ale nie jest to konieczne więc rób jak tobie wygodnie

Jeśli jeszcze gdzieś popełniłem błąd to wybaczcie, nikt nie jest nieomylny :) Zdarza mi się coś źle wytłumaczyć nawet jeśli wiem o co chodzi dlatego nie będę się kłócił, że tak jak piszę "jest dobrze i koniec" bo to nie zawsze prawda :D

Dzięki za poprawienie mnie

Pozdrawiam  ;D
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Oti w Sierpień 30, 2010, 14:54:46
Lepiej się poprawia, gdy dodanie jednej rzeczy powoduje zmiany w 14 plikach zamiast w jednym?
To zależy. Nawigowanie po jednym pliku który ma kilka tysięcy linii kodu jest trudniejsze niż po 14 mniejszych.
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Avaj w Sierpień 30, 2010, 14:59:16
tzn chodzi mi o to, że takie rzeczy jak wczytywanie bitmapy i jej rysowanie lepiej przerzucić do jakiejś klasy Sprite i niech każdy statek/broń/obiekt przechowuje sobie sprite'a (wskaźnik czy kopia, nie ma praktycznie znaczenia).
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: ANtY w Sierpień 30, 2010, 15:36:32
Lepiej się poprawia, gdy dodanie jednej rzeczy powoduje zmiany w 14 plikach zamiast w jednym?
To zależy. Nawigowanie po jednym pliku który ma kilka tysięcy linii kodu jest trudniejsze niż po 14 mniejszych.
Nie mówię, że wszystko w jednym :)
ale z umiarem
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: stecboss w Sierpień 30, 2010, 16:23:46
Dziękuję mar-ek1 i innym za pomoc :) Napewno skorzystam z Waszych rad, a szczególnie tej z tablicą obiektów Cshots.
Teraz jak już coś tam umiem z obiektowości sam widzę, że można więcej rzeczy "upchnąć" do klas i dzięki temu main() jest bardziej czytelny. Idea stworzenia gry powstała z myślą o nauce obiektowości. Równorzędnie do pisania programu czytam symfonię Grębosza, więc w miarę czasu klasy będą ulepszane tak aby przypominały rzeczywistośc :P
Dzięki za rady  :)
P.S. Jak zobaczycie, że coś źle robię to krytykujcie :P

Edit: jest już wersja 1.03 http://stecboss.blogspot.com/ (http://stecboss.blogspot.com/)
Tytuł: Space destroyer
Wiadomość wysłana przez: stecboss w Wrzesień 06, 2010, 15:29:51
Jest już nowa wersja 1.04
Dodałem:
- kolizję pocisków z 4 rodzaji broni
- aktualny stan amunicji
- paski przedstawiające stan amunicji
- kolizję miotacza ognia z wrogimi pociskami po to aby umożliwić jakąś obrojnę robocikowi (inne pociski nie kolidują z wrogimi)
Oczywiście przy wystrzale z każdej broni jest inny dźwięk, inne zachowanie pocisków...
Narazie nie miałem czasu aby przerobić kod jak radziliście ale niedługo się zmobilizuję  :)

oto screen z gry:
(http://img828.imageshack.us/img828/8434/nowyobrazmapabitowa2m.png)

Gra wraz z kodem źródłowym, opisami klas, funkcji i ogólnie całej gry jest do obejrzenia i pobrania z mojego bloga
http://stecboss.blogspot.com/ (http://stecboss.blogspot.com/)
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: stecboss w Wrzesień 17, 2010, 11:48:58
Praca nad projektem trochę zwolniła lecz cały czas trwa oto efekty:
do tej pory zrobiłem klasę bazową wroga i z niej dziedziczymy narazie(będzie ich kilka rodzajów) 2 wrogów

-ruchy wrogiego statku easy: statek opada w dół aż wyjdzie za planszę lub zostanie zestrzelony, wtedy pojawia się znowu u samej góry i znowu opada...
(http://img696.imageshack.us/img696/8434/nowyobrazmapabitowa2m.png)


-ruchy wrogiego statku medium: statek opada w dół, jednocześnie poruszając się w lewo lub prawo zależnie od wartości zmiennej bool, aż wyjdzie za planszę lub zostanie zestrzelony, wtedy pojawia się znowu u samej góry i znowu opada...
(http://img339.imageshack.us/img339/8434/nowyobrazmapabitowa2m.png)


Nie zamieszczam kodu bo by się zrobił mały bałagan do tego jest mój blog http://stecboss.blogspot.com/ (http://stecboss.blogspot.com/) gdzie jest wszystko zamieszczone i opisane. Oczywiście jak skończę kodowanie to do odpowiedniego statku dobiorę odpowiednią grafikę, narazie do testowania ludzik ;p
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Barthap w Wrzesień 17, 2010, 16:04:46
Dobra robota! Może wyjść z tego niezła gra, dodatkowy + za udostępnianie kodu i bieżące postępy na blogu ;)
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Avaj w Wrzesień 17, 2010, 17:01:56
btw, zamiast kombinować z przestawianiem boola nie lepiej dać "statek.X = polowa_ekranu + sin(timer)*polowa_ekranu"? wtedy będzie też taki fajny efekt że przyśpiesza i hamuje ;]
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Barthap w Wrzesień 17, 2010, 17:04:11
@up: ten efekt to raczej do poziomu hard czy difficult jak kto woli. Chyba że na trudny poziom masz lepszy pomysł.
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Xirdus w Wrzesień 17, 2010, 17:09:06
btw, zamiast kombinować z przestawianiem boola nie lepiej dać "statek.X = polowa_ekranu + sin(timer)*polowa_ekranu"? wtedy będzie też taki fajny efekt że przyśpiesza i hamuje ;]
W invadersach raczej się zwyczajnie przeciwnicy odbijają; jakby zwalniali i przyśpieszali to gra byłaby za łatwa (kampienie z brzegu)
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: stecboss w Wrzesień 18, 2010, 11:22:05
Zaczynając prace nad gierką miałem problemy ze znalezieniem kodów źródłowych z innych gierek i nie miałem się na czym wzorować... Według mnie taka gierka nie ma żadnych szans na rynku komercyjnym, więc bezsensowne byłoby ukrywanie kodu i zamieszczanie tylko pliku .exe. Chcę się podzielić z innymi użytkownikami kodem, swoimi przemyśleniami z dwóch powodów:
- zawsze ktoś mi doradzi na blogu jak można było to zrobić inaczej i lepiej pod względem obiektowości (po to powstał blog)
- i zapewne jak ktoś będzie robił podobną grę może sobie podpatrzeć jak moja gierka powstawała od podstaw

P.S. Avaj dzięki za pomysł tylko jeszcze nie piłem kawy i do końca nie wiem o co w tym chodzi  "polowa_ekranu" ?
statek.X = polowa_ekranu + sin(timer)*polowa_ekranu
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Avaj w Wrzesień 18, 2010, 11:45:17
w sensie połowa rozdzielczości ekranu ;] jak masz 1024x768 to polowa_ekranu = 512, bo sinus zwraca od -1 do 1, więc polowa_ekranu + sin() * polowa_ekranu zwroci od 0 do 1024
Tytuł: Space destroyer
Wiadomość wysłana przez: stecboss w Wrzesień 28, 2010, 13:33:42
-ruchy wrogiego statku hard:
-statek opada w dół, jednocześnie poruszając się w prawo. Jak dojdzie do prawej krawędzi to "teleportuje się" na tej samej wysokości ale z lewej strony ekranu aż wydzie poza dolną część ekranu.
(http://img193.imageshack.us/img193/4650/nowyobrazmapabitowa2mu.png)

-ruchy wrogiego statku boss1:
-statek zwany matką lub bossem porusza się w podobnie jak medium ale nie opada, a na dodatek strzela 5 pociskami na raz i ma bardzo dużo żyć.
(http://img251.imageshack.us/img251/8434/nowyobrazmapabitowa2m.png)

Dodałem też klasy odpowiedzialne za losowe wypadanie amunicji po trafieniu odpowiedziego wroga (z każdego wroga wypada inna amunicja). Zapewne dojdzie jeszcze jakiś wróg veryhard ale to w przyszłości :P

Narazie nie umieszczam BMP obrazujących poszczególne obiekty jak wrogowie, boss, bonusy itp, ponieważ cały czas szukam takowych bitmap. Jeżeli znacie stronki z darmowymi bitmapami związanymi z kosmicznymi statkami to zapodajcie linka :)
jakby kogoś interesowały szczegóły to od tego jest blog http://stecboss.blogspot.com/ (http://stecboss.blogspot.com/)
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Yuko w Wrzesień 28, 2010, 17:42:15
No coraz lepiej i lepiej trzymam kciuki :)
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Barthap w Wrzesień 29, 2010, 20:57:28
No muszę po raz kolejny przyznać, że świetnie Ci idzie. Na podstawie Twojej gierki wpadłem na pomysł stworzenia podobnej, może też pójdę Twoim śladem...
Tytuł: Space destroyer: Etapy w grze
Wiadomość wysłana przez: stecboss w Październik 03, 2010, 14:45:12
Od poprzedniego posta dodałem 2 klasy bonusów w postaci przyśpieszacza i apteczki z życiami.
Teraz kolej na etapy w grze. Odpowiadać za to będzie ta funkcja wywoływana oczywiście w main:

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; }
  //itd

   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;

   //itd
   }


Oto wyjaśnienie tajemniczych nazw

 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

Po nadaniu wartości w poszczególnym etapie dla:
np. max_easy w 1 etapie wystąpi 3 wrogów, bo pętla wykona się 3 razy.
for(int e=0; e<max_easy; e++)
{}

max_medium w 1 etapie wystąpi 0 wrogów, bo pętla wykona się 0 razy.
for(int m=0; m<max_medium; m++)
{}
W każdej pętli będą funkcje z kolizjami, animacją dla odpowiednich wrogów. Postaram sie w ciągu 2 tyg doprowadzić wszystko do ładu i składu :P i wypuścić pierwsze demko gry :)
Jakby kogoś interesowało więcej szczegółów to od tego jest blog http://stecboss.blogspot.com/ (http://stecboss.blogspot.com/)
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Xirdus w Październik 03, 2010, 18:09:33
OK, ale po co nam tu dajesz ten kod? I czemu nie zamykasz go w tagi code?

W ogóle coś mi śmierdzą wyrażenia etap=
Tytuł: Space destroyer
Wiadomość wysłana przez: stecboss w Październik 08, 2010, 21:14:57
W grze dodałem ruchome tło i pokazałem kawałek kodu odpowiedzialny za wroga_easy.
Jak na mój gust trochę za dużo kolizji w tej funkcji i pewnie można to upchać do klas. Naskrobałem trochę tego kodu i wrzuciłem na bloga. Miało być pięknie obiektowo ale nie do końca jest. Jak macie jakiś sprytny pomysł jak "odchudzić" main z tych kolizji to piszcie. W następnym poście chcę już umieścić wersję demo, więc jak macie jakieś uwagi w jakiejkolwiek sprawie to proszę o wyrażenie opini, które napewno wezmę pod uwagę :)
Kod i więcej mojego kazania na blogu http://stecboss.blogspot.com/ (http://stecboss.blogspot.com/)

Funkcja poruszająca bitampą działa w taki sposób:
Po każdym obiegu pętli gry wycina "pasek" z góry ekranu, na jego miejsce przesuwa całą bitmapę czyli o 1 piksel do góry, po przesunięciu bitmapy o 1 piksel w górę zostaje nam pusty  pasek u samego dołu i owa funkcja wstawia wycięty pasek na sam dół ekranu.
(http://img709.imageshack.us/img709/4527/tloh.png)

Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Barthap w Październik 09, 2010, 10:16:06
ja u siebie w jednym projekcie w allegro zrobiłem sobie klasę CObiektGry, w niej przechowywałem jej wymiary oraz funkcję odpowiadającą za kolizje.
Kod: (cpp) [Zaznacz]
class CObiektGry
{
public:
 int x, y, szer, wys;
 bool Kolizja(CObiektGry &obj)
 {
  return kolizja(x, y, szer, wys, obj.x, obj.y, obj.szer, obj.wys); //funkcja kolizja z easyKoder
 }
 //...
};
I wywołujesz to
if(postac.Kolizja(wrog))

Drugi sposób to zrobić funkcję void Kolizje() i w niej umieścić wszystkie kolizje z maina, a następnie zamiast tych wszystkich kolizji w mainie wywołujesz tam tą funkcję. Poprawi to czytelność kodu.

EDIT:
Można prosić o najnowszą wersję gry do pobrania? Bo chcę zobaczyć ruchome tło w akcji, a w downloadzie jest tylko stara wersja.
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: stecboss w Październik 09, 2010, 16:28:25
Właśnie pracuję nad podziałem tego wszystkiego na pliki nagłówkowe i robię porządek w main, więc nie będę sobie robił wstydu i wrzuce wszystko, czyli gotowe, grywalne demo do końca przyszłego tygodnia :)
Tytuł: Space destroyer demo
Wiadomość wysłana przez: stecboss w Październik 12, 2010, 20:46:07
Wyrobiłem się i dodałem grywalne demo. Gra ma 10 etapów, ostatni kończy się bossem.
Liosan z forum podał mi link do bloga z grafikami za co serdeczne dzięki i demo kończy się  po zabiciu tego oto bossa:
(http://img229.imageshack.us/img229/6435/boss3.png)

 Nie będę się tutaj rozpisywał bo wszystko jest na blogu. Przedstawiłem(tymczasową) graficzną reprezentację obiektów.
Gierka oczywiście nie jest dopracowana, zamieszczam demo aby poznać Wasze opinie co do ewentualnych zmian, czy się Wam podoba.
Wszystko jest na blogu http://stecboss.blogspot.com/ (http://stecboss.blogspot.com/)
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: .Dexter. w Październik 12, 2010, 22:43:03
Mi się podoba, dobra robota! :)
Trochę długawe te poziomy i mało zróżnicowane, ale żadnych błędów podczas gry nie zauważyłem, za to plus. Motywujesz mnie to ruszenia tyłka i wzięcia się za jakiś projekt :P Gratuluję!
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: stecboss w Październik 31, 2010, 15:18:20
Zrobiłem menu w grze. Miało być w ALLEGRO GUI ale jakoś mało miałem czasu żeby ogarnąć tą biblioteczkę i zrobiłem w samym ALLEGRO. Jak narazie działa nowa gra, powrót do gry i wyjście.
Pomoc jest przeznaczona na opisanie sterowania, rozgrywki i wszystkich elementów występujących w grze.
Dodałem noe ruchy wroga v_hard. Niestety w grze grafika nie powala ale jeszcze nie zakończyłem projektu i może znajde fajne bitmapy :)
Oto screen menu:
(http://img229.imageshack.us/img229/5338/nowyobrazmapabitowavu.png)
i samej gry:
(http://img713.imageshack.us/img713/8642/nowyobrazmapabitowa2q.png)

Więcej info, kod gry i proces powstawania gry http://stecboss.blogspot.com/ (http://stecboss.blogspot.com/)
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Speedhero2 w Październik 31, 2010, 15:30:28
Dobry jesteś  ;D
Ale zamiast robota daj statek  :P
Tytuł: Space destroyer-menu
Wiadomość wysłana przez: stecboss w Listopad 09, 2010, 20:50:44
Skończyłem menu w grze. Może nie wygląda ładnie ale spełnia założone funkcje.
Dodałem także inne, ładniejsze bitmapy i poprawiłem błąd z "powrotem do gry".
Do zakończenia projektu zostało już niewiele i do tygodnia powinienem skończyć grę.

Oto screen menu:
(http://img529.imageshack.us/img529/5338/nowyobrazmapabitowavu.png)

screeny menu->pomoc:
(http://img168.imageshack.us/img168/2871/nowyobrazmapabitowat.jpg)

(http://img152.imageshack.us/img152/6229/sdsdsdy.jpg)

(http://img602.imageshack.us/img602/9725/sdsadsa.jpg)

i przykładowy screen gry:

(http://img233.imageshack.us/img233/3295/sdsdor.jpg)

Więcej info: http://stecboss.blogspot.com/ (http://stecboss.blogspot.com/)
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Anonim w Listopad 09, 2010, 21:42:00
Nieźle, ale grafika jest strasznie nieczytelna. Wszystko się zlewa! Popracuj trochę nad tym.
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: stecboss w Listopad 12, 2010, 21:00:15
Do zakończenia gry zostały 2 dni. Od ostatniego posta GUI się znacznie zmieniło, jak i interfejs gry.
Wiele osób (nawet na forum Anonim) napisało, że gra jest fajna ale pod względem grafiki kuleje, więc kolega-grafik przyszedł z pomocą ;p
Do zrobienia pozostały małe niedociągnięcia i w ciągu 2 dni wszystko zostanie dopracowane.
Oto przykładowe screeny:
(http://img576.imageshack.us/img576/9237/nowyobrazmapabitowao.jpg)

(http://img201.imageshack.us/img201/4221/2323s.jpg)

i z gry:
(http://img830.imageshack.us/img830/2439/now23towa3.jpg)

Więcej info, screenów i fragmenty kodu na blogu http://stecboss.blogspot.com/ (http://stecboss.blogspot.com/).
Za 2 dni napiszę podsumowanie i umieszczę gotową wersję gry :)
Wszelkie komentarze mile widziane :)
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Anonim w Listopad 12, 2010, 21:35:46
No, teraz wyglada lepiej :) Statki chcesz zmienic jeszcze?
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: stecboss w Listopad 12, 2010, 21:38:45
No chciałbym gdyby były gotowe grafiki... Jeżeli znasz jakiąś stronkę, bloga z grafikami to daj link :)
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Xirdus w Listopad 12, 2010, 23:33:50
Znalazłem potencjalnego buga: laser, czyli trzecia broń, jest dużo silniejszy od miotacza ognia, a mimo to jest wcześniej. Dodatkowo, niszczy wszystko jednym strzałem, łącznie z bossem. Trzeba to jakoś naprawić. Oprócz tego, dobrze by było zmniejszyć zapas amunicji dla niego.

Z innej beczki: jakiego IDE używasz?
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: stecboss w Listopad 13, 2010, 10:36:37
Fajnie, że poświęciłeś chwilę i znalazłeś tego buga...
We wcześniejszych wersjach wartości mocy poszczególnych broni były podstawione "na oko". Wczoraj ustwawiłem moce broni tak, aby odwzorywały w jakimś stopniu pozycję broni np. broń 1 jest słabsza od 2 itd.
Moc lasera jest większa od karabinu, a zarazem mniejsza od miotacza ognia.
Także zmieniłem ilość dodawanych naboi po zdobyciu "skrzynki" z amunicją. Bazooka +40; ... laser +25.
Koncepcja lasera właśnie taka była aby jego pocisk przelatywał przez wszystko aż wyjdzie za planszę.
Miotacz ognia niszczy wszystko, wraz z pociskami wrogów, co służy jako obronę.
Jeżeli chodzi o IDE to hmmm wstyd pisać (koledzy mnie mieszają z błotem, że nie przesiadłem się na visual studio i nadal piszę w "topornym devie") ale grę pisałem w Dev-C++... Następne prace będą w VS bo jednak programista co pisze w Devie, a nie zna Visuala no to hmmmm, no właśnie nie wiem jak to nazwać ;p
Xirdus dzięki za uwagę :)
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: Xirdus w Listopad 13, 2010, 13:25:44
Nie ma za co ;)

Przejrzałem twój kod i zauważyłem jedną rzecz: masz jeden plik źródłowy i wszystko pakujesz w nagłówki. Nie tak się robi. W nagłówkach daje się tylko deklaracje funkcji, definicje klas i ewentualnie externy. Kod samych funkcji pisze się w pliku źródłowym. Zmniejsza to szanse na błędy redefinicji przy linkowaniu.

Oprócz tego, warto zaopatrzyć nagłówki w tzw. wartowników. Są to makra, które chronią przed wielokrotnym dołączaniem nagłówka w tej samej jednostce kompilacji. To zaś zmniejsza szanse na błędy redefinicji przy kompilacji. Nie jest to trudno zrobić, wystarczy na początku pliku takie coś:
#ifndef NAZWAPLIKU_H
#define NAZWAPLIKU_H
A na końcu #endif.

Co do IDE, to jeśli nie chcesz się uczyć narazie Visuala, to polecam ci użyć Code::Blocks. Interfejsem jest zbliżony do Dev-CPP, a posiada wiele dodatkowych niezbędnych funkcji, jak np. debugger czy różne targety. A migracja z dev na cb jest bardzo prosta, wystarczy tylko otworzyć projekt deva przez Code::Blocks. Potem jeszcze tylko dodać ścieżki do libów i headerów allegro.
Tytuł: Odp: Space destroyer
Wiadomość wysłana przez: stecboss w Listopad 14, 2010, 17:00:18
Gra jest już ukończona.
Na blogu dodałem trailer z gry(niestety kiepsko wyszedł ale zawsze w jakiś sposób pokaże o co chodzi)
Gra jest do pobrania na blogu http://stecboss.blogspot.com/ (http://stecboss.blogspot.com/)
Zachęcam do testowania i wyrażania opinii i sugestii(za które będę bardzo wdzięczny) na blogu lub tutaj.
Tytuł: Odp: [done] Space destroyer
Wiadomość wysłana przez: lolmen w Listopad 15, 2010, 21:44:54
W sumie fajna gierka ale po jakimś 15 etapach robi się nudna. Przydałoby się kilka innych bonusów i możliwość zwiększenia mocy broni. Gdyby popracować nad grafiką statków to byłoby już elegancko.
Ale jak piszesz, że to Twoja 1-wsza gra to naprawdę fajnie wyszło  8)
Tytuł: Odp: [done] Space destroyer
Wiadomość wysłana przez: Kos w Listopad 15, 2010, 21:57:13
Ale jak piszesz, że to Twoja 1-wsza gra to naprawdę fajnie wyszło  8)

1-wsza gra, skończona, z grafiką, kompletna!? To nie jest 'naprawdę fajnie', to jest wyczyn, który wychodzi mało komu! :)
Tytuł: Odp: [done] Space destroyer
Wiadomość wysłana przez: stecboss w Listopad 16, 2010, 17:59:55
Co do lepszej grafiki to niestety nie jestem grafikiem i ograniczam się do istniejących już bitmap...
Faktycznie gra nudzi się po jakimś czasie ale samemu ciężko jest zrobić grę aby ktoś chciał poświęcić przy niej więcej czasu. Co do bonusów i zwiększania mocy broni to te aspekty napewno by polepszyły grywalność i atrakcyjność gry ale prawdę mówiąc nie chce mi się poświęcać więcej czasu na ten projekt i musiałbym przebudować większą część kodu(gra nie jest napisana czysto obiektowo). Napewno fajną opcją byłby multiplayer i możliwe, że w niedalekiej przyszłości dorobię taką możliwość :)
Ale jak na 1-szy, większy projekcik to i tak jestem z niego zadowolony, bo wcześniej ograniczałem się do prostych aplikacji w stylu kalkulator...
Dzięki za Wasze opinie, które pokazują, że moja praca została odebrana pozytywnie przez kogoś i to mnie motywuje mnie do dalszej pracy  ;)
Tytuł: Odp: [done] Space destroyer
Wiadomość wysłana przez: stecboss w Listopad 23, 2010, 20:43:06
Sorry za post pod postem...
Mój projekt od początku bierze udział w konkursie programistycznym na najlepszą aplikację.
Pozytywnie przeszedł I-etap i został zakwalifikowany do finału :)
Jeżeli komuś z Was przypadł do gustu to proszę o głos :)

Oto lista finalistów konkursu, ich prace i opis konkursu:
http://www.maciejaniserowicz.com/post/2010/11/23/Publiczna-ankieta-Daj-Sie-Poznac-juz-dostepna!.aspx
głosujemy tutaj wybierając 3 (minimum 2) najlepsze projekty :
http://dajsiepoznac.devmedia.pl/więcej info jak głosować http://stecboss.blogspot.com/ (http://stecboss.blogspot.com/)
Sorry za offtop i mały spam :-[
Jeżeli ktoś odda na mnie głos to wielkie dzięki :))