JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=21fbaf328c09a21ffaa695df62f91cfaMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Array
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 12.11.2002, 19:05    Titel: Antworten mit Zitat

ja, anstatt "char" "sprite"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 12.11.2002, 21:04    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 12.11.2002, 21:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 13.11.2002, 18:44    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 13.11.2002, 18:46    Titel: Antworten mit Zitat

was für fehler kommen denn?
und wo?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 13.11.2002, 18:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 13.11.2002, 18:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 13.11.2002, 19:07    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 13.11.2002, 19:42    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Ciceri
Super JLI'ler


Alter: 36
Anmeldedatum: 26.08.2002
Beiträge: 418
Wohnort: Wischhafen/in der nähe Hamburgs
Medaillen: Keine

BeitragVerfasst am: 13.11.2002, 19:44    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 13.11.2002, 19:59    Titel: Antworten mit Zitat

poste mal den code wo du die objekte erstellst.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 13.11.2002, 20:15    Titel: Antworten mit Zitat

Code:

Sprite Bla;


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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 13.11.2002, 20:20    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 13.11.2002, 20:58    Titel: Antworten mit Zitat

und ich kann nicht irgendwie meine 200 sprites alle iner for schleife blitten ? Sad
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 14.11.2002, 15:21    Titel: Antworten mit Zitat

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 Smile

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum