Ein Bild hilft aber auch nicht wirklich den etwas misslungenen Fensteraufbau zu kaschieren...
Ich hab mich mal versucht (irgendwie war mir gerade langweilig) deinen Taschenrechner etwas freundlicher zu gestalten. Ausserdem kann er Multiplizieren, Addieren, Subtrahieren und Dividieren. Das ganze auch wenn gewünscht mit grossem 1x1:
Auch habe ich den Thread rausgeworfen, weil er wirklich nicht nötig ist.
Code: Alles auswählen
; Mit Enumeration wird den Konstanten eine fortlaufende Nummer vergeben anstelle dies von Hand zu machen.
Enumeration ; hier kommen alle Windows rein
#Window_0
EndEnumeration
Enumeration ; hier kommen alle Menüitems rein
#Neu
EndEnumeration
Enumeration ; hier kommen alle Gadgets rein
#TextGadget_0
#StringGadget_1
#TextGadget_2
#StringGadget_3
#TextGadget_5
#StringGadget_6
#TextGadget_7
#StringGadget_8
#TextGadget_9
#StringGadget_10
#Frame3DGadget_4
#CheckBoxGadget_11
#CheckBoxGadget_12
#CheckBoxGadget_13
#CheckBoxGadget_14
#OptionGadget_15
#OptionGadget_16
#ButtonGadget_17
EndEnumeration
Enumeration
#Font_1
EndEnumeration
;Benutzte Variablen
Define.l Anzahl_Rechnungen, Anzahl_Richtig, Anzahl_Falsche, t_start, Flags, Seconds, Started
Procedure Rechne()
Protected Val1.l, Val2.l, Operation.s, Result.l
Val1 = Val(StringField(GetGadgetText(#StringGadget_1), 1, " "))
Operation = StringField(GetGadgetText(#StringGadget_1), 2, " ")
Val2 = Val(StringField(GetGadgetText(#StringGadget_1), 3, " "))
Select Operation
Case "*"
Result = Val1 * Val2
Case "+"
Result = Val1 + Val2
Case ":"
Result = Val1 / Val2
Case "-"
Result = Val1 - Val2
EndSelect
If Result <> Val(GetGadgetText(#StringGadget_3))
Result = #False
EndIf
ProcedureReturn Result
EndProcedure
Procedure Erstelle_Aufgabe()
Protected i.l, x.l, y.l, Sign.s = "*:+-"
Repeat
i = Random(3)
Until GetGadgetState(#CheckBoxGadget_11 + i)
Repeat
x = Random(8 + 90 * GetGadgetState(#OptionGadget_16)) + 1
y = Random(8 + 90 * GetGadgetState(#OptionGadget_16)) + 1
Select i
Case 0
;Multiplikation
x + 1
y + 1
If x < 11 Or y < 11
Break
EndIf
Case 1
;Division
If x % y = 0
Break
EndIf
Case 2
;Addition
Break
Case 3
If x >= y
Break
EndIf
EndSelect
ForEver
SetGadgetText(#StringGadget_1, Str(x) + " " + Mid(Sign, i + 1, 1) + " " + Str(y))
SetGadgetText(#StringGadget_3, "")
SetActiveGadget(#StringGadget_3)
EndProcedure
If OpenWindow(#Window_0, 503, 89, 262, 402, "Taschenrechner", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#Window_0))
Flags = #ES_CENTER | #WS_EX_STATICEDGE | #WS_BORDER | #PB_String_ReadOnly
TextGadget(#TextGadget_0, 10, 10, 120, 45, "Aufgabe:")
StringGadget(#StringGadget_1, 135, 5, 120, 45, "", #PB_String_BorderLess | Flags)
TextGadget(#TextGadget_2, 10, 70, 115, 35, "Ergebnis:")
StringGadget(#StringGadget_3, 135, 65, 120, 45, "")
TextGadget(#TextGadget_5, 20, 145, 100, 20, "Richtige Antworten:")
StringGadget(#StringGadget_6, 135, 142, 65, 20, "0", Flags)
TextGadget(#TextGadget_7, 20, 175, 95, 20, "Falsche Antworten:")
StringGadget(#StringGadget_8, 135, 173, 65, 20, "0", Flags)
TextGadget(#TextGadget_9, 20, 205, 95, 20, "Benötigte Zeit:")
StringGadget(#StringGadget_10, 135, 202, 65, 20, "0 s", Flags)
Frame3DGadget(#Frame3DGadget_4, 10, 125, 245, 110, "Infos")
CheckBoxGadget(#CheckBoxGadget_11, 10, 240, 100, 20, "Multiplizieren")
CheckBoxGadget(#CheckBoxGadget_12, 10, 265, 100, 20, "Dividieren")
CheckBoxGadget(#CheckBoxGadget_13, 10, 290, 100, 20, "Addieren")
CheckBoxGadget(#CheckBoxGadget_14, 10, 315, 100, 20, "Subtrahieren")
OptionGadget(#OptionGadget_15, 135, 240, 110, 20, "Kleines 1x1")
OptionGadget(#OptionGadget_16, 135, 265, 110, 20, "Grosses 1x1")
ButtonGadget(#ButtonGadget_17, 85, 365, 80, 30, "Start", #PB_Button_Default)
If LoadFont(#Font_1, "Times New Roman", 22, 0)
SetGadgetFont(#TextGadget_0, FontID(#Font_1))
SetGadgetFont(#StringGadget_1, FontID(#Font_1))
SetGadgetFont(#TextGadget_2, FontID(#Font_1))
SetGadgetFont(#StringGadget_3, FontID(#Font_1))
SetGadgetFont(#ButtonGadget_17, FontID(#Font_1))
EndIf
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Return, #Neu)
SetActiveGadget(#StringGadget_3)
SetGadgetState(#CheckBoxGadget_11, 1)
SetGadgetState(#OptionGadget_15, 1)
;Initialisiere Variablen
Anzahl_Rechnungen = 0
Anzahl_Richtig = 0
Anzahl_Falsche = 0
;Depperte Hauptschleife
Repeat
Select WaitWindowEvent(800)
Case #PB_Event_Menu
If Started And EventMenu() = #Neu
If Rechne()
Anzahl_Richtig + 1
SetGadgetText(#StringGadget_6, Str(Anzahl_Richtig))
Else
Anzahl_Falsche + 1
SetGadgetText(#StringGadget_8, Str(Anzahl_Falsche))
EndIf
Erstelle_Aufgabe()
Anzahl_Rechnungen + 1
If Anzahl_Rechnungen = 10
SetGadgetText(#ButtonGadget_17, "Start")
SetGadgetText(#StringGadget_1, "")
Started = #False
While WindowEvent() : Wend
MessageRequester("Information", "Sie haben " + Str(Anzahl_Richtig) + " Richtige von 10 Aufgaben in " + GetGadgetText(#StringGadget_10), #PB_MessageRequester_Ok)
SetGadgetText(#StringGadget_10, "0 s")
EndIf
EndIf
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Select EventGadget()
Case #ButtonGadget_17
If Started
SetGadgetText(#ButtonGadget_17, "Start")
SetGadgetText(#StringGadget_1, "")
SetGadgetText(#StringGadget_10, "0 s")
Started = #False
Else
SetGadgetText(#ButtonGadget_17, "Stop")
SetGadgetText(#StringGadget_10, "0 s")
Started = #True
t_start = ElapsedMilliseconds()
Seconds = 0
Erstelle_Aufgabe()
EndIf
Case #CheckBoxGadget_11 To #OptionGadget_16
If GetGadgetState(#CheckBoxGadget_11) | GetGadgetState(#CheckBoxGadget_12) | GetGadgetState(#CheckBoxGadget_13) | GetGadgetState(#CheckBoxGadget_14) = 0
SetGadgetState(#CheckBoxGadget_11, 1)
EndIf
SetActiveGadget(#StringGadget_3)
EndSelect
EndSelect
If Started And Int((ElapsedMilliseconds() - t_start) / 1000) > Seconds
Seconds = Int((ElapsedMilliseconds() - t_start) / 1000)
SetGadgetText(#StringGadget_10, Str(Seconds) + " s")
EndIf
ForEver
EndIf
EndIf
End