goto oder gosub frage
Übersicht

*GHOST*Betreff: goto oder gosub frage |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also, ich habe mein programm in drei teile geteilt:
.start .modus .hilfe wenn ich im .start bin, dann kann man, in dem eine best. aktion durchgeführt wurde, zum modus und zur hilfe kommen. wenn ich zum modus will, klappt das prima und wenn man da etwas klickt, gehts auch wieder zum start. allerdings wenn ich auf hilfe klicke, dann bleibt das programm hängen... # warum? hat einer ne ahnung, danke! ![]() |
||
Michi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ohne den ganzen Code wird dir das wohl keiner sagen können | ||
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968 Code: [AUSKLAPPEN] __ <_/__\_> <--- die Wayne-Zeichnung |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vermutlich Tippfehler oder dergleichen. Poste bitte den Code, bzw. wenn er schon länger ist den entsprechenden Ausschnitt, dann ists sehr viel leichter zu helfen ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
*GHOST* |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
okay:
Code: [AUSKLAPPEN] .start Cls Graphics 1024,768 SetBuffer BackBuffer() background=LoadImage("data\gfx\background.jpg") cursor=LoadImage("data\gfx\cursor.bmp") starten_button=LoadImage("data\gfx\buttons\starten.bmp") optionen_button=LoadImage("data\gfx\buttons\optionen.bmp") credits_button=LoadImage("data\gfx\buttons\credits.bmp") beenden_button=LoadImage("data\gfx\buttons\beenden.bmp") hilfe_button=LoadImage("data\gfx\buttons\hilfe.bmp") MaskImage starten_button,0,255,0 MaskImage optionen_button,0,255,0 MaskImage credits_button,0,255,0 MaskImage beenden_button,0,255,0 MaskImage hilfe_button,0,255,0 While Not KeyHit(1) DrawBlock background,0,0 DrawImage starten_button,370,200 DrawImage hilfe_button,370,235 DrawImage credits_button,370,270 DrawImage beenden_button,370,305 mausx=MouseX() mausy=MouseY() Text 20,20, mausx Text 70,20,mausy If MouseX()>370 And MouseX()<370+270 And MouseY()>200 And MouseY()<200+30 And MouseDown(1) Then Gosub spielmodi If MouseX()>370 And MouseX()<370+270 And MouseY()>235 And MouseY()<235+30 And MouseDown(1) Then Gosub hilfe If MouseX()>370 And MouseX()<370+270 And MouseY()>270 And MouseY()<270+30 And MouseDown(1) Then Text 100,100,"credits" If MouseX()>370 And MouseX()<370+270 And MouseY()>305 And MouseY()<305+30 And MouseDown(1) Then End Flip Wend .spielmodi Cls einzel_button=LoadImage("data\gfx\buttons\einzel.bmp") multi_button=LoadImage("data\gfx\buttons\multi.bmp") training_button=LoadImage("data\gfx\buttons\training.bmp") hauptmenü_button=LoadImage("data\gfx\buttons\hauptmenü.bmp") MaskImage einzel_button,0,255,0 MaskImage multi_button,0,255,0 MaskImage training_button,0,255,0 MaskImage hauptmenü_button,0,255,0 While Not KeyHit(1) DrawBlock background,0,0 DrawImage einzel_button,370,200 DrawImage multi_button,370,235 DrawImage training_button,370,270 DrawImage hauptmenü_button,370,305 mausx=MouseX() mausy=MouseY() Text 20,20, mausx Text 70,20,mausy If MouseX()>370 And MouseX()<370+270 And MouseY()>200 And MouseY()<200+30 And MouseDown(1) Then Text 100,100,"einzel" If MouseX()>370 And MouseX()<370+270 And MouseY()>235 And MouseY()<235+30 And MouseDown(1) Then Text 100,100,"multi" If MouseX()>370 And MouseX()<370+270 And MouseY()>270 And MouseY()<270+30 And MouseDown(1) Then Text 100,100,"training" If MouseX()>370 And MouseX()<370+270 And MouseY()>305 And MouseY()<305+30 And MouseDown(1) Then Goto start Flip Wend .hilfe Cls schrift=LoadFont("data\stgs\eurasia.ttf",20) SetFont schrift hauptmenü_button=LoadImage("data\gfx\buttons\hauptmenü.bmp") Text 370,220,"Supersoakerspiel text" While Not KeyHit(1) DrawBlock background,0,0 DrawImage hauptmenü_button,370,235 If MouseX()>370 And MouseX()<370+270 And MouseY()>235 And MouseY()<235+30 And MouseDown(1) Then Text 100,100,"multi" Wend |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da sind gleich mehrere Fehler. Zum einen lädst Du jedesmal wenn Du irgendein Label aufrufst die Grafiken und Schriftarten neu, zum anderen fehlt bei .hilfe in der Schleife wohl das Flip, was wahrscheilich Deinen Fehler darstellt ![]() Edit: Ein Cls ausserhalb der Schleife ist meist nicht sonderlich sinnvoll ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
*GHOST* |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich danke dir für die tips ![]() |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Ein Tipp, gewöhn' dir das Zeuch mit Goto etc... lieber ganz schnell ab. ![]() Spätestens bei einem größeren Programm wirst du es irgendwann verfluchen, das ist sowas von unsauber! grüße |
||
*GHOST* |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aber da ist nochwas:
sagen wir, ich bin im hauptmenü (start) klicke dann auf hilfe, dann kommt hilfe. von der hilfe aus kann ich ja zurück ins menü (start). das funzt auch. aber wenn ich dann NOCHMAL in die hilfe will, dann kommt bei jedem klick nur wieder das hauptmenü, nicht die hilfe. was ist das?!? PS: mit dem modus funzt das immer, so wie ich das will, nur die hilfe halt nicht... |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Es gibt Leute die werden's nie lernen... Versuch es doch lieber gleich ohne den Goto Kram zu lösen?!? Siehstja, das du jetzt schon Probleme bekommst. ![]() grüße |
||
*GHOST* |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wie soll ich das denn sonst lösen?????? ![]() |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Nicht alles im "Spagetticodestil" programmieren, sondern die Möglichkeiten von BlitzBasic etwas mehr ausschöpfen, soll heisen, Funktionen, Schleifen etc verwenden! grüße |
||
*GHOST* |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wenn du mir sagst, wie ich mein menü mit functionen machen kann, dann will ich es gerne tun... ![]() |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Du könntest beispielsweise deine Codeteile zwischen, den Labels, in Funktionen packen und diese dann bei Bedarf aufrufen. Außerdem schadet ein wenig Nachdenken sowiso nichts! grüße |
||
*GHOST* |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke, hab mir mal die hilfe nochmals gründlich durchgeguckt, ich weiß jetzt wie functionen funktionieren ( ![]() ![]() |
||
![]() |
Egon Dragon |
![]() Antworten mit Zitat ![]() |
---|---|---|
das ist nicht schwer
überall wo du in deinem code gosub... geschrieben hast schreibst du jetzt den namen der function zum beispiel: Code: [AUSKLAPPEN] if keyhit(bla) then Hilfe() und da wo du das hilfe-label hast schreibst du: Function Hilfe() ;irgentwas end function und so weiter - da fällt mir noch ne frage ein sind goto und gosub langsamer oder schneller als while und repeat. ich frage das, weil ich mal son code gesehen hab wo stand: Code: [AUSKLAPPEN] .schleifenanfang ;irgentwas wo bla1 >0 wird wenn man was macht if bla1=0 then goto schleifenanfang ;irgentwas anderes |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast Du ein wenig Webspace? dann pack das Zeug mal zusammen (Grafiken und Code) und lads hoch, damit man das ausprobieren kann. Ich hab keine Lust den ganzen Code zu durchwühlen und die Loadimages zu ersetzen ![]() P.S.: Zu dem "Goto ist böse": Ich verwende auch Goto / Gosub und wenn man es überlegt einsetzt ist es keinesfalls evil. Nur weils mal in der OH stand muss es doch nicht jeder nachplappern ![]() Edit: @Egon Dragon: Ich habs nicht ausprobiert, aber es dürfte sich im Speed nicht unterscheiden da beim compillieren die Schleifen auch in Goto-Konstrukte zerlegt werden. |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
- Zuletzt bearbeitet von Hubsi am Do, Apr 07, 2005 14:52, insgesamt einmal bearbeitet
![]() |
diGGaGruppenKaspar |
![]() Antworten mit Zitat ![]() |
---|---|---|
goto überlegt einsetzen, und goto überall einsetzen is ja auch ein unterschied nesch | ||
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und glaubte im Licht der Straßenlampe Den Geist unseres jahrhunderts auf der Straße zu sehen Der uns sagte, daß wir alle am Rande des Abgrunds stehen. - Al Steward Athlon 64 3000+ / Radeon 9600 / 1024mb ddram |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sicher, aber an der Struktur des Codes von GHOST ist doch in dieser Hinsicht nichts auszusetzen? Oder ist ein entscheidender Unterschied wenn ich mit zwölfundneunzig Trilliarden Globalen bzw. Parametern arbeiten muss oder ob ich ein Gosub einsetze (in dem Stadium sicher auch nicht erwähnenswert, aber der Code wird sich ja noch weiter entwickeln) ? Aber im Prinzip ist es mir wurscht, soll jeder so machen wie er es für richtig hält und mir mein Goto lassen ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Gast |
![]() Antworten mit Zitat |
|
---|---|---|
Noch n Tipp!
Setzt die Labels immer hinter dein Programmende (d.h. nach END) da sie sich, wenn sie im Programmcode an der Reihe sind, auch ohne Aufforderung ausgeführt werden! Ausser du willst es natürlich so haben!!!!!!!! ![]() MFG Hof das war irgendwie verständlich!!! ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group