Abgeschaut habe ich hierbei von einem Beispiel, das jedoch anstatt Sprites, drawing-befehle beinhaltet hat. Also hab ich es etwas angepasst, nun klappt es aber garnicht mehr anzuklicken.
Ich habe davon noch garnichts belegt, vorgehabt habe ich erstmal "Exit" zu belegen, es sollte, wenn man es anklickt nicht zuerst beenden, sondern ein Abfrage-Fenster öffnen(Sprite), ob man es wirklich beenden will.
Datei mit Bildern:
http://www.file-upload.net/download-931 ... r.rar.html
Code: Alles auswählen
;-Erstelle Daten für Openscreen in Menu_Main()
#Window_Width = 800
#Window_Height = 600
#Window_Depth = 32
#Window_Menu_Titel$ = "Alex der Alphamaster"
;-Nummeriere HauptMenü Sprites(Bilder)
Enumeration
#Menu_Hintergrund
#Menu_MenuSprite
#Menu_Start_NG
#Menu_Start_G
#Menu_Options_NG
#Menu_Options_G
#Menu_Highscore_NG
#Menu_Highscore_G
#Menu_Credits_NG
#Menu_Credits_G
#Menu_Exit_NG
#Menu_Exit_G
#Menu_MenuExit
#Menu_ExitJa_NG
#Menu_ExitJa_G
#Menu_ExitNein_NG
#Menu_ExitNein_G
#Menu_Cursor
EndEnumeration
;-Nummerieren der Buttonsbefehle
Enumeration
#Main_Hauptmenu
#Main_Gamestart
#Main_Options
#Main_Highscore
#Main_Credits
#Main_Exit
EndEnumeration
If InitMouse() = #False : MessageRequester("Fehlermeldung","Fehler, Es konnte keine DirectX gefunden werden") : EndIf
If InitKeyboard() = #False : MessageRequester("Fehlermeldung","Fehler, Es konnte keine DirectX gefunden werden") : EndIf
If InitSprite() = #False : MessageRequester("Fehlermeldung","Fehler, Es konnte keine DirectX gefunden werden") : EndIf
If InitSound() = #False : MessageRequester("Fehlermeldung","Fehler, Es konnte keine DirectX gefunden werden") : EndIf
If OpenScreen(#Window_Width,#Window_Height,#Window_Depth,#Window_Menu_Titel$) = #False
MessageRequester("Fehlermeldung","Fehler, Es konnte kein Fenster geöffnet werden")
EndIf
LoadSprite(#Menu_Hintergrund,"Grafik\Hintergrund\Hintergrund.bmp",0)
LoadSprite(#Menu_MenuSprite,"Grafik\Menu\Buttons\Menu.bmp",0)
LoadSprite(#Menu_Start_NG,"Grafik\Menu\Buttons\StartNG.bmp",0)
LoadSprite(#Menu_Start_G,"Grafik\Menu\Buttons\StartG.bmp",0)
LoadSprite(#Menu_Options_NG,"Grafik\Menu\Buttons\OptionNG.bmp",0)
LoadSprite(#Menu_Options_G,"Grafik\Menu\Buttons\OptionG.bmp",0)
LoadSprite(#Menu_Highscore_NG,"Grafik\Menu\Buttons\ScoreNG.bmp",0)
LoadSprite(#Menu_Highscore_G,"Grafik\Menu\Buttons\ScoreG.bmp",0)
LoadSprite(#Menu_Credits_NG,"Grafik\Menu\Buttons\CreditsNG.bmp",0)
LoadSprite(#Menu_Credits_G,"Grafik\Menu\Buttons\CreditsG.bmp",0)
LoadSprite(#Menu_Exit_NG,"Grafik\Menu\Buttons\ExitNG.bmp",0)
LoadSprite(#Menu_Exit_G,"Grafik\Menu\Buttons\ExitG.bmp",0)
LoadSprite(#Menu_MenuExit,"Grafik\Menu\ExitButtonMenu\ExitMenu.bmp",0)
LoadSprite(#Menu_ExitJa_NG,"Grafik\Menu\ExitButtonMenu\JaNG.bmp",0)
LoadSprite(#Menu_ExitJa_G,"Grafik\Menu\ExitButtonMenu\JaG.bmp",0)
LoadSprite(#Menu_ExitNein_NG,"Grafik\Menu\ExitButtonMenu\NeinNG.bmp",0)
LoadSprite(#Menu_ExitNein_G,"Grafik\Menu\ExitButtonMenu\NeinG.bmp",0)
LoadSprite(#Menu_Cursor,"Grafik\Maus\Mauszeiger.bmp",0)
MouseLocate(300,300)
Procedure MT_Links() ;0 = Falsch, 1 = Gedrückt, 2 = Unten, 3 = Losgelassen
If MouseButton(1)
If MT_Links = 0 ; = Falsch
MT_Links = 1 ; = Gedrückt
Else
MT_Links = 2 ; = Unten
EndIf
Else
If MT_Links = 3 ; = Losgelassen
MT_Links = 0 ; = Falsch
ElseIf MT_Links = 2 ; = Unten
MT_Links = 3 ; = Losgelassen
EndIf
EndIf
EndProcedure
Procedure.l Display_Buttons()
If MouseX() > 300 And MouseX() < 300 + 200 And MouseY() > 205 And MouseY() < 205 + 30
DisplaySprite(#Menu_Start_G,300,205)
Else
DisplaySprite(#Menu_Start_NG,300,205)
EndIf
If MouseX() > 300 And MouseX() < 300 + 200 And MouseY() > 245 And MouseY() < 245 + 30
DisplaySprite(#Menu_Options_G,300,245)
Else
DisplaySprite(#Menu_Options_NG,300,245)
EndIf
If MouseX() > 300 And MouseX() < 300 + 200 And MouseY() > 285 And MouseY() < 285 + 30
DisplaySprite(#Menu_Highscore_G,300,285)
Else
DisplaySprite(#Menu_Highscore_NG,300,285)
EndIf
If MouseX() > 300 And MouseX() < 300 + 200 And MouseY() > 325 And MouseY() < 325 + 30
DisplaySprite(#Menu_Credits_G,300,325)
Else
DisplaySprite(#Menu_Credits_NG,300,325)
EndIf
If MouseX() > 300 And MouseX() < 300 + 200 And MouseY() > 365 And MouseY() < 365 + 30
DisplaySprite(#Menu_Exit_G,300,365)
Else
DisplaySprite(#Menu_Exit_NG,300,365)
EndIf
EndProcedure
Procedure.l Display_Startbutton()
Protected Clicked
If MouseX() > 300 And MouseX() < 300 + 200 And MouseY() > 205 And MouseY() < 205 + 30
If MT_Links = 3 ; = Losgelassen
Clicked = #True
MT_Links = 0 ; = Falsch
EndIf
EndIf
ProcedureReturn Clicked
EndProcedure
Procedure.l Display_Optionbutton()
Protected Clicked
If MouseX() > 300 And MouseX() < 300 + 200 And MouseY() > 245 And MouseY() < 245 + 30
If MT_Links = 3 ; = Losgelassen
Clicked = #True
MT_Links = 0 ; = Falsch
EndIf
EndIf
ProcedureReturn Clicked
EndProcedure
Procedure.l Display_Highscorebutton()
Protected Clicked
If MouseX() > 300 And MouseX() < 300 + 200 And MouseY() > 285 And MouseY() < 285 + 30
If MT_Links = 3 ; = Losgelassen
Clicked = #True
MT_Links = 0 ; = Falsch
EndIf
EndIf
ProcedureReturn Clicked
EndProcedure
Procedure.l Display_Creditsbutton()
Protected Clicked
If MouseX() > 300 And MouseX() < 300 + 200 And MouseY() > 325 And MouseY() < 325 + 30
If MT_Links = 3 ; = Losgelassen
Clicked = #True
MT_Links = 0 ; = Falsch
EndIf
EndIf
ProcedureReturn Clicked
EndProcedure
Procedure.l Display_Exitbutton()
Protected Clicked
If MouseX() > 300 And MouseX() < 300 + 200 And MouseY() > 325 And MouseY() < 365 + 30
If MT_Links = 3 ; = Losgelassen
Clicked = #True
MT_Links = 0 ; = Falsch
EndIf
EndIf
ProcedureReturn Clicked
EndProcedure
Procedure Menu_Gamestart()
EndProcedure
Procedure Menu_Options()
EndProcedure
Procedure Menu_Highscore()
EndProcedure
Procedure Menu_Credits()
EndProcedure
Procedure Menu_Exit()
Protected Menu = - 1
Repeat
ExamineKeyboard()
ExamineMouse()
FlipBuffers()
MT_Links()
DisplaySprite(#Menu_MenuExit,(#Window_Width / 2) - (SpriteWidth(#Menu_MenuExit) / 2) ,(#Window_Height / 2) - (SpriteHeight(#Menu_MenuExit)/2))
If KeyboardPushed(#PB_Key_Return)
End
EndIf
Until Menu > - 1
EndProcedure
Procedure.l Menu_Main()
Protected Chosen = - 1
Repeat
ExamineKeyboard()
ExamineMouse()
FlipBuffers()
MT_Links()
DisplaySprite(#Menu_Hintergrund,0,0)
DisplaySprite(#Menu_MenuSprite,(#Window_Width / 2) - (SpriteWidth(#Menu_MenuSprite) / 2) ,(#Window_Height / 2) - (SpriteHeight(#Menu_MenuSprite)/2))
Display_Buttons()
; Display_Startbutton() : Display_Optionbutton() : Display_Highscorebutton() : Display_Creditsbutton() :
If Display_Exitbutton()
Chosen = 4
EndIf
If KeyboardPushed(#PB_Key_Q)
End
EndIf
TransparentSpriteColor(#Menu_Cursor,RGB(255,0,255))
DisplayTransparentSprite(#Menu_Cursor,MouseX()-10,MouseY()-10)
Until Chosen > -1
ProcedureReturn Chosen
EndProcedure
;-=====DER KERN=====
Repeat
;-Menü-Auswahl
Select Menu
Case #Main_Hauptmenu
Select Menu_Main()
Case 0: Menu = #Main_Gamestart ; Spiel wird gestartet
Case 1: Menu = #Main_Options ; Öffne Optionen
Case 2: Menu = #Main_Highscore ; Zeige Highscore
Case 3: Menu = #Main_Credits ; Zeige Credits
Case 4: Menu = #Main_Exit ; Zeige ExitMenu
EndSelect
Case #Main_Gamestart
Select Menu_Gamestart()
Case 0: Menu = #Main_Hauptmenu ; Gehe wieder ins Hauptmenü
EndSelect
Case #Main_Options
Select Menu_Options()
Case 0: Menu = #Main_Hauptmenu ; Gehe wieder ins Hauptmenü
EndSelect
Case #Main_Highscore
Select Menu_Highscore()
Case 0: Menu = #Main_Hauptmenu ; Gehe wieder ins Hauptmenü
EndSelect
Case #Main_Credits
Select Menu_Credits()
Case 0: Menu = #Main_Hauptmenu ; Gehe wieder ins Hauptmenü
EndSelect
Case #Main_Exit
Select Menu_Exit()
Case 0: End
Case 1: Menu = #Main_Hauptmenu ; Gehe wieder ins Hauptmenü
EndSelect
EndSelect
ForEver