Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

11

27.06.2007, 20:38

Zitat von »"ChrisJ"«

weil man da alle elemente nacheinander durchgehen kann... ich finds bequemer


Geht doch beim Vector auch! ;-) Is ganz egal in dem Fall was man da verwendet. Unterschiedlich wirds z.B. beim hinzufügen von Elementen.
@D13_Dreinig

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

12

27.06.2007, 20:39

geschmackssache :) auf jeden fall braucht man so einen container für die dynamisch erzeugten projektile
"Don't trust your eyes: They are a hell of a lot smarter than you are"

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

13

27.06.2007, 20:44

Zitat von »"ChrisJ"«

geschmackssache :) auf jeden fall braucht man so einen container für die dynamisch erzeugten projektile


Sehr witzig:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
typedef std::list< int > list_type;

list_type liste;

list.push_back( 10 );
...

list_type::iterator it( liste.begin() );

for ( ; it != liste.end(); ++it )
{
  std::cout << *it << std::endl;
}


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
typedef std::vector< int > list_type;

list_type liste;

list.push_back( 10 );
...

list_type::iterator it( liste.begin() );

for ( ; it != liste.end(); ++it )
{
  std::cout << *it << std::endl;
}


Wo zur Hölle ist da ein Unterschied der den geschmacklichen Vorzug einer Kontainerart rechtfertigen würde?
@D13_Dreinig

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

14

27.06.2007, 20:52

eine liste ist flexibler... wenn ein projektil vor einem anderen trifft und explodiert, kann ich es einfacher löschen
"Don't trust your eyes: They are a hell of a lot smarter than you are"

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

15

27.06.2007, 20:54

Zitat von »"ChrisJ"«

eine liste ist flexibler... wenn ein projektil vor einem anderen trifft und explodiert, kann ich es einfacher löschen


Das ist was anderes. Hier gings aber gerade um das iterieren durch die Container, nicht?
@D13_Dreinig

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

16

27.06.2007, 21:06

naja, eigentlich hatte Stier X ja ein ganz anderes problem :D

ja, du kannst bei einem vektor und einer liste alle elemente der reihe nach durchgehen, mit praktisch dem gleichen aufwand...
und trotzdem passt eine liste hier besser :)
"Don't trust your eyes: They are a hell of a lot smarter than you are"

Viktor

Alter Hase

  • »Viktor« ist der Autor dieses Themas

Beiträge: 533

Wohnort: Ludwigshafen

Beruf: Student

  • Private Nachricht senden

17

27.06.2007, 21:29

Wir sind immer noch in der Konsole, und keine grossen animierten Explosionen, Ok? ;-)

Wollte ich nur nochmal klarstellen...
Das einige was problematisch noch werden koennte, ist die Abfrage einer Kollision aber dass muss ich wahrscheinlich anders handhaben..

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

18

27.06.2007, 22:36

Du musst prinzipiell ja nur die Projektilliste durchgehen und überprpüfen ob eines kollidiert. Wenn ja, dann muss eben genau dieses explodieren oder was auch immer.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
std::vector<CMissile> vect_missile;
// Objekte einlesen

//...

//...


for(std::vector<CMissile*>::iterator it = vect_missile.begin();
            it != vect_missile.end();
            it++)
{
eCollisionType   colType; // Eine Aufzählung welche die Objekttypen bestimmt(Wand, Flugzeug, andere Rakete etc.)

colType = CheckCol((*it)->GetPosition()) // Eine Funktion die überprüft ob das Objekt an der übergeben Position mit irgendeinem Objekt kollidiert und dann einen Kollisionstypen zurückgibt)

(*it)->Explode(colType); // NAtürlich hier keine aufwändige explosion, aber z.B zerstörung der Schiffe etc.

// GetPosition und Explode sind Methoden der Missile Klasse.

}


So würde ich das in etwa lösen

Viktor

Alter Hase

  • »Viktor« ist der Autor dieses Themas

Beiträge: 533

Wohnort: Ludwigshafen

Beruf: Student

  • Private Nachricht senden

19

28.06.2007, 08:56

Fuer meinen Geschmack schon zu kompliziert. Die Kolision "berechne" ich einfach mit Arrys:
is was drin -> boom
is nix drin -> flllllllllllliiiiiiiiiieggggg
:-)

//So einfach - hoffe ich. Das einzige Problem was ich hatte war eben mit den mehreren Projektielen, aber wie schon gesagt, das werde ich mir noch genauer anschauen - am Wochenende. Heute hab ich dafuer keine Zeit.

Viktor

Alter Hase

  • »Viktor« ist der Autor dieses Themas

Beiträge: 533

Wohnort: Ludwigshafen

Beruf: Student

  • Private Nachricht senden

20

30.06.2007, 15:30

Ok, war mal wieder schrott, was ich da geschrieben hab. Hab mir die Vektoren jetzt mal genauer angeschaut und ich deke/hoffe, dass es damit ganz gut klappen wird.

Werbeanzeige