Auswählproblem im Haupmenü

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Lord AdZ

Betreff: Auswählproblem im Haupmenü

BeitragSo, Apr 08, 2007 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich arbeite gerade am Hauptmenü für mein Spiel, aber leider gibt es dabei ein Problem. Ich kann nähmlich im Optionsmenü die Grafikeinstellungen nicht auswählen. Weiß jemand, wo der Fehler liegt?

Code: [AUSKLAPPEN]

Graphics 800,600,16,2
SetBuffer BackBuffer()
Global font1 = LoadFont("Arial", 30, 1, 1, 0)
Global Grafik=0
ClsColor 0,0,200
Color 128,255,0
SetFont font1
Repeat


   
    Text 400,100,"Spiel starten ",1,1
    Text 400,200,"Optionen",1,1
    Text 400,300,"Credits",1,1
    Text 400,400,"Beenden",1,1
mausklick = MouseHit(1)
   
        If mausklick And Maus_Text_Kollision(400,100,"Spiel starten",1,1) Then Startegame ()
        If mausklick And Maus_Text_Kollision(400,200,"Optionen",1,1) Then Optionen()
        If mausklick And Maus_Text_Kollision(400,300,"Credits",1,1) Then Credits ()
        If mausklick And Maus_Text_Kollision(400,400,"Beenden",1,1) Then Ende()
        If mausklick And Maus_Text_Kollision(400,200,"Grafikeinstellungen:",1,1) Then Grafikeinstellungen()

   Flip:Cls
Until KeyHit(1)
End

Function Maus_Text_Kollision(xPos,yPos,Text1$,AusrichtungX = 0,AusrichtungY = 0)
   Breite=StringWidth(Text1$)
   Hoehe =StringHeight(Text1$)
   If AusrichtungX  Then xPos = xPos - Breite/2
   If AusrichtungY  Then yPos = yPos - Hoehe/2
   
   If RectsOverlap(xPos,yPos,Breite,Hoehe,MouseX(),MouseY(),1,1) Then
    Rect xPos,yPos,Breite,Hoehe,0; Rahmen zur kontrolle
    Return True
    End If
   Return False
End Function
Function Startegame ()
    Cls
    Text 400,300,"Spiel wird geladen!",1,1
    Flip
    Delay 1000
End Function
Function Optionen()
    Cls
    Text 400,200,"Grafikeinstellungen:",1,1
    Text 400,250,"800X600X16",1,1
    Flip
    WaitKey
End Function
Function Grafikeinstellungen()
    Cls
    Grafik=Grafik+1
     If Grafik=0 Then
     Cls
     Text 400,250,"800X600X16",1,1
     Graphics 800,600,16,2
     Flip
     EndIf
     If Grafik=1 Then
     Cls
     Text 400,250,"1024X768X16",1,1
     Graphics 1024,768,16,2
     Flip
     EndIf
     If Grafik=2 Then
     Cls
     Text 400,250,"1280X1024X16",1,1
     Flip
     EndIf
    If Grafik>2 Then Grafik=0
    Flip
End Function     
Function Credits ()
    Cls
    Text 400,100,"Menü by Lord AdZ",1,1
    Flip
    Delay 1000
End Function
Function ende ()
    Cls
    Text 400,100,"Spiel wird beendet",1,1
    Text 400,130,"Bitte habe Sie einen Augenblick Geduld.....",1,1
    Flip
    Delay 2000
    End
End Function

LukasBanana

BeitragSo, Apr 08, 2007 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If mausklick And Maus_Text_Kollision(400,100,"Spiel starten",1,1) Then Startegame ()
If mausklick And Maus_Text_Kollision(400,200,"Optionen",1,1) Then Optionen()
If mausklick And Maus_Text_Kollision(400,300,"Credits",1,1) Then Credits ()
If mausklick And Maus_Text_Kollision(400,400,"Beenden",1,1) Then Ende()
If mausklick And Maus_Text_Kollision(400,200,"Grafikeinstellungen:",1,1) Then Grafikeinstellungen()

Wenn man am Anfang mit der Maus auf "Optionen" geht wird Optionen umrandet und "Grafikeinstellungen:" ebenfalls. "Grafikeinstellungen:" darf aber erst sichtbar sein wenn man im Optionsmenu ist.
In der Funktion "Optionen()" ist auch keine "Repeat-Until"- oder "While-Wend" Schleife sondern nur das "WaitKey", natürlich kann man dann nichts auswählen.

Gruß LukasBanana
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana

Lord AdZ

BeitragSo, Apr 08, 2007 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, die Doppelumrandung hab ich jetzt behoben, aber ich kann die Grafikeinstellungen immer noch nicht auswählen.

Code: [AUSKLAPPEN]

   
        If mausklick And Maus_Text_Kollision(400,100,"Spiel starten",1,1) Then Startegame ()
        If mausklick And Maus_Text_Kollision(400,200,"Optionen",1,1) Then Optionen()
        If mausklick And Maus_Text_Kollision(400,300,"Credits",1,1) Then Credits ()
        If mausklick And Maus_Text_Kollision(400,400,"Beenden",1,1) Then Ende()
       

   Flip:Cls
Until KeyHit(1)
End

Function Maus_Text_Kollision(xPos,yPos,Text1$,AusrichtungX = 0,AusrichtungY = 0)
   Breite=StringWidth(Text1$)
   Hoehe =StringHeight(Text1$)
   If AusrichtungX  Then xPos = xPos - Breite/2
   If AusrichtungY  Then yPos = yPos - Hoehe/2
   
   If RectsOverlap(xPos,yPos,Breite,Hoehe,MouseX(),MouseY(),1,1) Then
    Rect xPos,yPos,Breite,Hoehe,0; Rahmen zur kontrolle
    Return True
    End If
   Return False
End Function
Function Startegame ()
    Cls
    Text 400,300,"Spiel wird geladen!",1,1
    Flip
    Delay 1000   
End Function
Function Optionen()
    Cls
    Text 400,200,"Grafikeinstellungen:",1,1
    Text 400,250,"800X600X16",1,1
    If mausklick And Maus_Text_Kollision(400,200,"Grafikeinstellungen:",1,1) Then Grafikeinstellungen()
    Flip
    WaitKey
    End Function
Function Grafikeinstellungen()
    Cls
    Grafik=Grafik+1
     If Grafik=0 Then
     Cls
     Text 400,250,"800X600X16",1,1
     Graphics 800,600,16,2
     Flip
     EndIf
     If Grafik=1 Then
     Cls
     Text 400,250,"1024X768X16",1,1
     Graphics 1024,768,16,2
     Flip
     EndIf
     If Grafik=2 Then
     Cls
     Text 400,250,"1280X1024X16",1,1
     Flip
     EndIf
    If Grafik>2 Then Grafik=0
    Flip
End Function     

Silver_Knee

BeitragSo, Apr 08, 2007 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
  Cls
    Text 400,200,"Grafikeinstellungen:",1,1
    Text 400,250,"800X600X16",1,1
    If mausklick And Maus_Text_Kollision(400,200,"Grafikeinstellungen:",1,1) Then Grafikeinstellungen()
    Flip
    WaitKey

der user soll also innerhalb vin wenugen millisekunden über das ding hovern und klicken interessant.....
eine schleife währe hier zu empfehlen etwa mit dem Code: [AUSKLAPPEN]
REPEAT;<-------
  Cls
    Text 400,200,"Grafikeinstellungen:",1,1
    Text 400,250,"800X600X16",1,1
    If mausklick And Maus_Text_Kollision(400,200,"Grafikeinstellungen:",1,1) Then Grafikeinstellungen()
    Flip
UNTIL Getkey()<>0;NIX waitkey das wartet auch auf ne taste aber es führt aus was zwischen repeat und until steht

Lord AdZ

BeitragSo, Apr 08, 2007 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für dein Beispiel FTC, ich kann die Grafikeinstellungen auswählen, aber es passiert nichts, damit meine ich, dass die Grafik sich nicht verändert.
Wo hab ich jetzt wieder Mist gebaut?

Code: [AUSKLAPPEN]

Function Grafikeinstellungen()
    Cls
    Grafik=Grafik+1
     If Grafik=0 Then
      Cls
      Text 400,250,"800X600X16",1,1
      Graphics 800,600,16,2
      Flip
     EndIf
     If Grafik=1 Then
      Cls
      Text 400,250,"1024X768X16",1,1
      Graphics 1024,768,16,2
      Flip
     EndIf
     If Grafik=2 Then
      Cls
      Text 400,250,"1280X1024X16",1,1
      Graphics 1280,1024,16,2
      Flip
     EndIf
    If Grafik>2 Then Grafik=0
    Flip
End Function     

LukasBanana

BeitragSo, Apr 08, 2007 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, volgender Code sollte funktionieren, aber das "LoadFont", und grundsätzlich alles was geladen wird muss bei einer neuen Bildschirmeinstellung neu geladen werden:

Code: [AUSKLAPPEN]

Graphics 800,600,16,2
SetBuffer BackBuffer()
Global font1 = LoadFont("Arial", 30, 1, 1, 0)
Global Grafik=0, mausklick
ClsColor 0,0,200
Color 128,255,0
SetFont font1
Repeat


   
    Text 400,100,"Spiel starten ",1,1
    Text 400,200,"Optionen",1,1
    Text 400,300,"Credits",1,1
    Text 400,400,"Beenden",1,1
mausklick = MouseHit(1)
   
   
        If mausklick And Maus_Text_Kollision(400,100,"Spiel starten",1,1) Then Startegame ()
        If mausklick And Maus_Text_Kollision(400,200,"Optionen",1,1) Then Optionen()
        If mausklick And Maus_Text_Kollision(400,300,"Credits",1,1) Then Credits ()
        If mausklick And Maus_Text_Kollision(400,400,"Beenden",1,1) Then Ende()
       

   Flip:Cls
Until KeyHit(1)
End

Function Maus_Text_Kollision(xPos,yPos,Text1$,AusrichtungX = 0,AusrichtungY = 0)
   Breite=StringWidth(Text1$)
   Hoehe =StringHeight(Text1$)
   If AusrichtungX  Then xPos = xPos - Breite/2
   If AusrichtungY  Then yPos = yPos - Hoehe/2
   
   If RectsOverlap(xPos,yPos,Breite,Hoehe,MouseX(),MouseY(),1,1) Then
    Rect xPos,yPos,Breite,Hoehe,0; Rahmen zur kontrolle
    Return True
    End If
   Return False
End Function
Function Startegame ()
    Cls
    Text 400,300,"Spiel wird geladen!",1,1
    Flip
    Delay 1000   
End Function
Function Optionen()
    Cls
    Text 400,200,"Grafikeinstellungen:",1,1
    Text 400,250,"800X600X16",1,1
    If mausklick And Maus_Text_Kollision(400,200,"Grafikeinstellungen:",1,1)
      Repeat;<-------
         mausklick = MouseHit(1)
           Cls
          Text 400,200,"Grafikeinstellungen:",1,1
          Text 400,250,"800X600X16",1,1
          If mausklick And Maus_Text_Kollision(400,200,"Grafikeinstellungen:",1,1) Then Grafikeinstellungen()
          Flip
      Until mausklick;NIX waitkey das wartet auch auf ne taste aber es führt aus was zwischen repeat und until steht     Cls
   EndIf
    Flip
End Function
Function Grafikeinstellungen()
    Grafik=Grafik+1
     If Grafik=0 Then
        Cls
        Text 400,250,"800X600X16",1,1
        Graphics 800,600,16,2
        Flip
        EndIf
     If Grafik=1 Then
        Cls
        Text 400,250,"1024X768X16",1,1
        Graphics 1024,768,16,2
        Flip
     EndIf
     If Grafik=2 Then
        Cls
        Text 400,250,"1280X1024X16",1,1
        Flip
     EndIf
    If Grafik>2 Then Grafik=0
    Flip
End Function     
Function Credits ()
    Cls
    Text 400,100,"Menü by Lord AdZ",1,1
    Flip
    Delay 1000
End Function
Function ende ()
    Cls
    Text 400,100,"Spiel wird beendet",1,1
    Text 400,130,"Bitte habe Sie einen Augenblick Geduld.....",1,1
    Flip
    Delay 2000
    End
End Function 


Gruß LukasBanana

PS: If Grafik = 0 ; ... If Grafik = 1 , ne ne ne, verwände mal Select
Code: [AUSKLAPPEN]

Select Grafik
  Case 0 ; Fall 0
    ; ...
  Case 1 ; Fall 1
    ; ...
  Default ; Andernfalls
    ; ...
End Select
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana

Lord AdZ

BeitragMo, Apr 09, 2007 10:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry das ich so blöd bin, aber der Debugger meldet sich, dass ich "Case" ohne "Select" habe. Dabei hab ichs ganz sicher:

Code: [AUSKLAPPEN]


Function Grafikeinstellungen()
    Grafik=Grafik+1
    Select Grafik ; da hab ich doch das Select
      Case 1 Grafik=0
        Cls
        Text 400,250,"800X600X16",1,1
        Graphics 800,600,16,2
        SetBuffer BackBuffer()
        ClsColor 0,0,200
        Color 128,255,0
        SetFont font1
        Repeat
        Flip 
      Case 2 Grafik=1   
        Cls
        Text 400,250,"1024X768X16",1,1
        Graphics 1024,768,16,2
        SetBuffer BackBuffer()   
        ClsColor 0,0,200
        Color 128,255,0
        SetFont font1
        Repeat
        Flip
      Case 3 Grafik=2
        Cls
        Text 400,250,"1280X1024X16",1,1
        Flip
      Default
        Print "Irgendwas klappt nicht"       
    End Select
    If Grafik>2 Then Grafik=0
    Flip
End Function


Das mit dem If/Endif hab ich auch ausprobiert, es klappt aber auch nicht.

Smily

BeitragMo, Apr 09, 2007 11:22
Antworten mit Zitat
Benutzer-Profile anzeigen
setz mal die "grafik=..." mit in die nächste zeile
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Apr 09, 2007 11:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Beim überfliegen hab ich zweimal repeat gesehen ohne ein until bzw Forever.
das geht so natürlich nicht.
[BB2D | BB3D | BB+]

Lord AdZ

BeitragMo, Apr 09, 2007 12:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Rallimen, du hast recht, jetzt geht das Hauptmenü endlich.
Danke an euch alle!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group