Zurück im Menü?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

black_threat

Betreff: Zurück im Menü?

BeitragMo, Jun 28, 2004 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Also hab jetzt ein menü geproggt, und im untermenü gibt es einen zurück button und wie kann man jetzt machen das man ins hauptmenü zurück kommt?

black_threat

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Jun 28, 2004 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
kommt drauf an wie du aus deinem hauptmenue rausspringst!

Hoffendlich nicht mit GOTO....

Hauptschleife......
Menue
if mouseklick auf button spiel dann Spiel() ; springt zur Function

Hauptschleife.....ende
....
....
Function Spiel()
Spielcode
if mouse auf zurück Button then return ;return springt wieder in die Hauptschleife direckt nach Spiel()
end function


das gleiche gilt für Sprungadressen mit Gosub

ist jetzt aber nur Pseudocode , hoffe aber das es verständlich ist
[BB2D | BB3D | BB+]
 

black_threat

BeitragMo, Jun 28, 2004 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
da ich etwas begriffstützig bin nochmal mal code:

Code: [AUSKLAPPEN]
Graphics 1024,768,32,1
SetBuffer BackBuffer()


button=LoadImage("button.png")
button2=LoadImage("button2.png")
creditsb=LoadImage("buttoncredits.png")
creditsba=LoadImage("creditsba.png")
gfxCircle=LoadImage("gfxCricle.png")
backa=LoadImage("backa.png")
back=LoadImage("back.png")

MaskImage gfxCircle,255,0,255
HidePointer


While Not KeyHit(1)

circleX = MouseX()
circleY = MouseY()
Maustaste = MouseHit (1)

If circlex>100 And circlex<180 And circley>100 And circley<120 Then
DrawImage button2,100,100
If Maustaste = 1 Then
Exit
End If
Else
DrawImage button,100,100
End If

If circlex>100 And circlex<180 And circley>150 And circley<170 Then
DrawImage creditsba,100,150
If Maustaste = 1 Then menue=1


Else
DrawImage creditsb,100,150
End If

If menue = 1 Then
Cls

btc=LoadImage("credits.png")
MaskImage btc,255,0,255
DrawImage btc,400,330
If circlex>100 And circlex<180 And circley>700 And circley<720 Then
DrawImage backa,100,700
If Maustaste = 1 Then
;Sprung zum Hauptmenü
End If
Else
DrawImage back,100,700
EndIf
EndIf
 
DrawImage gfxCircle,circleX,circleY

Flip
Cls

Wend
End


so was oder wie muss ich das jetzt machen?

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Jun 28, 2004 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe mal schnell den Code mit einem Untermenue erstellt
da es einfacher zu lesen ist und die Uebersicht nicht verloren geht
Code: [AUSKLAPPEN]
Graphics 1024,768,32,1
SetBuffer BackBuffer()

Global    circleX, circleY, Maustaste

button=LoadImage("button.png")
button2=LoadImage("button2.png")
creditsb=LoadImage("buttoncredits.png")
creditsba=LoadImage("creditsba.png")
gfxCircle=LoadImage("gfxCricle.png")
backa=LoadImage("backa.png")
back=LoadImage("back.png")

MaskImage gfxCircle,255,0,255
HidePointer


While Not KeyHit(1)
Mausabfrage() ; Mausdaten holen

   ;----------------------Beenden Button
   If circlex>100 And circlex<180 And circley>100 And circley<120 Then
         DrawImage button2,100,100
         If Maustaste = 1 Then
            Exit
         End If
   Else
      DrawImage button,100,100
   End If
   ;------------------Credits Button
   If circlex>100 And circlex<180 And circley>150 And circley<170 Then
      DrawImage creditsba,100,150
      If Maustaste = 1 Then menue=1
   Else
      DrawImage creditsb,100,150
   End If
   
   If menue = 1 Then ; menue punkt 1 angewählt
      Menue = 0 ; wieder ausschalten da sonst immer wieder hier rein gesprungen wird
      Gosub Credits_Anzeige ; mal mit Gosub
         
   EndIf
    
   DrawImage gfxCircle,circleX,circleY
   Flip
   Cls
Wend
End




; UNTER PROGRAMME
.Credits_Anzeige
   btc = LoadImage("credits.png"); nur einmal laden da es ja nicht oft gebraucht wird
   MaskImage btc,255,0,255
Repeat ; schleife um das bild immer neu zu zeichnen
   Cls
   
   Mausabfrage()

   DrawImage btc,400,330
   
      ; zurück Button
      If circlex>100 And circlex<180 And circley>700 And circley<720 Then
         DrawImage backa,100,700
         If Maustaste = 1 Then
            Exit ; schleife verlassen
         End If
      Else
         DrawImage back,100,700
      EndIf
      ; Mauszeiger
      DrawImage gfxCircle,circleX,circleY
   Flip
Forever

   FreeImage btc ; das Bild wieder löschen, wird ja nicht mehr gebraucht
   
Return ; zurück ins hauptmenue



