PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie Komme ich wieder in eine Schleife rein???



Blakkeight
24.07.2005, 16:12
Hi
also ich habe folgendes problem, in meinem kleinem game ist es so wenn man gewonnen/verloren hat bekommt man eine xtra seite mit infos wo man auch das spiel beenden oder neustarten kann, das alles lasse ich in einer anderen schleife abspielen als das hauptspiel, so nun wenn man "nochmal" drückt müsste man ja in die alte schleife zurück nur wie stelle ich das an???

Ich programiere mit Purebasic aber ich hoffe es gibt da algemeinheiten für programierer! ^__~

danke im vorraus für eure hilfen.

greetz MJcoox

Crash-Override
24.07.2005, 16:19
Leg die Spiel-Schleife in eine Funktion, dann kann sie am Anfang aufgerufen werden und am Ende...

Blakkeight
24.07.2005, 16:32
ok danke ich probiers mal! ^___^

MagicMagor
24.07.2005, 16:40
Generell bietet sich hier an, über States zu laufen.

Die Grundidee ist:
Das Programm befindet sich immer in einem bestimmten Zustand, wie Menü, Spielablauf und ähnliches.

Dann hast du 1 Hauptschleife, die solange durchlaufen wird, bis der Status auf Exit/Quit whatever steht und das Prorgamm beendet wird.
Abhängig vom State kann dann eine Unterfunktion gerufen werden, die entsprechenden restlichen Befehle enthält, wie zum Beispiel alles bezüglich des Spielablaufes. Um dann also vom Menü ins Spiel zu wechseln braucht man dann eigentlich nur die globale State-Variable umändern.

Crash-Override
24.07.2005, 16:49
Generell bietet sich hier an, über States zu laufen.

Die Grundidee ist:
Das Programm befindet sich immer in einem bestimmten Zustand, wie Menü, Spielablauf und ähnliches.

Dann hast du 1 Hauptschleife, die solange durchlaufen wird, bis der Status auf Exit/Quit whatever steht und das Prorgamm beendet wird.
Abhängig vom State kann dann eine Unterfunktion gerufen werden, die entsprechenden restlichen Befehle enthält, wie zum Beispiel alles bezüglich des Spielablaufes. Um dann also vom Menü ins Spiel zu wechseln braucht man dann eigentlich nur die globale State-Variable umändern.

Sowas?



[Begin Mega Schleife]
[IF GAME]
Gamezeuch...
GAME = FALSE;
ENDE = TRUE;
[ENDIF]
[IF MENÜ]
Menü
...
GAME = TRUE;
MENÜ = FALSE;
[ENDIF]
[IF ENDE]
ENDE...
GAME = TRUE;
ENDE = FALSE;
[ENDIF]
[End Mega Schleife]


Wäre ne Idee... Meine Idee hab ich so gepostet wie ich's unter Delphi realisiert hätte. PureBasic hab ich mir noch nie angesehn...

Blakkeight
24.07.2005, 16:57
das wäre natürlich auch eine idee, das muss ich mal ausprobieren!

MagicMagor
24.07.2005, 17:47
@Crash
So ungefähr, nur mit einer statt unmengen an variablen =)



while (game_state != 0) {
select game_state {
case 1:
game();
break;
case 2:
menu();
break;
default:
game_state = 0;
}
}

Der Select-Kram ist vermutlich syntaktisch total verkehrt, aber in etwa so sieht es dann normalerweise aus.

Blakkeight
25.07.2005, 09:56
hm also die erste variante mit der ifabfrage funzt!

Aber das mit dem switch is auch nicht über, maguggen vlt beim nächsten spiel. ^__~


danke an euch leude!

Aretures
25.07.2005, 13:11
Ich würde die Case Schleife nehmen xD da brauchste nur 1 Vari und musst nicht so viel Tippen ...leichter zu durchschauen

Blakkeight
25.07.2005, 13:19
Ich würde die Case Schleife nehmen xD da brauchste nur 1 Vari und musst nicht so viel Tippen ...leichter zu durchschauen

wieso, so brauch ich doch auch nur eine Variable.


repeat
if schalter = 0
#code#
elseif schalter = 1
#code#
elseif schalter = 2
#code#
endif
forever

Ich brauch dafür nur die variable "schalter" verändern, ganz leicht! Was anderes ist ein switch eigendlich auch nicht, er vereinfacht das ganze nur ein wenig iIndem man nicht mit sovielen If abfragen rumhantieren muss.

AgentJG
14.10.2005, 22:08
Nunja, mag zwar einfach sein, aber man muss ja nicht gleich alles abfragen. Bringt Performance Verluste. Wenn man mehrere Schleifen in die Schleife packt sollte es schneller laufen. Also:

Pseudo


ProgrammInitZeugs;
VariablenFunktionenKlassenBla;
...
do
{

if state = game
{
do while state = game
{
// Das SPIEL
}
}
if state = score
{
do while state = score
{
// Liste
}
}
if state = ...
{
do while state = ...
{
// ...
}
}
}

loop
...
EndeZeugs


EDIT:
Ich glaub ich bin doch etwas müde. Ich hab genau das selbe wie du, nur du hast keine do while Schleifen.

DFYX
14.10.2005, 22:49
Noch toller isses, wenn die States Objekte sind und in einem Vektor gespeichert werden. Das vereinfacht den Übergang zwischen Spiel und Menü. Irgendwo hatte ich da mal ein Tutorial *such* Hm, ich finds grad nicht mehr. Ich weiß nur noch, dass es ne deutsche Seite mit schlichtem hellem Design war. Oder war das doch was anderes? :D

Edit:
Es war doch ne englische Seite und ich hab sie gefunden: http://tonyandpaige.com/tutorials/game1.html

AgentJG
15.10.2005, 13:53
Noch toller isses, wenn die States Objekte sind und in einem Vektor gespeichert werden. Das vereinfacht den Übergang zwischen Spiel und Menü. Irgendwo hatte ich da mal ein Tutorial *such* Hm, ich finds grad nicht mehr. Ich weiß nur noch, dass es ne deutsche Seite mit schlichtem hellem Design war. Oder war das doch was anderes? :D

Edit:
Es war doch ne englische Seite und ich hab sie gefunden: http://tonyandpaige.com/tutorials/game1.html



Hi
also ich habe folgendes problem, in meinem kleinem game ist es so wenn man gewonnen/verloren hat bekommt man eine xtra seite mit infos wo man auch das spiel beenden oder neustarten kann, das alles lasse ich in einer anderen schleife abspielen als das hauptspiel, so nun wenn man "nochmal" drückt müsste man ja in die alte schleife zurück nur wie stelle ich das an???

Ich programiere mit Purebasic aber ich hoffe es gibt da algemeinheiten für programierer! ^__~

danke im vorraus für eure hilfen.

greetz MJcoox


In PureBasic gibt es zwar Interfaces, aber ich weiß nicht ob die genauso arbeiten wie C++ Klassen. Ich zieh mir gleich mal (wieder) die Demo und schau ob das umsetztbar ist.