Kleines GUI-Fangspiel

  • 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
    [autoit]

    Opt ("MustDeclareVars" , 1 )

    [/autoit] [autoit][/autoit] [autoit]

    #include <Misc.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;Statistik
    Global $catched = 0
    Global $guis_total = 0
    Global $failed = 0
    Global $not_catched = 0

    [/autoit] [autoit][/autoit] [autoit]

    ;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]

    [/autoit] [autoit][/autoit] [autoit]

    ;Runden Variablen
    Global $current_level = 1
    Global $current_to_catch
    Global $catch_return
    Global $current_number = $lv_number[$current_level - 1]

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    If $x_axis >= @DesktopWidth Then
    Return (0)
    ExitLoop
    EndIf
    EndIf
    If Not WinActive ($gui_catch) Then
    WinActivate ($BG)
    WinActivate ($gui_catch)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $x_axis += $speed
    If _IsPressed("1B") Then Exit
    Sleep(20)
    WEnd
    EndFunc ;==>_MakeCatchGui

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func _ColorRandom()
    Local $R = _HexaRandom()
    Local $G = _HexaRandom()
    Local $B = _HexaRandom()
    Return ("0x" & $R & $R & $G & $G & $B & $B)
    EndFunc ;==>_ColorRandom

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]
  • falsches Forum


    Als ich letztes mal n Scipt rein gemacht hatte, wurde mir gesagt ich solls lieber hier hin machen soll "weil es noch kein fertiger scipt is".
    Deshalb denk ich dass der hier auch noch nicht soooo fertig is^^

  • @Trainman
    Also einmal denke ich, das du dafür keine Hilfe mehr brauchst, also gehört es in Scripte

    Ich find es ganz lustig, man sollte es vllt. nur noch ein bischen schwerer machen, hab es beim ersten versuch durchgespielt, nur 1 durchgelassen (liegt vllt. auch am CS-Spielen :D), wie z.B. das die Fenster nicht nur von Links kommen sondern auch von Rechts,Unten,Oben. Und wenn man die Fenster rund machen würde säh das bestimmt ganz gut aus und vllt. das man einstellen kann wer will, dass man mit der Maus auf die Fenster klicken muss um sie zu fangen

    mfg. Jam00

  • haha, sehr witziges game xD
    aber überhaupt nicht schwer ^^
    Ich bin keine 30min wach (Hatte meine kippe nochnicht) bin auch kein grosser shooter gamer und dennoch alle 55 abgefangen :D
    macht aber spass.

  • Cooles game.
    Mach spaß, aber es sollten mehrere Kästchen aufeinmal gezeichnet werden.
    Dann wäre es schwerer, aber sonst ist es nicht schwer.

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

  • Gelungenes Spielchen , ausser das es wie schon von meinen Vorrednern erwähnt etwas zu einfach ist ;)
    Ich denke wenn du die Zahl der Kästchen und die Geschwindigkeit minimal erhöhst dann ist es perfekt :D

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio