[#31] Re: Dune 3: Return of the Guild

@Rafael/ARMO, post #30

Zgadzam sie. Chce pisac? Niech pisze. Chce opracowywac swoje rozwiazania? Niech opracowuje. Jego czas... Ktos nie chce mu pomagac? Niech nie pomaga, ale milczy a nie smieje sie...

Ja tez jakis czas temu robilem swoja biblioteke funkcji ktore wspomagaly tworzenie czegos tam w trybie 13h... Po co? a no dla frajdy i tyle... Wiedzialem ze to przezytek ale rozwinelo mnie to w jakis sposob. A ze nie bylo uzyteczne? Nauka wszystkich stolic swiata tez nie jest uzyteczna a rozwija pamiec...

[#32] Re: Dune 3: Return of the Guild

@Rafael/ARMO, post #30

Rafael/ARMO napisał(a):

> Ja to widzę inaczej, widzę kogoś kto właśnie sam "tworzy" młot
> żeby
> rozbić scianę, a w tym niema nic złego bo dzięki temu może
> wymyślić
> całkiem nowy młot z nowymi możliwościami.

Nie znam się na programowaniu jakoś szczególnie, ale z tego co czytam chłopaków, którzy jednak wiele zrobili i nie mam podstaw wątpić w ich umiejętności, oraz wiedzę w temacie, to on raczej nie wymyśla nowego młota, tylko czepek na głowę, żeby mniej bolało bicie nią w ścianę. W dodatku marnej jakości, bo lateksowy, który raczej średnio zadanie ochronne w przypadku kontaktu ze ścianą sprawuje.

[#33] Re: Dune 3: Return of the Guild

@abcdef, post #29

Co do zaginania przestrzeni generatorami holtzmana to coś mi się wydaje że sam Herbert ani razu o tym nie wspominał. Za to w Heretykach raz napomknął że dzięki przyprawie można było zaginać przestrzeń ... jak to było wykonane o tym już nie wspominał. A co do Czcigodnych Macierzy to zawsze mi się wydawało że powstały z Missionaria Protectiva które zostały wysłane wraz z rozproszeniem. Ale widać w tym wypadku musiałem się gdzieś zamotać ;).

[#34] Re: Dune 3: Return of the Guild

@GumBoy, post #32

...

Ten post z odpowiedziami został przeniesiony do działu Rzeźnia


Administracja silnie sugeruje jego kontynuowanie właśnie tam, jakiekolwiek dalsze występy w tym tonie tutaj będą nagradzane tygodniowym banem.
[#35] Re: Dune 3: Return of the Guild

@jimiche, post #33

Zależy który Herbert, Frank czy Brian! :) Czcigodne powstały z kobiet bene tleilexu które wieki były wykorzystywane jako zbiorniki axlotlowe - a wybudzone zostały przez te bene geneserit które wysłane zostały w różne zakamarki kosmosu podczas rozproszenia ;) Stąd też żądza dominacji nad mężczyznami i silna agresja przeciw mistrzom tleilexu. Tyle w każdym razie jest napisane w najnowszych odsłonach serii.
[#36] Re: Dune 3: Return of the Guild

@Minniat, post #1

Siemka,
Jestem co prawda bardzo poczatkujacy jesli chodzi o kodowanie pod Amiga, jednak z tego co analizowalem kody zrodlowe demek obecnie powstajacych na amige zauwazylem, ze prawie nikt nie korzysta z systemowych funkcji blitowania.
Zazwyczaj rysowanie efektow dem odbywa sie w jednym lub kilku buforach chunky, ktore potem konwertowane sa szybka rutynka c2p (w gruncie rzeczy to tylko bitowa rotacja o 90 stopni), kopiowane do chip ramu (to juz mozna zrobic systemowa funkcja, tak zeby w przypadku braku chip ramu w nowszych maszynach program sie nie wywalal), i blitowanie na pamiec ekranu przy pomocy blittera, potem ew. dodatkowe efekty przy uzyciu coppera.
Oczywiscie skoro gra ma dzialac takze na nowym sprzecie nie ma sensu uzywac bezposrednio ukladow specjalizowanych, a generowanie obrazow pozostawic procesorowi.
Wszyscy wiemy, ze praca w trybie chunky jest bardzo prosta i przyjemna, dodatkowo zyskujesz wieksza kompatybilnosc z systemami RTG (wszystkie sa chunky)... A konwersja z chunky do planar jest naprawde szybka

[#37] Re: Dune 3: Return of the Guild

@abcdef, post #35

Tak też myślałem niestety poza Dzihadem nie czytałem nic innego Brian.

[#38] Re: Dune 3: Return of the Guild

@Czarek, post #36

to o czym piszesz jest niezgodne z zasadami kodowania na amigę.

Programy powinny odpalać sie w okienku workbencha jeśli jest wymagane inny ekran należy stworzyć ekran systemowy dowolnie promowalny.

[#39] Re: Dune 3: Return of the Guild

@rzookol, post #38

To jest juz etap koncowy wyswietlania. Ja pisalem o tym co sie dzieje przed wyswietleniem obrazu na ekran. Bufory chunky mozna wyswietlac bezposrednio do bufora video RTG, albo przez c2p na bitplany amigi. Jak zapewne wiesz okienka tez maja swoje bitplany, albo bitmapy. Co stoi na przeszkodzie aby obrazek wyswietlic w okienku? Jest wiele demek, ktore w ten sposob dzialaja... Oczywiscie zdecydowana wiekszosc chodzi tylko na full screenie, ale spokojnie promuja sie na monitorach VGA - nikt nie jest juz na tyle glupi, zeby sprzetowo zmieniac rozdzielczosc, duzo prosciej i bezpieczniej jest otworzyc sobie screena w wymaganej konfiguracji ;)

[#40] Re: Dune 3: Return of the Guild

@rzookol, post #7

Zapraszam na stronę poświęconą projektowi Dune 3, Kopia tego kodu zawiera się na mojej stronie, tam też będę umieszczał postępy w pracach, a tutaj raczej podawał tylko odnośniki.
http://minniatian.republika.pl/Dune3/Dune3.html

Może zacznijmy od czegoś bardzo prostego. Są to dwie klasy C++: icon i map razem z metodami operującymi na nich (tylko opis implementacji) - kod rysuje ikonę o podanym typie, rysuje całą mapę, generuje losowo mapę, wczytuje mapę z pliku + akcesory typu ikon. Określona będzie globalna tablica typów ikon icon icontype[] oraz RastPort okna.
class icon
{
private:
	UWORD icontype; // rodzaj ikonki
	struct BitMap iconbm;	// bitmapa ikonki
public:
	icon();
	void Create_Icon(UWORD type, struct BitMap bm);
	void Draw_Icon(int x, int y);
	UWORD Obtain_Icontype();
};

class map
{
private:
	icon map[64][64]; // mapka składająca się z ikonek
public:
	map();
	void Generate_Map(int seed);
	void Load_Map(int file);
	void Draw_Map(int startx, int starty);
	icon Obtain_Icon(int x, int y);
	void Set_Icon(int x, int y, icon icon);
};

icon :: icon()
{
	// Konstruktor, tworzy domyślną ikonę
}

void icon :: Create_Icon(UWORD type, struct BitMap bm)
{
	// akcesor, ustawia typ i bitmapę ikony
}

void icon :: Draw_Icon(int x, int y)
{
	// Rysuje ikonkę o podanym typie w pozycji x, y
}

UWORD icon :: Obtain_Icontype()
{
	// akcesor typu ikonki
}

map :: map()
{
	// konstruktor, tworzy czystą mapę
}

void map :: Generate_Map(int seed)
{
	// akcesor, generuje mapkę przypisaną danemu numerowi seed
}

void map :: Load_Map(int file)
{
	// akcesor, wczytuje mapkę z pliku o numerze file
}

void map :: Draw_Map(int startx, int starty)
{
	// Rysuje mapkę w oknie w bieżącej pozycji
}

icon map :: Obtain_Icon(int x, int y)
{
	// Akcesor ikony w podanej pozycji
}

void map :: Set_Icon(int x, int y, icon icon)
{
	// Wstawia ikonę w podanej pozycji
}
Implementacja jest banalna (oprócz generowania losowego mapy). Rysowanie ikony to po prostu BltBitMapRastPort() z BitMapy ikony na RastPort okna. Bardzo proszę o konstruktywne komentarze. Pytam też czy to dobry pomysł umieszczania tutaj fragmentów kodu - myślę, że lepiej jak będę umieszczał kod na mojej stronie, a tutaj podawał tylko odnośniki.

[#41] Re: Dune 3: Return of the Guild

@GumBoy, post #32

GumBoy napisał(a):

> Rafael/ARMO napisał(a):
>
> > Ja to widzę inaczej, widzę kogoś kto właśnie sam "tworzy"
> młot
> > żeby
> > rozbić scianę, a w tym niema nic złego bo dzięki temu może
> > wymyślić
> > całkiem nowy młot z nowymi możliwościami.
>
> Nie znam się na programowaniu jakoś szczególnie, ale z tego co
> czytam chłopaków, którzy jednak wiele zrobili i nie mam podstaw
> wątpić w ich umiejętności, oraz wiedzę w temacie, to on raczej
> nie wymyśla nowego młota, tylko czepek na głowę, żeby mniej
> bolało bicie nią w ścianę. W dodatku marnej jakości, bo
> lateksowy, który raczej średnio zadanie ochronne w przypadku
> kontaktu ze ścianą sprawuje.

A ja wręcz przeciwnie znam się na programowaniu i na jej wielu aspektach.
Swoje zdanie wyrażam na podstawie mojego doświadczenia i wiedzy, a nie
na stwierdzeniach innych osób, które oczywiście mogą mieć inne zdanie.

[#42] Re: Dune 3: Return of the Guild

@jimiche, post #25

to moze dasz graczowi do wyboru tez fremenow.
[#43] Re: Dune 3: Return of the Guild

@Rafael/ARMO, post #41

A ja wręcz przeciwnie znam się na programowaniu i na jej wielu aspektach.
Swoje zdanie wyrażam na podstawie mojego doświadczenia i wiedzy, a nie
na stwierdzeniach innych osób, które oczywiście mogą mieć inne zdanie.


I to zdanie wyrażasz nawet nie próbując z tym zawodnikiem wchodzić w dyskusję... ;)
Więc jakby na to nie patrząc również nie masz pełnego obrazu. ;)

[#44] Re: Dune 3: Return of the Guild

@Minniat, post #40

Minniat napisał(a):

> class icon
> {
> private:
> UWORD icontype; // rodzaj ikonki
> struct BitMap iconbm; // bitmapa ikonki
> public:
> icon();
> void Create_Icon(UWORD type, struct BitMap bm);
> void Draw_Icon(int x, int y);
> UWORD Obtain_Icontype();
> };
>
> class map
> {
> private:
> icon map[64][64]; // mapka składająca się z ikonek
> public:
> map();
> void Generate_Map(int seed);
> void Load_Map(int file);
> void Draw_Map(int startx, int starty);
> icon Obtain_Icon(int x, int y);
> void Set_Icon(int x, int y, icon icon);
> };

- zamiast mapy (memeber map) o stałej wielkości może użyj dynamicznej (za pomocą new)
- pozatym wydaje mi się że dobrze by było abyś odcią cześć implementacji
rysowania od logiki (abstrakcji), zrób sobie klasy bazwowe map, icon z metodami czysto wirtualnymi,
otrzymasz dzięki temu klasy typu interfejsowego, z których dopiero wydziedzicz sobie map i icon
bazujące na funkcjach i strukturach BitMap

[#45] Re: Dune 3: Return of the Guild

@MinisterQ, post #43

MinisterQ napisał(a):

> A ja wręcz przeciwnie znam się na programowaniu i na jej
> wielu aspektach.
> Swoje zdanie wyrażam na podstawie mojego doświadczenia i
> wiedzy, a nie
> na stwierdzeniach innych osób, które oczywiście mogą mieć inne
> zdanie.

>
> I to zdanie wyrażasz nawet nie próbując z tym zawodnikiem
> wchodzić w dyskusję... ;)

A o którego zawodnika Ci chodzi? ;) o GumBoy 'a?

> Więc jakby na to nie patrząc również nie masz pełnego obrazu. ;)

Nie twierdzę że mam pełny obraz i tez nie uważam że "wiem lepiej",
ale taka dyskusja dot. programowania z kimś kto sam przyznaje
że się na tym nie zna za bardzo i nie używa konkretnych argumentów
dla mnie nie ma sensu.
Tym bardziej że Minniat założył konkretny wątek w konkretnym dziale,
a zamiast konkretnych porad/odpowiedzi zaczęły się głupie docinki "wielkich"
znawców tematu. Jak ktoś chce sobie podyskutować na temat Minniat'a
i jego podejścia do tworzenia to niech założy sobie wątek w HydeParku.

Co do wyrażanego przez Ciebie stwierdzenia że Minniat jest oporny na sugestie .....
... hmm gdyby był tak oporny jak piszesz nie dawał by postów w tym dziale zadając pytania.
Kiedyś o ile pamiętam wolał ASM, AGA i rzeźbienie po prawie gołej A1200,
a po testach i weryfikacji swoich poglądów oraz po radach,
teraz jak widzisz Minniat już woli C/C++, kartę graficzną, programowanie
pod system i to nie klasykowy tylko OS4.
Więc to są chyba rzeczy o które również Ty nieraz postulowałeś?

[#46] Re: Dune 3: Return of the Guild

@Rafael/ARMO, post #45

Rafael/ARMO napisał(a):

> ale taka dyskusja dot. programowania z kimś kto sam przyznaje
> że się na tym nie zna za bardzo i nie używa konkretnych
> argumentów
> dla mnie nie ma sensu.

Nie dyskutuję z nim o programowaniu, ale o licencji, której nie posiada. Dyskutowałem z nim również na przykład o Windowsie (i rzekomym braku zmiennych środowiskowych w nim, oraz kilku innych bzdur, które Minniat wypisał).

> Co do wyrażanego przez Ciebie stwierdzenia że Minniat jest
> oporny na sugestie .....
> ... hmm gdyby był tak oporny jak piszesz nie dawał by postów w
> tym dziale zadając pytania.

Jeszcze raz zachęcam do poczytania starszych wątków z Minniatem i programowaniem w roli głównej. Z reguły zaczyna się od pytania, a po otrzymaniu sugestii on i tak wie lepiej i idzie w zaparte po swojemu. Myślisz, że docinki o bobach, AGA itp. wzięły się z kosmosu?

Zresztą dyskutowałeś już z nim, żeby wiedzieć cokolwiek o jego odporności na sugestie?

[#47] Re: Dune 3: Return of the Guild

@Rafael/ARMO, post #44

Zatem według Twojej sugestii mógłbym napisać tak:

// klasa bazowa icon z wirtualnymi metodami

class icon
{
public:
icon();
virtual void Create_Icontype(UWORD num, struct BitMap bm);
virtual void Draw_Icontype(int x, int y);
virtual UWORD Obtain_Iconnum();
};

// klasa opisująca konkretną ikonę

class icontype : public icon
{
protected:
UWORD iconnum;
struct BitMap iconbm;
public:
icontype();
void Create_Icontype(UWORD num, struct BitMap bm);
void Draw_Icontype(int x, int y);
UWORD Obtain_Iconnum();
};

Teraz mógłbym tworzyć tablicę typów ikon poprzez:

icontype *icontypes;
icontypes = new icontype[ICON_COUNT];

Następnie mogę inicjować konkretną ikonę nr "k" poprzez:

icontypes[k]->Create_Icontype(k, iconbm[k]);

A teraz rysować ikonę wskazywaną przez icon *curicon zainicjalizowaną na wskaźnik do klasy icontype poprzez:

curicon->Draw_Icontype(x, y); // wywoływana jest poprawna metoda klasy icontype ponieważ metoda klasy icon jest wirtualna

Tutaj klasa map zmieniona pod kątem klas icon i icontype:

class map
{
protected:
icon *map;
public:
map();
void Generate_Map(int seed);
void Load_Map(int file);
void Draw_Map(int x, int y);
icontype Obtain_Icontype(int x, int y);
void Set_Icon(int x, int y, icontype newicon);
};

Przy czym map będzie alokowane w analogiczny sposób czyli:

map = new icontype[MAP_WIDTH * MAP_HEIGHT];

Czy o to Ci chodziło?



Ostatnia modyfikacja: 26.11.2008 15:48:55
[#48] Re: Dune 3: Return of the Guild

@Minniat, post #47

Teraz rzeczywiście, sprawa rysowania ikonek się uprości mianowicie np.

map mymap;

Konstruktor alokuje mapę (icon *map) składającą się z egzemplarzy klasy icon poprzez:

map :: map()
{
map = new icontype[MAP_WIDTH * MAP_HEIGHT];
}

Zatem, żeby narysować konkretną ikonkę z mapy to trzeba napisać:

icon curicon = mymap.Obtain_Icontype(x, y);
curicon.Draw_Icontype(x, y);

Zatem użycie dziedziczenia i metod wirtualnych znakomicie oddzieliło klasę ikona czyli element mapy od klasy typ ikony.



Ostatnia modyfikacja: 26.11.2008 17:31:28
[#49] Re: Dune 3: Return of the Guild

@jimiche, post #25

tez sie znam na programowaniu niestety he he he ,moje 10 gier lezy odlogiem bo nie moge sie zabrac za zakonczenie ich,ale co do pisania to prawda jest taka ze jak jest 10 programistow to kazdy moze sobie napisac kod jak chce i tak bedzie dzialac,co do gier to z doswiadczenia wiem ze trzeba pisac pisac i pisac gre chocby nie wiem co.jak sie skonczy jedna gre to mozna zaczac nastepna bo w innym przypadku nie ma szans na skonczenie jakiejkolwiek gry.wiec minimant zamiast toczyc dyskusje pisz pisz i jeszcze raz pisz.
[#50] Re: Dune 3: Return of the Guild

@SzaryWilk, post #49

Zgadzam się z Tobą SzaryWilku. W moim wypadku kiedy piszę grę bądź program to staram się go dokończyć zanim zabiorę się za inny. Projektów za to mogę mieć kilka. Polecam Tobie spróbować zabrać się za jedną z tych 10 gier i dokończyć ją. Rafael/ARMO proponuje mi inne rozwiązania, dzięki którym mój program może działać lepiej. Cały czas piszę tę grę, chciałem stworzyć temat by podzielić się tym co robię i skonsultować pewne sprawy.

Do tego dochodzi styl programowania. Przykładowo edytor do Benefactora napisałem ostatecznie w ten sposób, że napisałem kilka małych programów (podzadań), które wykonują konkretne funkcje, a następnie połączyłem to w dość duży program. Rezultaty okazały się bardzo dobre - w krótkim czasie połączyłem wszystko w całość i stworzyłem działający program.

Obecnie piszę tę strategię w sposób zaproponowany przez kolegów, to znaczy piszę najpierw logikę gry. Jako pierwszy aspekt wybrałem mapkę składającą się z ikon. Ten element gry można rozwijać dowolnie w trakcie rozbudowy programu, np. o skrolowanie mapy (po prostu wyświetlenie komórek poczynając od innej pozycji), wyświetlanie struktur (czyli zbioru komórek) i animowanie ich albo tworzenie efektów w postaci kraterów od wybuchów bądź wzbogacenie klasy icontype o tzw. overlay czyli np. przyprawę, która znika po zebraniu jej przez żniwiarkę.



Ostatnia modyfikacja: 27.11.2008 06:18:51
[#51] Re: Dune 3: Return of the Guild

@Minniat, post #48

Spróbowałem skompilować ten kod i dostałem straszne błędy konsolidacji. Po czym postanowiłem zmienić jednak kod. Klasa icontype nie będzie teraz wyprowadzana z klasy icon tylko będzie stanowić jej składnik (w sumie logiczne :))
class icontype // rodzaj ikony (np. piach, skała itp.)
{
private:
   UWORD iconnum; // numer rodzaju ikony
   struct BitMap iconbm; // bitmapa ikony (do rysowania)
public:
   icontype();
   void Create_Icontype(int num, struct BitMap bm); // tworzy nowy rodzaj ikony
   void Draw_Icontype(int x, int y); // rysuje ikonę w podanej pozycji
   UWORD Obtain_Iconnum(); // pobiera numer rodzaju ikony
};

class icon // ikona (np. element mapy)
{
private:
   icontype *type; // wskaźnik do rodzaju ikony
public:
   icon();
   void Set_Icontype(icontype *newtype); // ustawia wskaźnik do rodzaju ikony
   icontype *Obtain_Icontype(); // pobiera wskaźnik do rodzaju ikony
};
Przykład wykorzystania klas:
void icontest()
{
   icon newicon; // nowa ikonka
   icontype rock, *newicontype; // skała i typ nowej ikony
   struct BitMap rockbm; // bitmapa skały

   rock.Create_Icontype(1, rockbm); // utwórz nowy typ ikony - skała
   newicon.Set_Icontype(&rock); // ustaw typ nowej ikony na skałę
   newicontype = newicon.Obtain_Icontype(); // pobierz typ nowej ikony
   newicontype->Draw_Icontype(0, 0); // narysuj nową ikonę
}
Implementacja metod jest prosta. Teraz kod przykładowy kompiluje się bez problemów. Pozdrawiam :)

[#52] Re: Dune 3: Return of the Guild

@SzaryWilk, post #49

SzaryWilk napisał(a):

> do pisania to prawda jest taka ze jak jest 10 programistow to
> kazdy moze sobie napisac kod jak chce i tak bedzie dzialac,

A wydajność i awaryjność to oczywiście się nie liczy. Ważne, że działa.

[#53] Re: Dune 3: Return of the Guild

@GumBoy, post #52

cale to przedsiewziecie to ....
http://www.youtube.com/watch?v=tAmzl0u6mVc&feature=related
[#54] Re: Dune 3: Return of the Guild

@selur, post #53

Twój SerSoft powinien mnie jednak wesprzeć o ile znasz się na C/C++. ;).
Oto mój plan programu według plików źródłowych:

I) cellmap.cpp - obsługa mapy złożonej z cegiełek
1) inicjalizacja wszystkich typów cegiełek np. skała, wydmy itp.
a) dodanie przyprawy jako atrybut cegiełki z piaskiem
2) tworzenie mapy z cegiełek na podstawie pliku z mapą
3) rysowanie całej mapy złożonej z cegiełek (część globalnego rysowania)
4) modyfikacja cegiełek np. budynki, kratery od wybuchów, koleiny itp.
czyli wszystko co dotyczy cegiełek.

II) structures.cpp - obsługa budynków
1) inicjalizacja wszystkich rodzajów budynków i ich statystyk
2) tworzenie listy budynków
3) obsługa wszyskich budynków np.
a) fabryki - postęp w budowie, postęp modernizacji
b) rafineria - pobieranie przyprawy
c) warsztat - postęp w reperacji jednostki
d) starport - czas pozostały do przysłania fregaty
f) działka obronne - szukanie celu, obrót działka i wystrzał
4) uszkadzanie budynków, reperacja budynków

