JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Zugriff auf Strukturen in Feldern?
Gehe zu Seite 1, 2, 3, 4  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 09.08.2002, 10:30    Titel: Zugriff auf Strukturen in Feldern? Antworten mit Zitat

Hi, ich hab ein Problem (sonst würd ich wohl kaum ein neues Thema erstellen). Und zwar hab ich eine Struktur geschrieben und ein Feld mit mehreren Variablen der Struktur angelegt. Wie kann ich jetzt aber das gesamte Feld durchlaufen und dabei also auf immer denselben Wert zugreifen. Zum Beispiel:
Code:

struct BeispielStruktur
{
  bool BeispielWert;
}

BeispielStruktur BeispielStrukturFeld[10];

for(int i = NULL; i<10; i++)
{
  //Greife auf BeispielStruktur.BeispielWert zu und kucke ob true oder  false.
}


Wie muss ich jetzt den Kommentar in Quellcode umwandeln?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael
JLI'ler



Anmeldedatum: 20.07.2002
Beiträge: 173
Wohnort: Münster / NRW
Medaillen: Keine

BeitragVerfasst am: 09.08.2002, 11:11    Titel: Antworten mit Zitat

Was meinst du mit 'immer auf den selben Wert zugreifen'?
Ich würde sagen, dies löst dein Problem:
Code:

struct BeispielStruktur
{
    bool BeispielWert;
}

BeispielStruktur BeispielStrukturFeld[10];

for(int i = NULL; i<10; i++)
{
    if(BeispielStrukturFeld[i].BeispielWert == true) // mach irgendwas
}


Oder meinst du was anderes?
_________________
Es geht auch ohne Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 09.08.2002, 12:45    Titel: Antworten mit Zitat

Genau das meinte ich, wusste nur nicht das der punkt-operator da auch funzt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Revil
Senior JLI'ler



Anmeldedatum: 28.07.2002
Beiträge: 242

Medaillen: Keine

BeitragVerfasst am: 09.08.2002, 14:40    Titel: Antworten mit Zitat

irgendwie versteh ich nicht ganz was strukturen machen, bzw was sie einem bringen... Kann mir vielleicht mal einer erklären wozu man ne Struktur normalerweise verwendet?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 09.08.2002, 15:50    Titel: Antworten mit Zitat

Man benutzt Strukturen, um Daten logisch zusammenfassen zu könne.
Beispiel:
Ein Objekt hat Koordinaten, Lebenspukte und Munition. Ohne Strukturen würde das so aussehen:

Code:

#define MAX_OBJS

int x[MAX_OBJS];
int y[MAX_OBJS];
int health[MAX_OBJS];
int ammo[MAX_OBJS];


mit Struktur so:

Code:

struct OBJ_TYPE
{
    int x;
    int y;
    int health;
    int ammo;
};

OBJ_TYPE objekte[MAX_OBJS];

_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Revil
Senior JLI'ler



Anmeldedatum: 28.07.2002
Beiträge: 242

Medaillen: Keine

BeitragVerfasst am: 09.08.2002, 19:27    Titel: Antworten mit Zitat

aber ist ne klasse dazu nicht viel besser geeignet?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 09.08.2002, 19:45    Titel: Antworten mit Zitat

In diesem Falle vielleicht, obwohl man auch innerhalb der Klasse dann auf Strukturen zurückgreifen kann.

Strukturen haben aber auch noch andere Vorteile. Denke dir z.B. eine Funktion, die die aktuelle Position eines Raumschiffes zurückgeben soll:

Normalerweise würdest du das jetzt so programmieren:
Code:

int GetPosX(int id) {
  //... Anhand von id das Raumschiff ermitteln, das gemeint ist
  return XPosition;
}

int GetPosY(int id) {
  // Code erspare ich mir hier
  return YPosition;
}


Mit einer Struktur kannst du das ganze auch zusammenfassen:
Code:

