Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Kampfhund Super JLI'ler
Alter: 41 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 12.11.2002, 19:05 Titel: |
|
|
ja, anstatt "char" "sprite" |
|
Nach oben |
|
|
DarK Super JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 12.11.2002, 21:04 Titel: |
|
|
Code: |
Sprite textur[] = {blabla}
Sprite* textur[] = {blabla}
|
ergibt kein sinn...
wie kann ich das am besten machen? _________________ "Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."
"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."
"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun" |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 41 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 12.11.2002, 21:09 Titel: |
|
|
nein, du brauchst einen array mit den namen und einen array mit den sprites;
Code: |
char *SpriteNamen[] = {"alle namen","..",...}
Sprite *pSprites = NULL;
pSprites = new Sprite[105];
for(int i=0;i<105;i++)
{
pSprites[i].LoadFromFile(SpriteNamen[i]);
}
|
dann kannst du noch eine funktion schreiben:
Code: |
Sprite *GetSpriteByName(char *name)
{
for(int i=0;i<105;i++)
{
if(!strcmp(SpriteNames[i],name)
{
return pSprites[i];
}
}
return NULL;
}
|
|
|
Nach oben |
|
|
DarK Super JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 13.11.2002, 18:44 Titel: |
|
|
get nicht _________________ "Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."
"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."
"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun" |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 41 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 13.11.2002, 18:46 Titel: |
|
|
was für fehler kommen denn?
und wo? |
|
Nach oben |
|
|
DarK Super JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 13.11.2002, 18:49 Titel: |
|
|
error C2039: 'LoadFromFile' : is not a member of 'Sprite' _________________ "Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."
"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."
"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun" |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 41 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 13.11.2002, 18:52 Titel: |
|
|
ok, LoadFromFile ist ja auch keine funktion der klasse.
Ich hatte nur gedacht es gibt so eine.
Du musst die funktion angeben, die für das laden der sprites benutzt wird.
Ich glaube das ist die Create funktion.
Also pSprites[i].Create(...); |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 41 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 13.11.2002, 19:07 Titel: |
|
|
benutzt du das Beispiel vom Buch?
wenn ja:
willst du einfach eine Bitmap laden und speichern oder willst du einen ganzen gegner erstellen?
du musst wissen, das ein objekt vom typ Sprite ein ganzer Gegner ist.
Eine Bitmap/Textur dagegen wird im SurfaceManager gespeichert.
wenn du nur eine bitmap laden willst, dann kannst du auch einfach:
SurfManager.AddSurface("bilddateiname.bmp");
schreiben. Natürlich muss ein objekt vom typ SurfaceManager angelegt sein.
In der Init() funktion in der TheGame.cpp wird alles initialisiert und geladen.
Dort kannst du das dazuschreiben.
oder willst du ganze Gegner erstellen? |
|
Nach oben |
|
|
DarK Super JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 13.11.2002, 19:42 Titel: |
|
|
die objekte sind doch schon alle createt und geladen und erstellt
ich will die doch nur alle blitten ... _________________ "Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."
"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."
"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun" |
|
Nach oben |
|
|
Ciceri Super JLI'ler
Alter: 36 Anmeldedatum: 26.08.2002 Beiträge: 418 Wohnort: Wischhafen/in der nähe Hamburgs Medaillen: Keine
|
Verfasst am: 13.11.2002, 19:44 Titel: |
|
|
ich hab mir das ganze net durchgelesen, aber wie kommen zum thema array(zeiger) mehr als 2 seiten zustande?
ich fand das ganz einfach. aber wenn hier auchw as zum thema array felder ist ist das auchs chon wieder anders. was ist denn das problem hier?! _________________ www.z-software.de
Spieleentwicklung-Pur
Besuchen Sie uns. |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 41 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 13.11.2002, 19:59 Titel: |
|
|
poste mal den code wo du die objekte erstellst. |
|
Nach oben |
|
|
DarK Super JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 13.11.2002, 20:15 Titel: |
|
|
Code: |
Bla.Create(lpDDSurface, 40, 40, 0);
|
ganz normal ... _________________ "Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."
"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."
"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun" |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 41 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 13.11.2002, 20:20 Titel: |
|
|
du könntest, wenn die bitmaps alle schon geladen sind, die surfaces mit
SurfManager.GetSurface("dateiname"); holen und anschliesend blitten.
dann werden sie aber nur an eine position geblittet und bleiben da. |
|
Nach oben |
|
|
DarK Super JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 13.11.2002, 20:58 Titel: |
|
|
und ich kann nicht irgendwie meine 200 sprites alle iner for schleife blitten ? _________________ "Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."
"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."
"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun" |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 41 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 14.11.2002, 15:21 Titel: |
|
|
du kannst die sprites mit dem surfacemanager blitten, allerdings bewegen die sich dann nicht.
Code: |
char *SpriteNames[]={...}
// Laden
for(int i=0;i<105;i++)
{
SurfManager.AddSurface(SpriteNames[i]);
}
// Anzeigen
for(int i=0;i<105;i++)
{
DDraw->GetBuffer()->BlitFast(SurfManager.GetSurface(SpriteNames[i])...);
}
|
wenn sich die sprites wie gegner verhalten sollen, dann musst du dir den SpriteManager mal angucken. dort werden die gegner verwaltet.
Wenn du für jedes sprite eine eigene instanz mit eigenem namen angelegt hast, dann müsstest du viel schreiben um sie alle zu blitten
Code: |
Sprite Sprite1;
Sprite Sprite2;
Sprite Sprite3;
...
Sprite1.Create(..);
Sprite2.Create(...);
...
so kannst du sie so blitten:
Sprite1.Draw(..);
Sprite2.Draw(..);
...
|
das kann man leichter mit einem array machen:
Code: |
Sprite AllSprites[105];
SurfManager.AddSurface("Mitte1.bmp");
SurfManager.AddSurface("Mitte2.bmp");
...
AllSprites[0].Create(SurfManager.GetSurface("Mitte1.bmp"),...);
AllSprites[1].Create(SurfManager.GetSurface("Mitte2.bmp"),...);
...
AllSprites[0].Draw(..);
AllSprites[1].Draw(..);
...
|
und das Laden und anzeigen kann man wieder einfacher machen, indem man ein array für die sprites und ein array für die namen der texturen anlegt, also:
Code: |
char *AllNames[]={...};
Sprite AllSprites[105];
void LoadAllSprites()
{
for(int i=0;i<105;i++)
{
SurfManager.AddSurface(AllNames[i]);
AllSprites[i].Create(SurfManager.GetSurface(AllNames[i]),...);
}
}
void DrawAllSprites()
{
for(int i=0;i<105;i++)
{
AllSprites[i].Draw(...);
}
}
|
|
|
Nach oben |
|
|
|