Function Mausabfrage()
   circleX = MouseX()
   circleY = MouseY()
   Maustaste = MouseHit (1)
End Function

du solltest auf jeden Fall deine Code zerstückeln das ist immer einfacher..
mit functionen und Subroutinen geht das schon ganz gut !
das geänderte ist jetzt noch nicht optimal gelöst aber hoffe das es verständlich ist.
übrigens kannste den Code mit Tabs und Leerzeichen oder Doppelpunkt einrücken, dann ersparst du dir lästiges suchen wo den ein end if fehlt oder zuviel ist!

der code ist nicht getestet also debugger an und im fenstermodus laufen lassen
[BB2D | BB3D | BB+]
 

black_threat

BeitragDi, Jun 29, 2004 13:29
Antworten mit Zitat
Benutzer-Profile anzeigen
gigantisches *thx* funzt einwandfrei Very Happy
 

Andy_Y

BeitragDo, März 12, 2009 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
hey,
ich hab das problem das bei mir der zurück button nicht funktioniert
ich habe es bereits mit der return anweisung versucht allerdings passiert garnichts wenn der klick auf den zurück button geschieht.

ich hab das allerdings etwas anderst realisiert als ihr

Code: [AUSKLAPPEN]
Repeat
FlushMouse
 
WaitMouse

If (MouseX() > 350 And MouseX() < 510) And (MouseY() > 100 And MouseY() < 125) Then
   grafik()

;ElseIf (MouseX() > 350 And MouseX() < 510) And (MouseY() > 140 And MouseY() < 165) Then
;   sound()

ElseIf (MouseX() > 350 And MouseX() < 510) And (MouseY() > 180 And MouseY() < 205) Then
   control()

ElseIf (MouseX() > 350 And MouseX() < 510) And (MouseY() > 220 And MouseY() < 245) Then
   Return
   
EndIf

Until KeyHit(1)


vielleicht könnt ihr mir sagen wie ich den zurück button zur funktionalität bringen kann
 

da_poller

BeitragDo, März 12, 2009 18:36
Antworten mit Zitat
Benutzer-Profile anzeigen
1. der thread is 5 jahre alt.. muss man den unbedingt raus holen?

und zu deiner frage.. Return ist ein befehl um eine funktion zu verlassen.. wie du in dein menü zurück kommst musst du selbst realisieren(in die heuptmenüschleife zurück springen etc,,,)

the FR3AK

BeitragDo, März 12, 2009 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutz "Bereich-IDs" also wenn du im Hauptmenü bist dann wird das und das gezeichnet und überprüft und wenn du in nem Untermenü bist wird eben was anderes gezeichnet und überprüft. Wenn jetzt ein Klick in Bereich mit der ID 1 ist und der Button wo dort geklickt wurde in ein anderes Menü führt wird einfach die Bereichs-ID geändert und es werden andere Sachen gezeichnet und überprüft ^_^

jonas1996

Betreff: Bitte nicht hauen

BeitragMo, Mai 11, 2009 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Wies Embarassed eigentlich nicht goto?!?
iLive4myLive.de.tl
programmieren123.de.tl
 

aletes

BeitragMo, Mai 11, 2009 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Goto ist böse Twisted Evil
es ist das pure böse, es führt zu unübersichtlichkeit
nimm lieber Gosub Very Happy

ys, aletes

FireballFlame

BeitragMo, Mai 11, 2009 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, es kann sogar zur Übersichtlichkeit beitragen (wenn auch selten)...
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

jonas1996

BeitragDi, Mai 12, 2009 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich benutze fast nur goto weil ich zu dumm für die anderen befehle bin Embarassed . Aber ich finde es auch übersichtlicher.
Mfg jonas1996
iLive4myLive.de.tl
programmieren123.de.tl
 

aletes

BeitragDi, Mai 12, 2009 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
naja, Gosub funzt aber sehr ähnlich ,so:
Code: [AUSKLAPPEN]
...
Gosub test
...
.test
Print "Hallo"
Waitkey
Return

jonas1996

BeitragDi, Mai 12, 2009 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja gosub hat ja nur noch return am ende...das ist irgentwie blöd
mfg jonas1996
iLive4myLive.de.tl
programmieren123.de.tl
 

aletes

BeitragDi, Mai 12, 2009 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
return kann man weglassen

BladeRunner

Moderator

BeitragDi, Mai 12, 2009 23:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn Du Gosub ohne return benutzt hast du den Sinn und Zweck von Subroutinen noch nicht erfasst. Zudem wird dir dein Programm bei ausreichend langer Laufzeit mit einem Stack-Overflow-Error krepieren.

Ich empfehle wegen des getrennten Datenraumes Funktionen. Sauberer geht es nicht.
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

jonas1996

BeitragMi, Mai 13, 2009 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Aso,
also ist nutzte ich ab sofort Funktion() und net Goto!
Danke, werde es gleich mal ausprobieren!
mFG jonas1996
iLive4myLive.de.tl
programmieren123.de.tl

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group