typedef struct {
  int x;
  int y;
} TPos;

void GetPos(int id, TPos *Position) {
  Position->x = RechneWertVonPositionXAus(i);
  Position->y = RechneWertVonPositionYAus(i);
}


Das ganze wird dann folgendermaßen verwendet:
Code:

int main(void) {
  TPos xy;
  GetPos(1234, &xy);
  printf("Raumschiff 1234 befindet sich an %d, %d\n", xy.x, xy.y);
  return 0;
}


Ich hoffe, daß ich dich nicht zusehr verwirrt hab.

AFE-GmdG
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Revil
Senior JLI'ler



Anmeldedatum: 28.07.2002
Beiträge: 242

Medaillen: Keine

BeitragVerfasst am: 09.08.2002, 20:01    Titel: Antworten mit Zitat

ah danke, ich glaub ich habs verstanden Smile
also im endeffekt ermöglichen strukturen nur ein logischeres Speichern der Daten, werden aber nicht wirklich benötigt... Oder gibts irgendwas was man ned ohne Strukturen lösen könnte?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 10.08.2002, 22:24    Titel: Antworten mit Zitat

Selber lösen kann man alles auch ohne Strukturen, aber allein schon in der Windows-API und auch in DirectX wird sehr viel mit Strukturen gearbeitet...

AFE-GmdG
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael
JLI'ler



Anmeldedatum: 20.07.2002
Beiträge: 173
Wohnort: Münster / NRW
Medaillen: Keine

BeitragVerfasst am: 11.08.2002, 10:49    Titel: Antworten mit Zitat

Ich mach das immer so, dass ich eine struktur da nehme, wo ich nur die daten brauche und keine methoden implementieren will. man kann zwar einer struktur auch methoden geben, aber da kann man eine klasse besser nehmen.
_________________
Es geht auch ohne Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 11.08.2002, 13:21    Titel: Antworten mit Zitat

Zitat:

[...]aber da kann man eine klasse besser nehmen.


In C++ bewirken 'struct' und 'class' das gleiche! Also ist es total egal was man nimmt Wink
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 11.08.2002, 14:33    Titel: Antworten mit Zitat

ber bei Strukturen kann man glaub keine Vererbung machen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 11.08.2002, 16:23    Titel: Antworten mit Zitat

Polymorphie nicht zu vergessen! Cool
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 11.08.2002, 17:21    Titel: Antworten mit Zitat

In C, wo es ja keine Klassen gibt, sind Strukturen aber ein sehr angenehmes Mittel zum Zweck. Da ich mit C angefangen hab, benutze ich noch sehr häufig Strukturen, wenn andere schon Klassen nehmen.

AFE-GmdG

PS.: Wenn mich nicht alles täuscht, lassen sich strukturen etwas schneller verarbeiten, sie haben nicht so viel Overhead wie Klassen, da sie wie schon gesagt keine Polimorphie und Vererbung beherrschen.
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DaN00b
JLI'ler



Anmeldedatum: 10.08.2002
Beiträge: 159

Medaillen: Keine

BeitragVerfasst am: 12.08.2002, 11:08    Titel: Antworten mit Zitat

wenn jetzt eh schon so viel zu klassen und structs gesagt wurde hab ich jetzt noch ne kleine frage zu klassen

kann ich ein feld von einer klasse machen und aber dem feld dann vererbte klassen übergeben?

Code:
//mal ein beispiel an tieren :P

         Tier* TierFeld[3];
         
         TierFeld[1] = Katze();
         TierFeld[2] = Hund();
         TierFeld[3] = Schwein();

//und gleich zusatzfrage falls es geht: bekomm ich dann auch
//jeweils einen zeiger auf das gewünschte tier damit ich auf dessen
//methoden zugreifen kann? Beispiel:

         TierFeld[1]->Fressen();
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
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 1, 2, 3, 4  Weiter
Seite 1 von 4

 
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