Menü funktioniert nicht

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

bear1

Betreff: Menü funktioniert nicht

BeitragSo, Apr 18, 2004 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ich habe hier ein kleines Menü zusammengestellt, ein Hauptmenü für mein neues Spiel. Aber das Menü funktioniert nicht, der Pfeil des Menüs geht nicht nach unten. Wenn ich fünf mal die Down-Taste gedrückt habe, beendet er das Programm. Hier der Code:

Code: [AUSKLAPPEN]

Text 200,300,"Hauptmenü"
;SetFont font
.hpm
Text 200,360,"> Neues Spiel starten"
Text 200,380,"  Hilfe"
Text 200,400,"  Beenden"
Text 200,420,"  Über Banking Tycoon"
pfeilstelle$ = "new"
.hpmenerwarten
WaitKey
If KeyHit(208) And pfeilstelle$ = "New" Then
   Cls
   Text 200,360,"  Neues Spiel starten"
   Text 200,380,"> Hilfe"
   Text 200,400,"  Beenden"
   Text 200,420,"  Über Banking Tycoon"
   pfeilstelle$ = "hilfe"
   Goto hpmenerwarten
EndIf
If KeyHit(208) And pfeilstelle$ = "hilfe" Then
   Cls
   Text 200,360,"  Neues Spiel starten"
   Text 200,380,"  Hilfe"
   Text 200,400,"> Beenden"
   Text 200,420,"  Über Banking Tycoon"
   pfeilstelle$ = "beenden"
   Goto hpmenerwarten
EndIf
If KeyHit(208) And pfeilstelle$ = "beenden" Then
   Cls
   Text 200,360,"  Neues Spiel starten"
   Text 200,380,"  Hilfe"
   Text 200,400,"  Beenden"
   Text 200,420,"> Über Banking Tycoon"
   pfeilstelle$ = "about"
   Goto hpmenerwarten
EndIf
If KeyHit(200) And pfeilstelle$ = "about" Then
   Cls
   Text 200,360,"  Neues Spiel starten"
   Text 200,380,"  Hilfe"
   Text 200,400,"> Beenden"
   Text 200,420,"  Über Banking Tycoon"
   pfeilstelle$ = "beenden"
   Goto hpmenerwarten
EndIf
If KeyHit(200) And pfeilstelle$ = "beenden" Then
   Cls
   Text 200,360,"  Neues Spiel starten"
   Text 200,380,"> Hilfe"
   Text 200,400,"  Beenden"
   Text 200,420,"  Über Banking Tycoon"
   pfeilstelle$ = "hilfe"
   Goto hpmenerwarten
EndIf
If KeyHit(200) And pfeilstelle$ = "hilfe" Then
   Cls
   Text 200,360,"> Neues Spiel starten"
   Text 200,380,"  Hilfe"
   Text 200,400,"  Beenden"
   Text 200,420,"  Über Banking Tycoon"
   pfeilstelle$ = "new"
EndIf
If KeyHit(200) And pfeilstelle$ = "new" Then Goto hpm
If KeyHit(28) And pfeilstelle$ = "new" Then Goto newgame
If KeyHit(28) And pfeilstelle$ = "hilfe" Then Goto hilfe
If KeyHit(28) And pfeilstelle$ = "beenden" Then Goto ende
If KeyHit(28) And pfeilstelle$ = "about" Then Goto about

.newgame
Cls
WaitKey
.hilfe
Cls
WaitKey
.ende
Cls
WaitKey
.about
Cls
WaitKey


Hoffentlich kann mir jemand helfen.

Danke im Voraus,

bear1

http://www.erixpage.de/index.html
Ja, ne...

Zum virtuellen Staat Eranien:
http://www.eranien.de
Zu meinem Blog:
http://www.erixpage.de

Travis

BeitragSo, Apr 18, 2004 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ganze kannst du dir viel einfacher machen! Du schreibst einfach einmal das Menü hin und bewegst dann einen Cursor. Diesem gibst du eine Variable. Diese Variable zeigt dann an welcher Menüpunkt angewählt ist und wo der Cursor gezeichnet werden muss!

Ich habe dazu mal ein Beispiel geschrieben. Wenn du noch Fragen dazu hast, dann frag Wink

So wie du es mit den ganzen GOTOs gemacht hast und alles so oft gezeichnet hast wirkt es sehr unübersichtlich. Deshalb konnte ich auch den Fehler darin nicht finden.

Also, mein Beispiel:

Code: [AUSKLAPPEN]

Graphics 800,600,16,2
SetBuffer BackBuffer()

menu = 1

Repeat
Cls

Select Menu
 Case 1
  Text 180,360,">>"
   If KeyHit(28) Then NeuesSpiel

 Case 2
  Text 180,380,">>"
   If KeyHit(28) Then Hilfe

 Case 3
  Text 180,400,">>"
    If KeyHit(28) Then End

 Case 4
  Text 180,420,">>"
   If KeyHit(28) Then About
End Select 

If KeyHit(200) And menu > 1 Then Menu = Menu - 1
If KeyHit(208) And Menu < 4 Then Menu = menu + 1


Text 0,0, "Menüauswahl: " + menu


Text 200,360," Neues Spiel starten"
Text 200,380," Hilfe"
Text 200,400," Beenden"
Text 200,420," Über Banking Tycoon"

Flip
Until KeyHit(1)
End


Function NeuesSpiel()
 Print "NeuesSpiel"
 Flip
 Delay 1000
End Function

Function Hilfe()
 Print "Hilfe"
 Flip
 Delay 1000
End Function

Function About()
 Print "About"
 Flip
 Delay 1000
End Function
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Apr 18, 2004 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
irgendwie fehlt da ein zeiger, und umstänlich ist es auch
besser geht das mit select case
mon....ich mach da mal was !
Code: [AUSKLAPPEN]
Graphics 640,480,16,2
Const ENTER = 28, ESC = 1,HOCH = 200,RUNTER = 208
SetBuffer BackBuffer()
.hpm
Repeat;#####################
   
   If KeyHit (Hoch)   Then option = option -1
   If KeyHit (Runter) Then option = option +1
   If option > 3 Then option = 0
   If option < 0 Then option = 3
   
   Select Option
   Case 0
      Text 200,360,"> Neues Spiel starten"
      Text 200,380,"  Hilfe"
      Text 200,400,"  Beenden"
      Text 200,420,"  Über Banking Tycoon"
   Case 1
      Text 200,360,"  Neues Spiel starten"
      Text 200,380,"> Hilfe"
      Text 200,400,"  Beenden"
      Text 200,420,"  Über Banking Tycoon"
   Case 2
      Text 200,360,"  Neues Spiel starten"
      Text 200,380,"  Hilfe"
      Text 200,400,"> Beenden"
      Text 200,420,"  Über Banking Tycoon"
   Case 3
      Text 200,360,"  Neues Spiel starten"
      Text 200,380,"  Hilfe"
      Text 200,400,"  Beenden"
      Text 200,420,"> Über Banking Tycoon"
   End Select
   
   Flip
   Cls
Until KeyDown (ENTER);##############################


Select Option
  Case 0
   Goto newgame
  Case 1
   Goto hilfe
  Case 2
   Goto ende
  Case 3
   Goto about
End Select ;##############################

;Sprungadressen
.newgame
Cls
WaitKey
.hilfe
Cls
WaitKey
.ende
Cls
WaitKey
.about
Cls
WaitKey

und diese Gotos solltest du besser durch function ersetzten sonst gibt es bald irgendwann den großen Kollabs

War mal wieder einer schneller, aber egal ....
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group