III) units.cpp - obsługa jednostek
1) inicjalizacja wszystkich rodzajów jednostek i ich statystyk
2) tworzenie listy jednostek
1) obsługa wyświetlania jednostek (część globalnego rysowania)
2) ruch jednostek, obrót jednostek, status jednostek
a) zbieranie przyprawy przez żniwiarkę
3) szukanie celu dla jednostek
4) tworzenie pocisków, ruch pocisków, zadawanie obrażeń

IV) GUI.cpp - interfejs użytkownika
1) inicjalizacja wszystkich rodzajów przycisków
2) tworzenie GUI
3) obsługa wiadomości
4) obsługa myszy, klawiatury
a) zaznaczanie jednostek, wydawanie rozkazów
b) budowanie jednostek, budynków
c) stawianie budynków
d) obsługa zaznaczonych jednostek
e) graficzny postęp w budowie, reperacji, modernizacji itp.

V) gfxeffects.cpp - graficzne efekty specjalne
1) inicjalizacja wszystkich rodzajów efektów specjalnych
2) efekty specjalne jak
a) wybuchy
b) zniszczone jednostki
3) wyświetlanie, animacja efektów graficznych (część globalnego rysowania)

VI) sndeffects.cpp - efekty dźwiękowe
1) inicjalizacja wszystkich rodzajów efektów dźwiękowych
2) obsługa sampli
3) użycie efektów dźwiękowych w konkretnych sytuacjach

