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

22.09.2009, 12:25

SDL_Game und SFML

Hallo und ich entschuldige mich schoneinmal sollte die frage sehr "eigenartig" sein

Das SFML Spiel trennt ja klar zwischen Spielelogik und Spielgrafik. Die zwei klassen waren wenn ichs nich richtig weiß CFramework und CSprite.

Angenommen ich wollte nun eine andere api nehmen (zB SFML). SFML ist ja schon objektorientiert, kann ich mir die extra klassen dann sparen? Eingentlich ja nicht weil sonst würde man ja SFML mit der programmlogik vermischen.

Wenn ich den SDL code durch SFML code ersetzen würde gäbe es mehrere Probleme:

Die Sprite Klasse bräuchte einen Zeiger auf das RenderWindow aber wann sollte man das übergeben damit es gleichzeitig OOP korrekt bleibt ?

Die Tastaturabfrage würde ja sehr viel code zum implementieren brauchen

Helfen würde mir ein denkanstoß oder eine erklärung, ich verlange hier von keinem die klassen zu schreiben

Vielen Dank schonmal für eure hilfe

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

2

22.09.2009, 13:40

Dein Post ist in der Tat sehr unverständlich. SFML hat eine Sprite-Klasse die wahrscheinlich alles kann, was du brauchst und mehr.

goldfisch007

Alter Hase

Beiträge: 446

Wohnort: Süden von Berlin

  • Private Nachricht senden

3

22.09.2009, 13:45

Re: SDL_Game und SFML

Zitat von »"Kalkas"«

...Das SFML Spiel trennt ja klar zwischen Spielelogik und Spielgrafik. Die zwei klassen waren wenn ichs nich richtig weiß CFramework und CSprite ....andere api nehmen (zB SFML).


du meintst sdl nach sfml.... ;) (denk ich)
Wir bauen auf und reißen nieder, so ham wir Arbeit ima wieder...
--------------------
http://www.piratenpartei.de/tmp/images/Slogans_5_0.png
--------------------
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender, geklaut von Helmut xD)

4

22.09.2009, 14:04

stimmt das war ein schreibfehler :>

ich fühle mich nochnicht so sicher mit der oop.
ich versuche es nocheinmal mit einer anderen frage vielleicht wird mein anliegen dann klarer sein.

Soweit ich das richtig verstanden habe sollte man die Grafikklassen von den Logikklassen trennen. Angenommen ich habe ein fertiges spiel das sdl für eine 2d grafik benutzt. Das Spiel ist fertig und dannach komme ich auf die idee ein 2,5d Spiel zu machen (mit openGl oder so). Wenn man die klassen gut getrennt hat müsste man(wenn ich das richtig verstanden hab) einfach nur die "Grafikklassen" ändern aber die "Logikklassen" nicht anfassen müssen.

Meine 1. Frage ist ob ich das so richtig verstanden haben

und die frage von oben war wie sich das umsetzen lässt bei zB dem sdl spiel durch ändern der api (in zB SFML) ohne sfml code in díe "Logikklassen" zu schreiben.

Vielleicht habe ich das auch nochnicht so richtig verstanden

Vielen Dank schonmal bisjetzt

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

5

22.09.2009, 14:18

Das geht natürlich, wenn du Klassen für alle Objekte in deinem Spiel hast, die alle nur einen Pointer auf ihre grafische Repräsentation haben, dann brauchst du nur diesen Pointer anzupassen. Wahrscheinlich muss dann noch hier und da etwas angepasst werden, weil man oft dann doch nicht alles 100% getrennt hat.

6

22.09.2009, 14:38

Ist das die übliche Vorgehensweise so wie ich es beschrieben habe? oder ist das nur eine extreme variante? Wie macht ihr das? Muss man so einen zwischenweg wählen?

Eine Frage ist mir gerade noch eingefallen: Ist es schlecht bei sfml einen globalen RenderWindow pointer zu benutzen weil ja jede "Grafische Representation" das objekt braucht um die draw() methode des fensters aufzurufen oder gibt es einen eleganteren Weg?

Danke für Eure Hilfe und sry für die vielen Fragen :>

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

7

22.09.2009, 15:07

Zitat von »"Kalkas"«


Eine Frage ist mir gerade noch eingefallen: Ist es schlecht bei sfml einen globalen RenderWindow pointer zu benutzen weil ja jede "Grafische Representation" das objekt braucht um die draw() methode des fensters aufzurufen oder gibt es einen eleganteren Weg?


Das ist in der Tat nicht so gut. SFML Objekte sollten nie global deklariert werden, da es da zu Problemen wegen der Initialisierungsreihenfolge kommen kann. Ich mach mir dafür ne Game Klasse, die ein sf::RenderWindow als Member hat oder ich leite sie von sf::RenderWindow ab (das ist die faule Variante). Diese Game Klasse verwaltet meine GameStates, die ihrerseits die Spielobjekte als Member halten. Damit der aktuelle GameState seine Objekte zeichnen kann, kriegt er einen Pointer auf das RenderWindow.

Werbeanzeige