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

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

11

19.11.2011, 21:37

Ob das Sinn macht muss er ja wissen. Aber da er an mehreren Stellen auf den Spieler zugreifen muss, macht es meiner Meinung nach Sinn, diesen als Member zu hinterlegen. Das kann er dann ja auch einfach als Zeiger machen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

KeyC

Frischling

  • »KeyC« ist der Autor dieses Themas
  • Private Nachricht senden

12

23.11.2011, 08:43

Das ist das erste "große" was ich mit Klassen probieren. Ich versuche mich im Moment einfach daran zu gewöhnen mehrere Header und Quelldateien in meinem Project zu benutzen anstatt alles in die main.cpp zu stopfen.
Es besteht nicht nur aus einem Menü und soll auch noch weiter zu etwas spielbaren werden. Die Klasse für den Character gibt es und ich habe es auch zum laufen bekommen ein Profil anzeigen zu lassen mit verschiedenen Statuspunkten je nachdem welches Level und welche Klasse der Spieler gewählt hat.
Allerdings läuft es nur in dieser "Menüzeile" sprich, die Klasse exisitiert außerhalb nicht mehr, was aber für das Spiel zwingend notwendig wäre.
Vielleicht sollte meine Frage eher lauten, wie sollte ich das Project anordnen um sauber und ordentlich objektorientiert zu programmieren.

Meine Vorstellung des Menüs und der Funktion ist wie folgt

Programm startet,
-> Wenn noch kein Charakter erstellt ist eine Abfrage des Namen, Geschlechts und Klasse

Menü:

1. Neues Spiel
-> Spiel wird gestartet. Charakter wird übergeben

2. Charakter editieren
-> Profildaten werden aufgerufen und weitere Unterpunkte zur Veränderung des Charakters
  • Name ändern
  • Geschlecht ändern
  • Klasse ändern
3. Spiel verlassen
-> return über die main.cpp

Kann mir jemand vielleicht Tipps geben, wie ich sowas realisieren kann? Ich habe es mit dem Zeiger und this-Zeiger versucht, allerdings noch
kein lauffähiges Programm damit zustande bekommen. Ich bekomme die Klasse einfach nicht an eine andere Klasse übergeben.

Wäre für weitere Hilfe sehr dankbar.

Zitat

@KeyC: Hast du schonmal drüber nachgedacht dir ein "Nachschlagewerk" zuzulegen?

Bisher benutze ich das Buch C++ für Spieleentwickler als eine Art Nachschlagwerk, das mit lauter orangen, gelben und rosa Zettelchen vollgeklebt ist.
Kannst Du mir eins empfehlen?

13

23.11.2011, 14:56

The C++ Programming Language von Bjarne Stroustrup
Effective C++ von Scott Mayers

MfG
Check

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

14

23.11.2011, 16:24

Es besteht nicht nur aus einem Menü und soll auch noch weiter zu etwas spielbaren werden.

Eben. Es ging mir nur um den Namen der Klasse. Game passt einfach besser als Menu. ;)

Ist es nicht normalerweise so, dass man nur beim Spielstart die Charaktereigenschaften einstellt? Versuchs doch auch mal so. Da musst du auch erstmal garnichts übergeben. Willst du ermöglichen das Spiel später fortzuführen musst du die Daten sowieso in eine Datei oder Datenbank schreiben.
Dein eigentliches Problem ist, dass Player nach verlassen der Methode editcharacter wieder freigegeben wird. Er soll aber erhalten bleiben. Also machst du ihn zum Member der Gameklasse.

C++ für Spieleprogrammierer solltest du so gut durchgearbeitet haben, dass du es nur sehr selten zum Nachschauen benötigst. Mach am besten zu jedem Teil eine eigene Übung, in der du das Gezeigte anwendest. Es muss kein auch sinnvolles Programm sein.

Trotz der Bezeichnung "Nachschlagewerk" ist es von Vorteil es durchzuarbeiten. Dann kennst du die Sprache genau und kannst sie möglichst optimal einsetzen.
Wenn du Probleme hast englische Texte zu verstehen gibt es noch "Der C++ Programmierer" und eine Übersetzung von Effective C++. Langfristig solltest du daraufhin arbeiten englische Texte verstehen zu können.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

15

23.11.2011, 16:34

[Randbemerkung]Die Übersetzung von Bjarne´s Buch ist nicht zu empfehlen!
Die soll sehr miserabel sein![/Randbemerkung]

MfG
Check

Mastermind

unregistriert

16

23.11.2011, 16:52

[Randbermerkung]Offensichtlich hast du die englische Sprache bereits so verinnerlicht, dass du ein Genitivapostroph machst. Bzw. in deinem Fall ist es schlimmer noch ein Genitivaccent.[/Randbemerkung]

KeyC

Frischling

  • »KeyC« ist der Autor dieses Themas
  • Private Nachricht senden

17

23.11.2011, 17:03

Englische Texte zu verstehen ist absolut kein Problem für mich, ich installiere mir so gut wie jedes Programm und Spiel auf Englisch, wenn es möglich ist.
Nun wurden 2 Bücher genannt, ist es ein entweder oder? Wäre die Antwort früher gekommen, wäre ich noch heute in die Stadt gefahren um es mir zu kaufen/bestellen.

Das Problem, dass die Klasse nach der editcharacter() Funktion wieder freigegeben wird habe ich erkannt und war der Grund für die Erstellung dieses Threats.
Um nochmal Klarheit für mich zu schaffen.
Wenn ich es richtig verstanden habe soll ich das Menü selbst als Game.cpp benutzen und die Charakter-Klasse per Header einbinden und dort erstellen.
Sollte das Menü dann selber eine einfache Funktion, Struktur oder Klasse sein? Oder doch etwas ganz anderes?
Durch den Einfluss des Buches bin ich im Moment an Klassen festgefahren. Allerdings finde ich keinen Weg in der Klasse(1) eine andere Klasse(2) zu erstellen, worauf die Memberfunktionen von Klasse(1) Zugriff haben und ich finde auch keine Lösung im Buch dazu. (Ohne beide Klassen in die selbe Datei zu schreiben)
Ich schau mal, ob ich die Telefonnummer vom Buchhandel in der Stadt finde und ruf da gleich an, vielleicht stehen da Dinge drinne,
die mir eher die "Augen öffnen".

MFG

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

18

23.11.2011, 17:18

Nun wurden 2 Bücher genannt, ist es ein entweder oder?

Es ist ein Und. Wobei du zuerst The C++ Programminglanguage und dann Effective C++ durcharbeiten solltest.

Du definierst die Klasse(1) einfach im Header, deklarierst sie in dem Header der Klasse(2), in der du sie benötigst. Nun deklarierst du einen Zeiger auf Klasse(1) in der Klasse(2). In der .cpp der Klasse(1) bindest du den Header der Klasse(2) ein und forderst Speicher mit new im Konstruktor an und speicherst den Zeiger. Im Destruktor gibst du die Instanz mit delete wieder frei.

C-/C++-Quelltext

1
class Game; // Klassendeklaration


Das nennt sich pointer to implementation(pimpl) Idiom.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige