Das Fangspiel hab ich so gemacht dass man die Levels noch gut ändern kann.
Man kann sie unter "Game Setup" umstellen.
Wer Lust hat kann mal n bisschen rumprobieren und seine eigenen Einstellungen posten.
Spoiler anzeigen
Opt ("MustDeclareVars" , 1 )
[/autoit] [autoit][/autoit] [autoit]#include <Misc.au3>
#include <WindowsConstants.au3>
;Statistik
Global $catched = 0
Global $guis_total = 0
Global $failed = 0
Global $not_catched = 0
;Game Setup
Global $max_not_catched = 10
Global $levels = 10
Global $lv_speed[$levels + 1] = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
Global $lv_size[$levels + 1] = [75, 67, 59, 51, 43, 35, 30, 25, 20, 15]
Global $lv_number[$levels + 1] = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
;Runden Variablen
Global $current_level = 1
Global $current_to_catch
Global $catch_return
Global $current_number = $lv_number[$current_level - 1]
If MsgBox(262148, "Fäänger", "Willst du das Spiel beginnen ?") = 6 Then
Global $BG = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
GUISetBkColor("0x000000")
Global $level_shower = GUICtrlCreateLabel("Level " & $current_level, @DesktopWidth / 2, @DesktopHeight / 2, 150, 50)
GUICtrlSetColor(-1, "0xFFFFFF")
GUICtrlSetFont(-2, 22)
GUISetState(@SW_SHOW)
Do
$guis_total += 1
If _MakeCatchGui($lv_size[$current_level - 1], $lv_speed[$current_level - 1]) Then
$catched += 1
$current_number -= 1
If $current_number = 0 Then
$current_level += 1
GUICtrlSetData($level_shower, "Level " & $current_level)
If $current_level = $levels + 1 Then
MsgBox(262144, "Fäänger", "Gute gemacht, du hast alle " & $guis_total & " Fenster gefangen.")
Exit
Else
$current_number = $lv_number[$current_level - 1]
EndIf
EndIf
Else
$not_catched += 1
If $not_catched = $max_not_catched Then
If $catched = 0 Then
MsgBox(262144, "Fäänger", "Mann, du hast kein einziges Fenster gefangen.")
Else
MsgBox(262144, "Fäänger", "Schade, du hast leider 10 Fenster durch gelassen. Aber du hast auch " & $catched & " Fenster gefangen :-)")
EndIf
Exit
EndIf
EndIf
Until _IsPressed("1B")
EndIf
Func _MakeCatchGui($size, $speed)
Local $y_axis = Random(0, @DesktopHeight - $size, 1)
Local $gui_catch = GUICreate("", $size, $size, -5000, -5000, $WS_POPUP)
GUISetBkColor(_ColorRandom())
Local $x_axis = $size * - 1
GUISetState(@SW_SHOW)
While 1
WinMove($gui_catch, "", $x_axis, $y_axis)
If _MousePosCheck($x_axis, $y_axis, $size, $size) Then
GUIDelete($gui_catch)
Return (1)
ExitLoop
Else
If $x_axis >= @DesktopWidth Then
Return (0)
ExitLoop
EndIf
EndIf
If Not WinActive ($gui_catch) Then
WinActivate ($BG)
WinActivate ($gui_catch)
EndIf
$x_axis += $speed
If _IsPressed("1B") Then Exit
Sleep(20)
WEnd
EndFunc ;==>_MakeCatchGui
Func _MousePosCheck($x_check, $y_check, $x_size, $y_size)
If MouseGetPos(0) >= $x_check And MouseGetPos(0) <= $x_check + $x_size And MouseGetPos(1) >= $y_check And MouseGetPos(1) <= $y_check + $y_size Then
Return (1)
Else
Return (0)
EndIf
EndFunc ;==>_MousePosCheck
Func _ColorRandom()
Local $R = _HexaRandom()
Local $G = _HexaRandom()
Local $B = _HexaRandom()
Return ("0x" & $R & $R & $G & $G & $B & $B)
EndFunc ;==>_ColorRandom
Func _HexaRandom()
Local $random = Random(0, 15, 1)
If $random = 15 Then
Return ("F")
ElseIf $random = 14 Then
Return ("E")
ElseIf $random = 13 Then
Return ("D")
ElseIf $random = 12 Then
Return ("C")
ElseIf $random = 11 Then
Return ("B")
ElseIf $random = 10 Then
Return ("A")
Else
Return ($random)
EndIf
EndFunc ;==>_HexaRandom