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

02.03.2012, 23:03

SFML Klasse wie anpassen

Hallo,

erst mal sorry für die Überschirft. Mir ist nichts anderes passendes eingefallen :).

Ich arbeite mit SFML Engine. Ich habe dort einige Klassen erstellt und zwar die hier:

Zitat

Creature
Player (kind von Creature)
Render
Texture

Jetzt hab ich aber an eine Sache nicht gedacht. Und zwar hat Render eine Methode = "Run()". Run ist eine Schleife, der zu der erstellten Fenster Event abfängt und auch die Sachen zeichnet.
Doch ich muss die Spieler die in der Playerklasse auch erstellt werden auch zeichnen. Nun weiß ich nicht wie ich das so verknüpfen kann.

Ich will das Spiel nachher mit Multiplayer versehen. Also muss ich acuh bedenken, dass nachträglich auch ncoh Spiele erstellt werden.

Am Anfang hab ich in der Art gemacht

C-/C++-Quelltext

1
Creature P1(window,"MaZy", SoldatTx, 1, 100, 100);
(Player Klasse passe ich später an). so wurde dann zu dem Spieler window angepasst und eine Draw() methode erstellt. Aber das geht nicht mehr da ich ja eine Render.run() habe wo ich das net einfach so rein schieben kann...
Nichts ist unmöglich.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

2

03.03.2012, 11:05

Eine wahre Herausforderung es zu verstehen...

Du hast eine Klasse für das Rendern? Normalerweise reicht eine Methode in jedem Objekt.

Ausserdem solltest du das Zeichnen und die Spiellogik(z.B. die Updatemethoden und die Events) trennen. Wieso brauchen deine Spielobjekte eine eigene Eventschleife? Normalerweise gibt es nur eine, die am Anfang der Hauptschleife steht. Brauch ein Objekt bestimmte Events (z.B. Texteingaben) werden diese von der Eventschleife nur weitergeleitet.

Meistens reicht es aber wenn du Keyboard::IsKeyPressed() und Mouse::IsKeyPressed() nutzt.

Achja, anstelle von "kind von" solltest du "abgeleitet von" schreiben.
"Kind" also englisch "child" nutzt man höchstens in Datenstrukturen. Wenn z.B. ein Fenster einen Button besitzt, ist das Fenster Parent vom Button und der Button Child vom Fenster. ;)
"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?

3

05.03.2012, 21:56

Also die Spielobjekte sollen ja keine eigene Eventschleifen haben. Deswegen habe ich ja diesen Thread hier erstellt.
Es soll alle unter der Renderklasse gezeichnet werden. Ich hab nur gerade keine Idee wie ich, wenn auch ein Spieler nachträglich erstellt wird z. B. durch ein Netzwerkspiel gezeichnet wird.
Nichts ist unmöglich.

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

4

05.03.2012, 22:11

Dann muss dieser eben eine neue Instanz deines Player Objekts erzeugen welche dann schlicht gerendert wird, so wie alle anderen auch. Wenn der Spieler diese dann bewegt sendet er die Positions und Rotationsinformationen (und was du sonst noch brauchst) an den Server/anderen PC und updatest die Instanz.

Werbeanzeige