Von Haupt-/ Unterprogramm zu Unterprogramm springen
Übersicht

hotzenwaldseppBetreff: Von Haupt-/ Unterprogramm zu Unterprogramm springen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich versuch mich gerade an einem Managerspiel.
Ich habe bis jetzt ein paar Menues programmiert. a) 1. Spiel starten --> 2. Karriere / Feste Teamauswahl b) 1.Spiel Laden Ich springe z.B. nach der Auswahl "Spiel Starten /Spiel Laden" mit Gosub in das Menü "Karriere/Feste Teamauswahl" Wie kann ich es realisieren, das ich z.B über einen "Back Button" wieder ins Menü "Spiel starten / Spiel Laden Ich hab das ganze auch schon mit Goto probiert aber das geht ja auch nicht. Gibts eine Lösung ähnlich wie beim C64 wo ich einfach in Zeile 1090 schreiben konnte Goto 60. Ich möchte einen Rücksprung machen. So wie ich das ganze immer interpretiere kann ich immer nur nach unten springen |
||
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
.Routine1
Gosub Routine2 Return .Routine2 If Button = true then Return Return |
||
antome |
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also aus dem Spiel Starten Menü macht es durchaus Sinn mit Goto in die Hauptschleife des Spieles zu springen, nicht mit Gosub oder sonstwas.
Da sind wir schon bei einem wichtigen Punkt. Dein Spiel sollte idealer weise eine "Hauptschleife", eine Art Zentrale haben, von wo aus bei Bedarf die verschiedenen Unterprogramme mit Gosubs angesprungen werden. Ja, in alten Basic Sprachen hatten die Zeilen eine Nummer wir 1030 und konnten so mit Goto angesprungen werden. Das ist auch in BlitzBasic ähnlich. Hier kann man nicht jeder Zeile eine Nummer geben, aber man kann an den wenigen Stellen wo eine Subrutine beginnt einen Label setzen (Wort davor ein Punkt), was dann die gleiche Funktion erfüllt wie ehemals die Zeilennummer. .Karriere |
||
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde einfach ein Select Case nehmen, welches sich auf den Spielstatus bezieht. Je nach dem welchen Wert dieser Status hat, wird ein anderer Teil des Programmes ausgeführt. Mit F1 bis F4 kann man durch die verschiedenen Teile des Programmes springen und mit Esc wird das Programm beendet.
Code: [AUSKLAPPEN] Graphics 640,480,0,2
Global SpielStatus = 1 Function SpielStatusSteuerung() If KeyHit (1) Then SpielStatus = 0 If KeyHit (59) Then SpielStatus = 1 If KeyHit (60) Then SpielStatus = 2 If KeyHit (61) Then SpielStatus = 3 If KeyHit (62) Then SpielStatus = 4 End Function While Not SpielStatus = 0 Select SpielStatus Case 1 SpielStatusSteuerung() Color 255,0,0 Text 30,30,"Dies könnte das Menü sein" Case 2 SpielStatusSteuerung() Color 0,255,255 Text 30,30,"Dies könnte ein Hilfstext sein" Case 3 SpielStatusSteuerung() Color 255,0,255 Text 30,30,"Dies könnten die Optionen sein" Case 4 SpielStatusSteuerung() Color 255,255,0 Text 30,30,"Dies könnte das Spiel sein" End Select Flip:Cls Wend |
||
Play Satyr! |
hotzenwaldsepp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: ; LoadImage and DrawImage example
HidePointer ;Windows Mauszeiger wird versteckt ; Declare a variable to hold the graphic file handle ; Set a graphics mode Graphics 800,600,16,2 AppTitle "F1 Grand Prix Manager" ; Set drawing operations for double buffering SetBuffer BackBuffer() Global mh=0 Repeat ;*****************************************Startauswahl****************************************************** ;*********************************************************************************************************** ;*********************************************************************************************************** .start button_newgame=LoadImage("button1_gfx\newgame.bmp") button_newgame_o=LoadImage("button1_gfx\newgame_o.bmp");for Mouseover button_loadgame=LoadImage("button1_gfx\loadgame.bmp") button_loadgame_o=LoadImage("button1_gfx\loadgame_o.bmp");for Mouseover button_newgame_karr=LoadImage("button1_gfx\newgame_karr.bmp") button_newgame_karr_o=LoadImage("button1_gfx\newgame_karr_o.bmp");for Mouseover button_newgame_ausw=LoadImage("button1_gfx\newgame_ausw.bmp") button_newgame_ausw_o=LoadImage("button1_gfx\newgame_ausw_o.bmp") button_exit=LoadImage("button1_gfx\exit.bmp") button_exit_o=LoadImage("button1_gfx\exit_o.bmp"); for Mouseover gfxMouse=LoadImage("misc_gfx\Mouse.bmp") mh = MouseHit(1);Abfrage Mousehit Cls ; clear the screen DrawImage button_newgame,580,100 ; Draw the image! DrawImage button_loadgame,580,150 ; Draw the image! DrawImage button_exit,20,575; Draw Image ;**************************Auswahl_Abfrage********************************************************** ;Newgame_abfrage If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame,580,100,0) DrawImage button_newgame_o,580,100; Mouse_Over If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame,580,100,0) And mh=0 Then newgame=0 Else If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame,580,100,0) And mh=1 Then newgame = 1 ;Loadgaem_abfrage If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_loadgame,580,150,0) DrawImage button_loadgame_o,580,150; Mouse_Over If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_loadgame,580,150,0) And mh=0 Then loadgame=0 Else If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_loadgame,580,150,0) And mh=1 Then loadgame = 1 ;Exit_abfrage If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_exit,20,575,0) DrawImage button_exit_o,20,575; Mouse_Over If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_exit,20,575,0) And mh=0 Then exit_game=0 Else If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_exit,20,575,0) And mh=1 Then exit_game = 1 ;Draw_Mouse-->Position muss hier sein, damit es im obersten Layer steht DrawImage gfxMouse,MouseX(),MouseY() ;***************************************Durchführung der Auswahl*********************************** If newgame=1 Then Gosub newgame_menu Else If loadgame=1 Then Gosub loadgame_menu Else If exit_game=1 Then Exit Else Flip ; flip the image into view and clear the back buffer Until KeyHit(1) End ;**************************************************************************************************** ;*************************New_Game **************************************************** ;**************************************************************************************************** ; Let's do a loop where the graphic is drawn wherever the ; mouse is pointing. ESC will exit. Repeat .newgame_menu mh = MouseHit(1);Abfrage Mousehit Cls ; clear the screen DrawImage button_newgame_karr,580,100 ; Draw the image! DrawImage button_newgame_ausw,580,150 ; Draw the image! DrawImage button_exit,20,575; Draw Image DrawImage gfxMouse,MouseX(),MouseY() ;Karriere Abfrage If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame_karr,580,100,0) DrawImage button_newgame_karr_o,580,100;Mouseover If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame_karr,580,100,0) And mh=0 Then newgame_karr =0 Else If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame_karr,580,100,0) And mh=1 Then newgame_karr = 1 ;Teamauswahl Abfrage If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame_ausw_o,580,150,0) DrawImage button_newgame_ausw_o,580,150 If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame_ausw,580,150,0) And mh=0 Then newgame_ausw=0 Else If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame_ausw,580,150,0) And mh=1 Then newgame_ausw = 1 ;Exit_abfrage If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_exit,20,575,0) DrawImage button_exit_o,20,575; Mouse_Over If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_exit,20,575,0) And mh=0 Then exit_game=0 Else If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_exit,20,575,0) And mh=1 Then exit_game = 2 ;Draw_Mouse-->Position muss hier sein, damit es im obersten Layer steht DrawImage gfxMouse,MouseX(),MouseY() If newgame_karr=1 Then Print"karr" Else If newgame_ausw=1 Then Gosub Start_mit_Teamauswahl Else If exit_game=2 Then Goto start Flip ; flip the image into view and clear the back buffer Until KeyHit(1) Return ;***************************************************************************************************** ;*****************************load_Game************************************************ ;***************************************************************************************************** Repeat .loadgame_menu Cls ; ReadDir/NextFile$/CloseDir example ; Define what folder to start with ... folder$="c:\user\f1ms" myDir=ReadDir(folder$) file$=NextFile$(myDir) Print file$ Flip ; flip the image into view and clear the back buffer Until KeyHit(1) Return ;****************************************************************************************************** .Start_mit_Teamauswahl ;****************************************************************************************************** ; Laden aller Teamlogos l_arrows=LoadImage("team_gfx\arrows\teamlogo.bmp") l_ascaron=LoadImage("team_gfx\ascaron\teamlogo.bmp") l_bmw=LoadImage("team_gfx\bmw\teamlogo.bmp") l_brabham=LoadImage("team_gfx\brabham\teamlogo.bmp") l_crammond=LoadImage("team_gfx\crammond\teamlogo.bmp") l_ferrari=LoadImage("team_gfx\ferrari\teamlogo.bmp") l_honda=LoadImage("team_gfx\honda\teamlogo.bmp") l_lotus=LoadImage("team_gfx\lotus\teamlogo.bmp") l_mastra=LoadImage("team_gfx\mastra\teamlogo.bmp") l_mclaren=LoadImage("team_gfx\mclaren\teamlogo.bmp") l_minardi=LoadImage("team_gfx\minardi\teamlogo.bmp") l_prodrive=LoadImage("team_gfx\prodrive\teamlogo.bmp") l_redbull=LoadImage("team_gfx\redbull\teamlogo.bmp") l_renault=LoadImage("team_gfx\renault\teamlogo.bmp") l_software2000=LoadImage("team_gfx\software2000\teamlogo.bmp") l_spyker=LoadImage("team_gfx\spyker\teamlogo.bmp") l_stratec=LoadImage("team_gfx\stratec\teamlogo.bmp") l_superaguri=LoadImage("team_gfx\superaguri\teamlogo.bmp") l_tororosso=LoadImage("team_gfx\tororosso\teamlogo.bmp") l_toyota=LoadImage("team_gfx\toyota\teamlogo.bmp") l_williams=LoadImage("team_gfx\williams\teamlogo.bmp") Repeat mh = MouseHit(1);Abfrage Mousehit Cls ; clear the screen DrawImage l_arrows,20,100 ; Draw the image! DrawImage l_ascaron,80,100 ; Draw the image! DrawImage l_bmw,140,100 ; Draw the image! DrawImage l_brabham,200,100 ; Draw the image! DrawImage l_crammond,260,100 ; Draw the image! DrawImage l_ferrari,320,100 ; Draw the image! DrawImage l_honda,380,100 ; Draw the image! DrawImage l_lotus,440,100 ; Draw the image! DrawImage l_mastra,500,100 ; Draw the image! DrawImage l_mclaren,560,100 ; Draw the image! DrawImage l_minardi,20,160 ; Draw the image! DrawImage l_prodrive,80,160 ; Draw the image! DrawImage l_redbull,140,160 ; Draw the image! DrawImage l_renault,200,160 ; Draw the image! DrawImage l_software2000,260,160 ; Draw the image! DrawImage l_spyker,320,160 ; Draw the image! DrawImage l_stratec,380,160 ; Draw the image! DrawImage l_superaguri,440,160 ; Draw the image! DrawImage l_tororosso,500,160 ; Draw the image! DrawImage l_toyota,560,160 ; Draw the image! DrawImage l_williams,20,240 ; Draw the image! DrawImage button_exit,20,575; Draw Image ;Draw_Mouse-->Position muss hier sein, damit es im obersten Layer steht DrawImage gfxMouse,MouseX(),MouseY() Flip ; flip the image into view and clear the back buffer Until KeyHit(1) Return Wieso geht dass dann nicht? Ich weiß, der Code ist jetzt schon unübersichtlich, aber ich hab jetzt auch schon viel dran rumgebastelt und probiert wie ich wieder in die Startauswahl komme |
||
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kp, aber ich weiß schonmal, das du Buttons, vor dem Repeat befehl laden musst, sonst lädst du bei jedem Durchgang der Schleife die Bilder neu, was irgendwann den Speicher sprengt ![]() |
||
°_° °.° °~° °v° .. -.- |
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dein Proramm ist auch ansonnsten unsinnig eingeteilt, man macht keine Subroutinen in denen etwas solange geladen wird in einer Schleife und beendet die Schleife mit einem KeyHit.
Mach Lade Speicher -Routinen in Funktionen und beende sie wenn EOF erreicht ist oder eine festgelegte Anzahl Datenblöcke geladen oder gespeichert ist. Ansonnsten hab ich dir das oben schon gezeigt zu kommst mit einem Return zurück. |
||
antome |
![]() |
Schranz0r |
![]() Antworten mit Zitat ![]() |
---|---|---|
Machs so wie DerHase es gesagt hat, ist die schönste, und sauberste Lösung, ohne einen Codewirrwar zu bekommen. | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
hotzenwaldsepp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich wollte eigentlich nur wissen warum ich mit dem Goto Befehl nicht wieder auf .start springen kann.
Ich weiß das das ganze ziemlich lausig ist. Ich befinde mich auf dem Wege der Besserung. |
||
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist dir schonmal aufgefallen, dass dein "Back"-Button garnicht im Bildschirmbereich ist?
Code: [AUSKLAPPEN] ... If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_exit,20,575,0) And mh=1 Then exit_game = 2 x=20 : y=575. Wie willst du den da bitte anklicken wenn graphics 640,480 is? |
||
°_° °.° °~° °v° .. -.- |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lass dein Programm mal mit Debugger laufen, vielleicht fällt Dir dann ja was auf... | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
hotzenwaldsepp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab jetzt einiges ein wenig aufgeräumt und das Gosub bzw. Goto geht teilweise auch. Nur wenn ich beispielsweise von ".start_mit_teamauswahl" mit F1 wieder ins ".start_menu" wechseln will (per goto), dann springt er nur ins ".newgame_menu".
Code: [AUSKLAPPEN] HidePointer ;Windows Mauszeiger wird versteckt ; Declare a variable to hold the graphic file handle ; Set a graphics mode Graphics 800,600,16,2 AppTitle "F1 Grand Prix Manager" ; Set drawing operations for double buffering SetBuffer BackBuffer() Global mh=0 button_newgame=LoadImage("button1_gfx\newgame.bmp") button_newgame_o=LoadImage("button1_gfx\newgame_o.bmp");for Mouseover button_loadgame=LoadImage("button1_gfx\loadgame.bmp") button_loadgame_o=LoadImage("button1_gfx\loadgame_o.bmp");for Mouseover button_newgame_karr=LoadImage("button1_gfx\newgame_karr.bmp") button_newgame_karr_o=LoadImage("button1_gfx\newgame_karr_o.bmp");for Mouseover button_newgame_ausw=LoadImage("button1_gfx\newgame_ausw.bmp") button_newgame_ausw_o=LoadImage("button1_gfx\newgame_ausw_o.bmp") button_exit=LoadImage("button1_gfx\exit.bmp") button_exit_o=LoadImage("button1_gfx\exit_o.bmp"); for Mouseover gfxMouse=LoadImage("misc_gfx\Mouse.bmp") .start_menu Repeat mh = MouseHit(1) Cls ; clear the screen DrawImage button_newgame,580,100 ; Draw the image! DrawImage button_loadgame,580,150 ; Draw the image! DrawImage button_exit,20,575; Draw Image ;**************************Auswahl_Abfrage********************************************************** ;Newgame_abfrage If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame,580,100,0) DrawImage button_newgame_o,580,100; Mouse_Over If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame,580,100,0) And mh=0 Then newgame=0 Else If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame,580,100,0) And mh=1 Then newgame = 1 ;Loadgaem_abfrage If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_loadgame,580,150,0) DrawImage button_loadgame_o,580,150; Mouse_Over If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_loadgame,580,150,0) And mh=0 Then loadgame=0 Else If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_loadgame,580,150,0) And mh=1 Then loadgame = 1 ;Exit_abfrage If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_exit,20,575,0) DrawImage button_exit_o,20,575; Mouse_Over If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_exit,20,575,0) And mh=0 Then exit_game=0 Else If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_exit,20,575,0) And mh=1 Then exit_game = 1 ;Draw_Mouse-->Position muss hier sein, damit es im obersten Layer steht DrawImage gfxMouse,MouseX(),MouseY() ;***************************************Durchführung der Auswahl*********************************** If newgame=1 Then Gosub newgame_menu Else If loadgame=1 Then Gosub loadgame_menu Else If exit_game=1 Then Exit Else Print newgame Print exitgame Flip ; flip the image into view and clear the back buffer Until KeyHit (1) End .newgame_menu Repeat Cls mh = MouseHit(1);Abfrage Mousehit DrawImage button_newgame_karr,580,100 ; Draw the image! DrawImage button_newgame_ausw,580,150 ; Draw the image! DrawImage button_exit,20,575; Draw Image DrawImage gfxMouse,MouseX(),MouseY() ;Karriere Abfrage If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame_karr,580,100,0) DrawImage button_newgame_karr_o,580,100;Mouseover If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame_karr,580,100,0) And mh=0 Then newgame_karr =0 Else If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame_karr,580,100,0) And mh=1 Then newgame_karr = 1 ;Teamauswahl Abfrage If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame_ausw_o,580,150,0) DrawImage button_newgame_ausw_o,580,150 If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame_ausw,580,150,0) And mh=0 Then newgame_ausw=0 Else If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_newgame_ausw,580,150,0) And mh=1 Then newgame_ausw = 1 ;Exit_abfrage If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_exit,20,575,0) DrawImage button_exit_o,20,575; Mouse_Over If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_exit,20,575,0) And mh=0 Then exit_game=0 Else If ImagesCollide(gfxMouse,MouseX(),MouseY(),0,button_exit,20,575,0) And mh=1 Then exit_game = 1 ;Draw_Mouse-->Position muss hier sein, damit es im obersten Layer steht DrawImage gfxMouse,MouseX(),MouseY() If newgame_karr=1 Then Print"karr" Else If newgame_ausw=1 Then Gosub start_mit_teamauswahl Else If exit_game=1 Then Exit Flip ; flip the image into view and clear the back buffer Print"newgame" If KeyHit (59) Then Return Until KeyHit(1) End .loadgame_menu Repeat Cls Print"loadgame" If KeyHit (59) Then Return Until KeyHit(1) End .start_mit_teamauswahl Repeat Cls Print"start_mit_teamauswahl" If KeyHit (59) Then Goto start_menu Until KeyHit(1) End Until KeyHit(1) |
||
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Return springt dahin zurück von wo du mit GoSub reingesprungen bist. | ||
antome |
hotzenwaldsepp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich hab Return gar nicht ausgeführt sondern mit F1
Code: [AUSKLAPPEN] If KeyHit (59) Then Goto start_menu
|
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
sowas nennt man Spaghetticode. War schon auf dem Cevi hässlich und ist es hier genauso. Weshalb ? Weil es eben unübersichtlich ist und man ruckzuck den Überblick über Variablen (und damit eventuelle Sprungziele etc.) verliert.
Ich kann Dir nur raten diesen Mischmasch sein zu lassen und auf Functions umzusteigen. Solltst Du das nicht wollen, empfehle ich ein zweites mal den Debugger zu bemühen und das Programm Schritt für Schritt auszuführen. Wahrscheinlich ist irgendwo ne Variable noch gesetzt die den Code automatisch weiterverzweigen lässt. Ich persönlich tu mir den Wirrwar mal nicht an. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du musst ein Return benutzen wenn du mit Gosub in eine Unterroutine gesprungen bist, wenn du aus dieser nun mit Goto woanders hin springst und dort ein Return einsetzt wird eben dieses Return dich zu deinem letzen Gosub-Punkt zurückbefördern. | ||
antome |
hotzenwaldsepp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: antome
Verfasst am: Mi Okt 18, 2006 10:30 am Du musst ein Return benutzen wenn du mit Gosub in eine Unterroutine gesprungen bist, wenn du aus dieser nun mit Goto woanders hin springst und dort ein Return einsetzt wird eben dieses Return dich zu deinem letzen Gosub-Punkt zurückbefördern. Das hab ich kapiert, nur dass dummerweise in ".start_menu" gar kein Return vorkommt . Hab hier leider keinen Debugger bei der Testversion. |
||
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du hast den Überblick verloren
ausserdem drückst du immer die selben Tasten um irgendwo rauszuspringen, das ist alles total unübersichtlich. Benutze am besten erstmal gar kein Goto nur Gosub und Return oder Funktionen wenn du dir sowas angwöhnst wirst du irgendwann das Handtuch werfen weil du nicht mehr durchblickst. Ich verwende Goto zwar auch ab und zu, aber nur wenn es unbedingt nötig ist. Ausserdem hast du Subroutinen innerhalb einer Subroutine -> .newgame_menu |
||
antome |
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es könnte eventuel daran liegen, dass new_game nicht auf 0 gesetzt wird.
Ich rate Dir aber den ganzen Code neu zu schreiben und Select Case und Funktionen zu verwenden. Alles ist bei Dir doppelt und dreifach verwendet. Den Flip befehl brauchst Du izum Beispiel in einem Programm im Allgemeinen ein einziges mal schreiben. Dies macht auch Sinn, denn wenn Du etwas diesem Flip hinzufügen willst, z.B. irgendeinen Timer oder einen vSync musst Du dies nur einmal machen. In Deinem Code aber musst Du erst alle Flips suchen und dann mühsam die Veränderung bei jedem einfügen. Auch die dreimaligen ImageCollide Abfragen solltest Du Dir sparen. Man kann natürlich alles so lösen, nur wird es für den Programmierer sehr unübersichtlich und eine Fehlersuche zur Qual. |
||
Play Satyr! |
hotzenwaldsepp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke !!! ![]() Du hast schon recht, der Code ist tatsächlich etwas unübersichtlich. Ich werd mich mal ranmachen und das ganze mit Funktionen und Select Case zu versuchen. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group