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

Rion

Frischling

  • »Rion« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Trier

Beruf: Komponist, Medienassistent

  • Private Nachricht senden

1

03.07.2010, 13:05

Szenenwechsel in C++

Hallo,

bin neu hier im Forum und habe seit längerem mit C++ begonnen und bin gerade dabei, ein kleines 2D-Rollenspiel mit SDL zu programmieren. Jetzt meine Frage:

Wie programmiere ich Szenenwechsel? Das heißt Menüszenen, neue Level (wenn man z.B. durch eine Tür geht). Wie wird sowas programmiertechnisch umgesetzt? Muss man ein neues SDL-Fenster erzeugen oder wie macht man das?

Beste Grüße!

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

2

03.07.2010, 13:09

Zustandsverwaltung lautet das Stichwort. Etwas formaler auch als State-Machine oder Automat bezeichnet.

Werf mal nen Blick auf das State-Pattern, zu deutsch Zustands-Entwurfsmuster.
<< an dieser Stelle ist eine Signatur verstorben >>

3

03.07.2010, 13:13

Versuchs mal mit einer sogenannten Statemachine...
Damit kannst du z.B. deine Ablaufsmuster von einem Menu oder Intro oder dem Spiel selbst auseinander halten und verwalten.

Und für die Levelverwaltung würde ich dir Empfehlen irgendeinen Maploader o.Ä. zu bauen.

EDIT: Mist zu langsam...
Freund: "Ein Leben ohne Kaffee ist unmöglich, aber sinnlos!"
"Wer Angst vor der Dunkelheit hat, hat noch nie gesehen, was das Licht anrichten kann!"

Rion

Frischling

  • »Rion« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Trier

Beruf: Komponist, Medienassistent

  • Private Nachricht senden

4

03.07.2010, 14:18

Danke für eure Antworten!

Soweit ich jetzt gelesen habe, sind States einfach nur Klassen, die u.a. Eingangs- und Ausgangsfunktionen enthalten (hier Konstruktoren und Destruktoren) und die an- und ausgeschaltet werden können (wie ein Menü, das man ein- und ausblenden kann).
Siehe hier!

Korrigiert mich, falls ich das falsch verstanden habe. Auf der genannten Seite wurde das mit Klassen realisiert.

5

03.07.2010, 14:22

übergänge wie fades o.Ä. kann man auch gut als objekte sehen, die man einfach in eine gui-objektliste packt. diese objekte werden pro frame mit einer update-funktion aufgerufen. ein fade ist dann ein objekt, das über allen anderen spielelementen aber evt. unter den menus usw. liegt. es ist einfach ein schwarzes rechteck in bildschirmgröße, das mit der zeit transparent wird. in der update funktion wird dann zeitabhängig die transparenz hochgesetzt und am ende wird das objekt als "dead" o.ä. markiert - so kann es dann beim nächsten update entfernt werden.

menu-animationen lassen sich ähnlich realisieren - evt. kannst du zusätzlich noch tween-objekte bauen, die innerhalb des updates eines objektes aufgerufen werden, um das objekt in einer bestimmten weise zu verändern...

den tween objekten oder anderen gui elementen wie das fade objekt, könnte man dann noch eine funktion mitgeben die als ereignisbehandler funktioniert. ist bspw. ein fade von transparent nach schwarz fertig, wird die funktion aufgerufen, um weiteres (z.B. anderes level laden) auszulösen...

edit: btw statemanager halte ich persönlich für spiele sozusagen für obligatorisch. ;)

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Chromanoid« (03.07.2010, 18:01)


KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

6

03.07.2010, 15:04

Um ergänzend zu thevoid zu wirken:

Eine Statemanager Klasse ist wohl das Sinnvollste. Allerdings reicht, um die funktionsweise der States(bzw. GameStates) zu verstehen, für den Anfang auch eine switch-case Abfrage(es sei denn du willst dich direkt mit der Statemanager Klasse beschäftigen ^^)

Allerdings ist es mir neu, dass die States selber klassen sind. Normalerweise ist es doch so, dass es einen Statemanager gibt, der die Sache dann übernimmt. Schließlich macht der State ja eigentlich selber nichts, sondern er "ist". Und das was darin passiert, ist abhängig von dem Objekt, den das ganze betriff.
WIP Website: kevinheese.de

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »KeksX« (03.07.2010, 16:04)


7

05.07.2010, 13:46

naja. beim state design pattern ist es schon so , dass die States eigene klassen von einer abstrakten Basis State klasse sind .

sonst für dein erstes kleines spiel würd ich auch einfach nur ein switch-case machen.
Und dann kannst anfangen dich mit eigenen State klassen herumzuspielen.

lg

Werbeanzeige