Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 02, 2025 07:31

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi Mär 20, 2013 13:58 
Offline
DGL Member

Registriert: Sa Apr 14, 2012 14:28
Beiträge: 52
Programmiersprache: c++
Hallo zusammen,

nach längerer Pause mache ich nun an meinem Worms-Klon weiter. Ich bin jetzt auch so weit, dass ich mich an die Hauptschleife des Spiels machen kann, allerdings bin ich mir bei der Umsetzung noch unsicher. (Laufen tut alles mit c++ und opengl)

Die Frage ist hauptsächlich, wie ich die wichtigen Variablen von Schleifendurchlauf zu Schleifendurchlauf übergebe. Die einfachste Möglichkeit wäre natürlich alle Variablen global zu definieren, was schlechter Stil wäre.
Meine Idee ist nun, mir zunächst ein struct zu definieren, in dem alle nötigen Variablen zusammen gefasst werden. Dann könnte ich diesen entweder per globalen Pointer verwalten oder die Spielschleife nochmal in eine seperate while-Schleife legen und den struct eine ebene höher lokal deklarieren. Also folgendermaßen:

while xyz (Programmhauptschleife)
{
Variablenstruct deklaration
while abc (Spiel-Schleife)
{
Spiel greift auf Variablenstruct zu
}
delete Variablenstruct (ggf)
}

Ich würde ja eher zum globalen Pointer tendieren, da die Spielinformation nicht durch das Verlassen der Spielschleife verloren gehen würden, hätte jedoch gerne ein paar Anregungen wie ihr das normalerweise macht.
Von der Variablenübergabe mal abgesehen, macht es nicht auch Sinn die Spielschleife in eine extra while-Schleife zu legen um alle mit dem restlichen Programmaufbau verbundenen Abfragen und Zuweisungen, die im Spiel nicht verwendet werden, zu umgehen?

MfG Der Troll


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 20, 2013 15:35 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Versuche doch einfach einen objektorientierten Ansatz.
Dann halten die Objekte die von ihnen benötigten Variablen selber und du hast im besten Fall nur ein Objekt, welches du dir merken musst (dieses enthält dann die anderen Objekte).
Und für dieses Objekt brauchst du dann nur je nach Verwendung nur eine lokale Variable, da es vor der Schleife erstellt und danach wieder freigegeben wird.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 20, 2013 16:58 
Offline
DGL Member

Registriert: Sa Apr 14, 2012 14:28
Beiträge: 52
Programmiersprache: c++
Mit dem struct wäre doch ein objektorientierter Ansatz, oder? (Bin bei den Definitionen ne Niete) Ich habe meine Struktur "Spielvariablen", die zum beispiel die aktuelle Runde speichert, aktuelle Windverhältnisse, Anzahl der Würmer, wobei die Würmer wieder eigene Strukturen wären, die Lebenspunkte, Waffenarsenal etc enthalten.

Die Frage wäre nun globaler Pointer der auf die Struktur verweist oder lokale Definition der Struktur vor der Schleife?

Weiterhin bleibt die Frage Spielablauf nochmal über eine separate Schleife vom Rest des Programmes "entkoppeln"?

MfG Der Troll


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 20, 2013 17:19 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Ich meine keinen struct, sondern eine class.
Der Unterschied ist, dass ein struct nur ein Haufen an Daten sind, wohingegen die class Funktionen anbietet, welche direkt auf den Daten arbeiten. Dann hast du sowas wie:
worm->doFire() oder worm->getDamage(75) und den Rest macht der Wurm selber.

Bzgl. global oder lokal hängt davon ab, ob du darauf Zugriff außerhalb der Schleife brauchst oder nicht. An sich sollte lokal gehen, hängt aber von der Programmierung ab und ich würde es nicht werten, welches besser sei.

Lass die innere While-Schleife. Die brauchst du eigentlich nicht.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 20, 2013 17:55 
Offline
DGL Member

Registriert: Sa Apr 14, 2012 14:28
Beiträge: 52
Programmiersprache: c++
Ah, alles klar. Dann werde ich die innere Schleife sein lassen und den globalen Pointer verwenden. Vielen Dank erstmal.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Mär 21, 2013 17:04 
Offline
DGL Member

Registriert: Sa Okt 18, 2008 11:59
Beiträge: 180
ENDLICH KANN ICH KLUGSCHEIßEN!!!!!!!! \o/

Du kannst die lokalen Variablen auch als static bezeichnen. Somit werden sie nicht gelöscht, sind also wie globale Variablen immer verfügbar, sie können auch genauso initialisiert werden. Das ganze hat die sonderbare, aber geile Eigenschaft das diese dennoch lokal sind, von aussen also nicht drauf zugegriffen werden kann. Eignet sich daher nur bedingt für Rekursion, dürfte aber in diesem Falle kein Problem sein.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Mär 21, 2013 18:35 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
SDH.Prod hat geschrieben:
ENDLICH KANN ICH KLUGSCHEIßEN!!!!!!!! \o/

Du kannst die lokalen Variablen auch als static bezeichnen. Somit werden sie nicht gelöscht, sind also wie globale Variablen immer verfügbar, sie können auch genauso initialisiert werden. Das ganze hat die sonderbare, aber geile Eigenschaft das diese dennoch lokal sind, von aussen also nicht drauf zugegriffen werden kann. Eignet sich daher nur bedingt für Rekursion, dürfte aber in diesem Falle kein Problem sein.


dazu eventuell noch der link hier:
http://tigcc.ticalc.org/doc/keywords.html#static
keine Ahnung ob das überhaupt noch aktuell ist, aber nett zu wissen (besonders wenn man mal aufm Taschenrechner rumspielt :) )

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Mär 22, 2013 00:22 
Offline
DGL Member

Registriert: Sa Apr 14, 2012 14:28
Beiträge: 52
Programmiersprache: c++
Sehr interessant, aber ich denke ich bleibe erstmal bei der Variante mit dem globalen Pointer. Irgendwie habe ich einen perversen Spaß daran gefunden im HEAP rumzupfuschen... :twisted:

Mit der Klasse zusammen funktioniert das auch wirklich gut. Die Variablenaufrufe werden zwar immer etwas lang, aber das ist auch nicht weiter schlimm. :mrgreen:

MfG Der Troll


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.015s | 17 Queries | GZIP : On ]