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

1

13.05.2015, 19:05

Objekt Klasse

Hallo liebe Spieleprogrammierer

Ich will in meinem neuen Projekt eine Klasse erstellen zb. Häuser. In der Klasse will ich die Häuser verwalten können und wenn möglich auch ein struct oder so benutzen damit ich sie einfach auswählen kann und platzieren mit Position etc. Dafür habe ich mir gedacht dass ich eine virtuelle Klasse namens Objects mache und alle Objekte von der erben.

Klingt das sinnvoll?

Denn ich möchte komplexer programmieren anstatt so :

C-/C++-Quelltext

1
sf::Sprite HouseWhite; sf::Sprite HouseBlack

Was würdet ihr mir da empfehlen?
Structs, namespace's, templates u.s.w

Freundlich Grüsst SlyGamer72HD

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »SlyGamer72HD« (13.05.2015, 21:29)


2

13.05.2015, 20:11

Im Grunde ist das schon ein guter Ansatz. Wie komplex die Architektur werden soll bzw. muss hängt aber auch stark vom Projekt ab. Was hast du genau vor? Wenn es dir nur um Häuser und ähnliche Objekte geht, könnte eine Liste oder eine Baumstruktur ausreichen. Möchtest du die Objekte auch graphisch anzeigen? Wieviele davon wirst du verwalten?

Je mehr Kontext du uns geben kannst, desto einfacher wird es für uns dir bei der Architektur zu helfen. :-)
Mein Kaktus ist weder klein noch grün.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

13.05.2015, 20:30

Für Klassennamen benutzt man den Singular, nicht den Plural.

4

13.05.2015, 21:27

Hallo der r

Ich habe ein kleines 2D Zombie Survival Game im Sinne und zwar in der SFML.
Es werden mehrere Häuser sein so ungefähr 10 verschiedene für den Anfang.
Es werden auch andere Objekte wie zb. verschiedene Items oder kaputte Fahrzeuge geben.

Freundlich Grüsst SlyGamer72HD

5

13.05.2015, 21:34

Sieht wohl so aus als ob du eine 'House'-Klasse brauchst, wobei du äußerliche eigenschaften wie farbe und größe der instanzen änderst.

6

13.05.2015, 23:33

Wie funktioniert den eine House Klasse? Das höre ich gerade zum Ersten Mal

7

13.05.2015, 23:39

Nun ja eine House-Klasse ist eine Klasse für ein Haus ;)

C-/C++-Quelltext

1
2
3
class House
{
};

Die sammelst du z.B in einem std::vector und kannst dann das machen was du damit machen willst.

8

14.05.2015, 06:36

Hallo der r

Ich habe ein kleines 2D Zombie Survival Game im Sinne und zwar in der SFML.
Es werden mehrere Häuser sein so ungefähr 10 verschiedene für den Anfang.
Es werden auch andere Objekte wie zb. verschiedene Items oder kaputte Fahrzeuge geben.

Freundlich Grüsst SlyGamer72HD


In diesem Fall ist es sicherlich sinnvoll, eine übergeordnete Klasse "Entity" oder "GameObject" zu haben, und alle anderen Spieleobjekte davon abzuleiten. Dann wäre es eventuell hilfreich eine Klasse "SceneManager" o.ä. zu schreiben, die alle Spieleobjekte verwaltet und dem Programm bestimmte Funktionen zur Verfügung stellt, wie das Auffinden von Spieleobjekten nach bestimmten Kriterien, etc.

Ich würde erstmal mit einem Array oder std::vector anfangen und dann optimieren, wenn du Performanceprobleme bekommst.
Mein Kaktus ist weder klein noch grün.

9

14.05.2015, 10:42

Meinst du die Idee mit der virtuellen Klasse namens Objects?

Und dass mit dem SceneManager hast du da ein Beispiel?

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

10

14.05.2015, 11:07

Solange es nicht nötig ist würde ich keine unnötige Komplexität einführen.
Auch alles über Vererbung zu lösen wird schnell unübersichtlich. Bau dir lieber Komponenten die du häufiger benötigst, wie z.B. Positionsinformationen (die hat Sprite denke ich aber sowieso schon). Dann kannst du die einfach als Member in deine Klassen packen und evt. aus Sprite ableiten.

Werbeanzeige