VII) AI.cpp - sztuczna inteligencja
1) zachowanie się komputera w grze
2) wydawanie przez komputer rozkazów własnym jednostkom
3) budowanie przez komputer budynków i jednostek
4) strategia komputera

Ten spis może ulec rozszerzeniu. Czy mógłbyś wybrać jakiś dział, w którym mi pomożesz?

[#55] Re: Dune 3: Return of the Guild

@GumBoy, post #46

GumBoy napisał(a):

Nieststy po raz kolejny podwątek musiał odjechać do Rzeźni... Jeszcze jedna taka recydywa i będę musiał sięgnąć po bardziej radykalne środki.

moderator


Ten post z odpowiedziami został przeniesiony do działu Rzeźnia
[#56] Re: Dune 3: Return of the Guild

@Minniat, post #54

Uwazam, ze nie dasz rady napisac takiej gry sam.
Oczywiscie istnieje cien szansy, ze moge sie mylic a jesli daj bog sie pomyle, to bede bil poklony przed toba ;)
[#57] Re: Dune 3: Return of the Guild

@selur, post #56

Dam radę o ile będę konsekwentnie realizował plan. Na razie piszę logikę gry to znaczy, że wyświetlanie pozostawiłem na później. Dzięki karcie graficznej zniknie moja największa zmora - szybkość animacji. Teraz nawet 20 czołgów na ekranie będzie szybko animowane.

/* Oto prawie wszystkie klasy obsługi komórek w Dune 3 zrewidowane pod kątem nowych elementów (overlay i script). Brak metod i implementacji, tylko dane składowe */

class icon // komórka (składnik mapy)
{
private:
icontype *type; // wskaźnik do typu komórki
iconoverlay overlay; // dodatkowe informacje (opis poniżej)
iconscript script; // specjalny skrypt (opis poniżej)
public:
//...
};

class icontype // typ komórki, określa dokładnie rodzaj komórki i jej obrazek
{
private:
int num; // indeks
struct BitMap icongfx; // grafika
public:
//...
};

class iconoverlay // dodatkowe informacje o komórce: przyprawa, ściana, beton.
{
private:
int spice; // ilość przyprawy
int wall; // wytrzymałość ściany
int concrete; // wytrzymałość betonu
public:
//...
};

class iconscript // specjalny skrypt dotyczy np. kolein po pojazdach, martwych żołnierzy, kraterów itp.
{
private:
iconscripttype *type; // wskaźnik do typu skryptu
int frame; // bieżąca klatka
public:
//...
};

class iconscripttype // typ skryptu. składa się z klatek i rodzaju komórki
{
private:
int num; // indeks
int len; // ilość klatek w skrypcie
icontype *type[10]; // typ komórki do wyświetlenia
int delay[10]; // opóźnienie
public:
//...
};



Ostatnia modyfikacja: 29.11.2008 19:26:52
[#58] Re: Dune 3: Return of the Guild

@Minniat, post #57

1.Proponuje grupowe zaznaczanie jednostek i jak się kliknie to od razu idą , a nie stosować jakieś menu(tak jak w d2).
2.Tak jak EBfD - bez płyt- będzie o wiele lepiej.
3.Jak by się dało budować tak ,żeby budynek nie musiał być przyklejony do reszty.
PS: Grafikę i dźwięk lepiej zostaw ze standardowego dune,
PPS:Może lepiej by było ,żeby Fremeni stanowili oddzielny ród/klan i byli sojusznikami Atrydów.
to tyle z mojej strony , życzę powodzenia.
[#59] Re: Dune 3: Return of the Guild

@Minniat, post #57

Mam do Ciebie małą uwagę techniczną, która pomorze Ci w opanowywaniu kodu, w miarę jak będzie rósł i pozwoli nieco zachować większą czytelność.
Mianowicie myślę że powinieneś stosować jakąś notację w nazewnictwie zmiennych, klas, metod i funkcji.

Jak zmienna jest składnikiem klasy używaj przedrostka m_, np.: m_NazwaZmiennej,
Jak zmienna jest typu wskażnikowego dodawaj przedrostek p, czyli pWskaznik
Jak zmienna jest tablicą używaj przedrostka a, czyli aTablica
Jak zmienna jest globalna niech jej nazwa ma przedrostek g_
Zmienne typu int miały by przedrostek i (dla indeksowych) lub n (dla reszty)
Niech nazwy klas maja przedrostek C
itd

czyli przykładowo Twoje klasy wyglądały by następująco:

class CIcon
{
private: // <-- To słowo kluczowe tu nie jest potrzebne bo class domyślnie ma private
CIconType *m_pType;
CIconOverlay m_Overlay;
CIconScript m_Script;
public:
//...
};

class CIconType
{
int m_iNum;
struct BitMap m_bmIconGfx;
public:
//...
};

Druga sprawa, myślę że mógłbyś się zainteresować STL'em, zestawem szablonów klas i funkcji które ułatwią Ci np.: zarządzanie tablicami dynamicznymi .. i wiele wiele innych. Na początek zainteresuj się szablonami: vector, list i pair.
http://pl.wikipedia.org/wiki/Standard_Template_Library

Inna sprawa może zainteresuj się książką pt.: C++ dla programistów gier, jest tam masę wskazówek dot właśnie nieraz tematyki gier RTS, opisy algorytmów etc. Polecam.
http://helion.pl/ksiazki/cpprog.htm

[#60] Re: Dune 3: Return of the Guild

@Rafael/ARMO, post #59

a skad masz grafe bo jakby mi sie chcialo to przerobilbym to na pc bo ty robisz na ami.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem