Wie könnt ich das besser schreiben

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

regaa

Betreff: Wie könnt ich das besser schreiben

BeitragMo, März 22, 2004 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich seh das das grade zu danach schreit eine for schleife zu verwenden.

Code: [AUSKLAPPEN]

If mx> -1 And mx<menue_breite(0)+(5*0)
            sel_menue=1
         Else If mx> -1+menue_breite(0)+(5*1) And mx<menue_breite(0)+menue_breite(1)+(5*1)
            sel_menue=2
         Else If mx> -1+menue_breite(0)+menue_breite(1)+(5*2) And mx<menue_breite(0)+menue_breite(1)+menue_breite(2)+(5*2)
            sel_menue=3
         Else If mx> -1+menue_breite(0)+menue_breite(1)+menue_breite(2)+(5*3) And mx<menue_breite(0)+menue_breite(1)+menue_breite(2)+menue_breite(3)+(5*3)
            sel_menue=4
   Else
         sel_menue=0
   EndIf


Aber ich komm einfach nicht drauf wie ich das machen sollte Embarassed .

Ctuchik

BeitragMo, März 22, 2004 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn ich das problem richtig verstanden hab könnte es so gehen
Code: [AUSKLAPPEN]

sel_menue = 0
For a = 0 To 3
  xanf = a * 5
  For b = 1 To a
    xanf = xanf + menue_breite(b-1)
  Next
  If mx > xanf And mx < xanf + menue_breite(a)
    sel_menue = a+1
  End If
Next

Aber wäre es nicht einfacher und sinnvoller die Anfangs- und End-x-Werte der menues zu speichern, statt der breite und das dann so zu testen:
Code: [AUSKLAPPEN]

menue(0,0) = 0
menue(0,1) = 100
menue(1,0) = 105
menue(1,1) = 205
...

For a=0 To 3
  If mx > menue(a,0) And mx < menue(a,1) Then
    sel_menue = a+1
  End If
Next


mfG Ctuchik

regaa

BeitragMo, März 22, 2004 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ctuchik hat Folgendes geschrieben:

Aber wäre es nicht einfacher und sinnvoller die Anfangs- und End-x-Werte der menues zu speichern, statt der breite und das dann so zu testen:
Code: [AUSKLAPPEN]

menue(0,0) = 0
menue(0,1) = 100
menue(1,0) = 105
menue(1,1) = 205
...

For a=0 To 3
  If mx > menue(a,0) And mx < menue(a,1) Then
    sel_menue = a+1
  End If
Next


mfG Ctuchik


Danke für den Tipp Laughing . naja also so sieht der ganze Code aus der Funktion.

Code: [AUSKLAPPEN]

menue_abstand=0
      For i=0 To g_menue_size
         i2=0
         Color 0,255,0;Rnd(1,255),0
         Rect x+menue_abstand,y,menue_breite(i),20
         Color 255,255,255
         Text x+menue_abstand,y,menue$(i,0)
         
         If mx<menue_breite(0) Then abzug=menue_breite(0)
         
         sel_menue=0
         If mx> -1 And mx<menue_breite(0)+(5*0)
            sel_menue=1
         Else If mx> -1+menue_breite(0)+(5*1) And mx<menue_breite(0)+menue_breite(1)+(5*1)
            sel_menue=2
         Else If mx> -1+menue_breite(0)+menue_breite(1)+(5*2) And mx<menue_breite(0)+menue_breite(1)+menue_breite(2)+(5*2)
            sel_menue=3
         Else If mx> -1+menue_breite(0)+menue_breite(1)+menue_breite(2)+(5*3) And mx<menue_breite(0)+menue_breite(1)+menue_breite(2)+menue_breite(3)+(5*3)
            sel_menue=4
         Else If mx> -1+menue_breite(0)+menue_breite(1)+menue_breite(2)+menue_breite(3)+(5*3) And mx<menue_breite(0)+menue_breite(1)+menue_breite(2)+menue_breite(3)+menue_breite(4)+(5*3)
            sel_menue=5
         Else
            sel_menue=0
         EndIf      
      
      If sel_menue=i+1
         For i2=1 To menue_stop(i)
            Color 255,0,0;Rnd(255)
            Rect x+menue_abstand,(y+i2)*20,menue_unter_breite(i),20
            Color 0,0,0
            Rect x+menue_abstand,(y+i2)*20,menue_unter_breite(i),20,0
            Color 255,255,255
            Text x+menue_abstand,(y+i2)*20,menue$(i,i2)
         Next
         sel_menue=0
      EndIf

         menue_abstand=menue_abstand+menue_breite(i)+5
      Next


Ist bestimmt echt easy, aber ich komm da einfach nicht drauf Embarassed .

regaa

BeitragMo, März 22, 2004 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ctuchik hat Folgendes geschrieben:
wenn ich das problem richtig verstanden hab könnte es so gehen
Code: [AUSKLAPPEN]

sel_menue = 0
For a = 0 To 3
  xanf = a * 5
  For b = 1 To a
    xanf = xanf + menue_breite(b-1)
  Next
  If mx > xanf And mx < xanf + menue_breite(a)
    sel_menue = a+1
  End If
Next


[/code]

mfG Ctuchik


Ok, das war die Lösung, danke. Hmm, so kompliziert hab ich da gar nid gedacht.

Zitat:

Aber wäre es nicht einfacher und sinnvoller die Anfangs- und End-x-Werte der menues zu speichern


Laughing Jo, von arrays sind genug da.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group