Ich habe jetzt mal den relevanten Code-Teil herausgezogen. Der Code ist lauffähig und es werden dort zwei Schalter gezeigt, die beim Draufklicken die Farben wechseln. Ziel der Übung soll sein, daß die Schalter entweder grün oder rot werden, aber niemals beide rot. Im Fall beide grün nehmen dann programmseitig beide Schalter einen Blauton an.
funktioniert nicht. Wie macht man denn nun die Abfrage richtig?
Code: Alles auswählen
If InitMouse() = 0
MessageRequester("InitMouse fehlgeschlagen", "")
EndIf
If InitKeyboard() = 0
;MessageRequester("InitKeyboard fehlgeschlagen", "")
EndIf
If InitSound() = 0
MessageRequester("Initsound not possible" , "")
EndIf
If InitSprite() = 0
MessageRequester("InitSprite fehlgeschlagen", "")
EndIf
If OpenWindow(1,0,0,801,412,"",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered) = 0
MessageRequester("OpenWindow fehlgeschlagen", "")
EndIf
If OpenWindowedScreen(WindowID(1),0,0,801,412) = 0
MessageRequester("OpenWindowedScreen fehlgeschlagen", "")
EndIf
StartDrawing(ScreenOutput())
Box(280,252,40,40,RGB(100,100,220))
Box(330,252,40,40,RGB(100,100,220))
Line(330-50,251,42,1,RGB(0,0,0)); oben
Line(330-50,292,42,1,RGB(0,0,0)); unten
Line(330-50,251,1,42,RGB(0,0,0)); links
Line(371-50,251,1,42,RGB(0,0,0)); rechts
Line(380-50,251,42,1,RGB(0,0,0))
Line(380-50,292,42,1,RGB(0,0,0))
Line(380-50,251,1,42,RGB(0,0,0))
Line(421-50,251,1,42,RGB(0,0,0))
StopDrawing()
Repeat
ExamineKeyboard()
event = WaitWindowEvent()
Select event
Case #PB_Event_LeftClick
klvb = 1
wmx = WindowMouseX(1) : ;Debug wmx
wmy = WindowMouseY(1) : ;Debug wmy
EndSelect
;Schalter
If klvb = 1
klvb = 0
If schalt = 0
If (wmx > 280 And wmx < 320) And (wmy > 250 And wmy < 290) And event = #PB_Event_LeftClick
vs = 1
bs = 0
StartDrawing(ScreenOutput())
Box(280,252,40,40,RGB(0,140,0))
Box(330,252,40,40,RGB(200,0,0))
StopDrawing()
EndIf
If (wmx > 330 And wmx < 370) And (wmy > 250 And wmy < 290) And event = #PB_Event_LeftClick
vs = 0
bs = 1
StartDrawing(ScreenOutput())
Box(280,252,40,40,RGB(200,0,0))
Box(330,252,40,40,RGB(0,140,0))
StopDrawing()
EndIf
EndIf ; If schalt = 0
If bs <> vs
If ((wmx > 280 And wmx < 320) Or (wmx > 330 And wmx < 370)) And (wmy > 250 And wmy < 290)
If event = #WM_LBUTTONUP
schalt = 2
EndIf
EndIf
EndIf
If bs = vs
If ((wmx > 280 And wmx < 320) Or (wmx > 330 And wmx < 370)) And (wmy > 250 And wmy < 290)
If event = #WM_LBUTTONUP
schalt = 0
EndIf
EndIf
EndIf
If schalt = 2
If (wmx > 280 And wmx < 320) And (wmy > 250 And wmy < 290) And event = #PB_Event_LeftClick
schalt = 1
If vs = 1
vs = 0
bs = 1
StartDrawing(ScreenOutput())
Box(330,252,40,40,RGB(0,140,0))
Box(280,252,40,40,RGB(200,0,0))
StopDrawing()
Else
vs = 1
StartDrawing(ScreenOutput())
Box(280,252,40,40,RGB(0,140,0))
StopDrawing()
If bs = 1
StartDrawing(ScreenOutput())
Box(330,252,40,40,RGB(0,140,0))
StopDrawing()
Delay(75)
StartDrawing(ScreenOutput())
Box(280,252,40,40,RGB(100,100,220))
Box(330,252,40,40,RGB(100,100,220))
StopDrawing()
EndIf
EndIf
EndIf
If (wmx > 330 And wmx < 370) And (wmy > 250 And wmy < 290) And event = #PB_Event_LeftClick
If bs = 1
bs = 0
vs = 1
StartDrawing(ScreenOutput())
Box(280,252,40,40,RGB(0,140,0))
Box(330,252,40,40,RGB(200,0,0))
StopDrawing()
Else
bs = 1
StartDrawing(ScreenOutput())
Box(330,252,40,40,RGB(0,140,0))
StopDrawing()
If bs = 1
StartDrawing(ScreenOutput())
Box(280,252,40,40,RGB(0,140,0))
StopDrawing()
Delay(75)
StartDrawing(ScreenOutput())
Box(280,252,40,40,RGB(100,100,220))
Box(330,252,40,40,RGB(100,100,220))
StopDrawing()
EndIf
EndIf
EndIf
EndIf ; if schalt = 2
EndIf ; If klvb = 1
FlipBuffers()
Until event = #PB_Event_CloseWindow
Danke für Info.