Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Liste eines Objektes für seine Enthaltenden Klassen freigeben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.02.2015, 10:35 Uhr
Marcel_Bohn



Also ich bin was cpp angeht noch ein ziemlicher Anfänger und habe jetzt einfach mal drauflos Programmiert. Jetzt stehe ich vor folgendem Problem:
Ich habe eine Scene namens "Game" diese enthält eine Instanz der Klasse "Player" und eine Liste namens "TileList". Ich möchte jetzt das mein Player Objekt auf diese Liste zugreifen kann.


C++:
Game::Update()
{
      Player.Update();
}

Player::Update()
{
      // hier die TileList durchlaufen
}



Ich hoffe ich habe mein Problem ausreichend geschildert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.02.2015, 00:22 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,

also Softwaretechnisch kannst du die Liste z.b an deine Update-Methode übergeben:


C++:
Game::Update()
{
      Player.Update(tilelist); // hier tilelist mitgeben
}

// als referenz übergeben, damit du das "original" benutzt und keine Kopie
Player::Update(TileList& tilelist)
{
      // hier die TileList durchlaufen
}



Software-Architektonisch stellt sich dann jedoch die Fragen:
- Ist die Liste am richtigen Fleck?
- Oder ist die Berechnung an der falschen Stelle?
--
class God : public ChuckNorris { };

Dieser Post wurde am 15.02.2015 um 00:22 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.02.2015, 10:01 Uhr
Marcel_Bohn



An solch eine Lösung dachte ich auch, aber das erscheint mir (wie du schon sagtest) als architektonisch falsch... Wie würdet ihr das Lösen? Die "TileList" sollte meiner Meinung nach in der Scene gespeichert werden! Aber die "TilePlayerCollide" Methode sollte doch in der "Update" Methode von "Player" sein, oder?
Sollte ich vielleicht die "TilePlayerCollide" Methode in "Game" Integrieren?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.02.2015, 19:24 Uhr
Marcel_Bohn



Ich hab echt kein Plan wie man das richtig macht... Kann mir keiner mal ein Denkanstoß geben. In der Programmiersprache die ich vorher benutzt hatte, konnten Listen global initialisiert werden und könnten von jedem Objekt genutzt werden, wie wird soetwas in c++ gelöst?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.02.2015, 20:02 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


globale variablen gibt es schon auch in c++, jedoch ist das dann ganz schlechter stil.

Seh ich deine Architektur aktuell richtig?


Code:
Game
|- TileList
    |- Tile
|- Player



Dann würde ich vermutlich die Collision in Form von "Player::collideWithTile(tile)" aus "Game::Update" (oder andere geeigneter "Game::Ort") per Schleife dort machen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.02.2015, 13:31 Uhr
Marcel_Bohn



Ja, das stimmt so. Dann werde ich wohl die Collide Methode in "Game:: Update" einfügen. Vielen Dank für die Hilfe!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: