Multiplayer-Game 'Kurven-Spiel'

  • Hat jemand mein Kurven-Spiel bereits auf Windows7 getestet? Wenn ja mit welchem Ergebnis? Möchte jemand die neue Version testen, bevor sie veröffentlicht wird? Hier bitte melden.

    Habe es unter Win7 x64 (*)laufen lassen und es läuft sauber. Was mir nur aufgefallen ist, dass die Schriftgröße nicht immer zur Fenstergröße passt (Zeilenumbruch: Wählen Sie einen Player aus... und Runde x/10 y%)!

    (*) Win7 x64 ohne Aero und sonstige Effekte, da Win7 in einer VM läuft!

    Erinnert mich ein wenig an Tron ;)

    Nettes Spiel :thumbup:

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Ich habe es auch runtergeladen sieht tooll aus

    hab aber die steuerung noch nicht gefuden
    kann mir die jeamand sagen

    ist ein cooles spiel

    gruss Simon

  • Zitat von Magnus

    Ich der Singelplayer funktioniert nicht!


    :rofl: Im Singleplayer-Modus spielt man immer mit der Maus. Eine neue Runde wird mit der Leertaste gestartet.


    Ich habe in der aktuellen Beta bereits folgendes umgesetzt:
    * Screensaver-Modus
    * Label (hoffentlich) immer sichtbar für alle Bildschirmauflösungen
    * Aero-Abschaltung auch für Windows7
    * Leicht besseres Design
    * Minimalen Abstand für die Anfangspunkte der Kurven hinzugefügt
    * Battle-Punktezählung für Single- und Multiplayer-Modus
    * Runde starten durch Drücken beider Maustasten
    * Geschwindigkeit der übrigen Kurven erhöht nach Ausfall (Singleplayer-Modus)

    Dank an UEZ für's Beta-Testen!

    Geplant sind noch folgende Erweiterungen für die nächste Version:
    * Sprachen: deutsch / englisch
    * Highscore-Modus
    * Optionen: Level (Geschwindigkeit), Geschwindigkeit nach Ausfall, Anzahl Runden
    * PC-Gegner Verhalten bzw. KI verbessern
    * Nach Game Over wieder ins Hauptmenü


    Habt ihr sonst noch Vorschläge?

  • funkey

    Das heist ich muss zb. spieler 1 auswählen dann wenn alles angezeigt wird also die punkte die leertaste drücken und dann mit der mous fahren

    wenn ich das mache dann färht meine farbe nur kurz

    gruss Simon

  • Simon, dein Problem ist mir unbekannt!? Welches Windows verwendest du? Welchen Theme? Bleibt deine Kurve einfach stehen und du fällst aus? Fahren die anderen Kurven alleine weiter? Kannst du mal auf einem anderen PC testen? Kannst du vllt einen Screenshot machen (HotKey p)? Startet sich dann keine neue Runde, wenn du ausgefallen bist?

  • Hi könntest du wenn du mal zeit hast die ganzen adlibenable bzw. adlibdisable zeug auf die neue autoit version anpassen kp ich blick da net so ganz durch ^^ aber ich will das spiel unbedingt mal ausprobieren....

    MfG Hellboy

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

  • Hi könntest du wenn du mal zeit hast die ganzen adlibenable bzw. adlibdisable zeug auf die neue autoit version anpassen kp ich blick da net so ganz durch ^^ aber ich will das spiel unbedingt mal ausprobieren....

    MfG Hellboy

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=Kurven-Spiel.ico
    #AutoIt3Wrapper_Outfile=Kurven-Spiel.exe
    #AutoIt3Wrapper_Compression=4
    #AutoIt3Wrapper_Res_Comment=Thanks to http://www.autoit.de
    #AutoIt3Wrapper_Res_Description=Kurven-Spiel
    #AutoIt3Wrapper_Res_Fileversion=1.4.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=funkey
    #AutoIt3Wrapper_Res_Language=3079
    #AutoIt3Wrapper_Res_Field=Author|funkey
    #AutoIt3Wrapper_Res_Field=Author eMail|5tao (at) gmx.at
    #AutoIt3Wrapper_Res_Field=Orginaldateiname|Kurven-Spiel.exe
    #AutoIt3Wrapper_Res_Field=Produktname|Kurven-Spiel
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <StaticConstants.au3>
    #include <WinAPI.au3>
    #include <GUIConstantsEx.au3>
    #include <GDIPlus.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>
    #include <ScreenCapture.au3>
    #include <Array.au3>

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

    Opt("GuiOnEventMode", 1)
    Opt("TrayIconDebug", 1)
    _GDIPlus_Startup()

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

    Global $Titel = "Kurven-Spiel von funkey"
    Global $Version = "1.4"
    Global $Min_Player = 2 ; Es müssen mind. x Player spielen (Default = 2, Testbetrieb = 1)
    Global $Speed = 5, $Modus = 0, $SinglePlayerSel = 0, $Stop = 0, $HighScore = 0, $Runde = 1, $Max_Runden = 10
    Global $Rahmenbreite = 10, $Linienbreite = 7, $LinienLen = 7, $Randabstand = 100, $Labelbreite = 100, $Seitenabstand = $Labelbreite + ($Rahmenbreite * 1.5)
    Global $Aktiv[6] = [0, 0, 0, 0, 0, 0], $Alive[6] = [0, 0, 0, 0, 0, 0], $Punkte[6] = [0, 0, 0, 0, 0, 0], $Sieg = 0
    Global $Farbe[6] = ['FF0000', '00FF00', '0000FF', 'FFFF00', 'F47117', '34BCEE']
    Global $hPen[6], $Winkel[6], $Pos[6][2]
    Global $Winkelweite = 0.12 ;engere Kurven ;)
    Global $Luecke = 3, $Luecken[6], $LueckenCounter = 0
    Global $dll = DllOpen("user32.dll")
    Global $Label_Punkte[6], $Label_Player[6]
    Global $Pause[6]
    Global $Label_Text[6][3] = [["Player 1: 1+q", "Player 1: 1+q Bereit", "Player 1: 1+q PC-Gegner"], _
    ["Player 2: Strg+Alt", "Player 2: Strg+Alt Bereit", "Player 2: Strg+Alt PC-Gegner"], _
    ["Player 3: m+,", "Player 3: m+, Bereit", "Player 3: m+, PC-Gegner"], _
    ["Player 4: links+unten", "Player 4: links+unten Bereit", "Player 4: links+unten PC-Gegner"], _
    ["Player 5: Numpad " & Chr(247) & " + " & Chr(215), "Player 5: Numpad " & Chr(247) & " + " & Chr(215) & " Bereit", "Player 5: Numpad " & Chr(247) & " + " & Chr(215) & " PC-Gegner"], _
    ["Player 6: Maus links + rechts", "Player 6: Maus links + rechts Bereit", "Player 6: Maus links + rechts PC-Gegner"]]
    Global $Taste[6][2] = [['31', '51'],['a2', '12'],['4d', 'bc'],['25', '28'],['6f', '6a'],['01', '02']]
    Global $Settings[2][2] = [['Singleplayer'],['Multiplayer']]
    Local $HoverArray[1], $ControlID, $Global_I = 0, $__ControlID, $HoverActive = 0, $Temp_Found = 0, $szTemp_Array[2]

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

    Global $hGUI = GUICreate($Titel, @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, $WS_EX_TOPMOST)
    Global $hwnd = WinGetHandle($Titel)
    Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hwnd)
    GUISetBkColor(0x0)
    ;~ GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    Global $hPenRahmen = _GDIPlus_PenCreate(0xA0FFFFFF, $Rahmenbreite)
    Global Const $hDwmApiDll = DllOpen("dwmapi.dll") ; Für Aero Aktivierung/Deaktivierung

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

    If @OSVersion = "WIN_VISTA" Then
    If _IsAeroEnable() = 0 Then _EnableDisableAero(False) ; Aero Deaktivierung
    EndIf

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

    $Welcome = GUICtrlCreateLabel("Willkommen beim" & @CRLF & $Titel & @CRLF & "Version " & $Version, $Rahmenbreite + $Seitenabstand, $Rahmenbreite + 150, @DesktopWidth - 2 * $Seitenabstand, 200, $SS_CENTER)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetFont(-1, 40)

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

    $Pause_Label = GUICtrlCreateLabel("Pause", @DesktopWidth - $Seitenabstand + $Rahmenbreite/2, $Rahmenbreite, $Seitenabstand - 1.5*$Rahmenbreite, 30, 0x201)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetFont(-1, 20, 1000)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetTip(-1, "Hier klicken oder Escape drücken um das Spiel zu beenden!"&@CRLF&@CRLF&"Drücken Sie Pause um mit dem Spiel wieder fortzufahren.")
    GUICtrlSetOnEvent(-1, '_Exit')

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

    $Status_Label = GUICtrlCreateLabel("Runde 1 / "&$Max_Runden&""&@CRLF&"0 %", @DesktopWidth - $Seitenabstand + $Rahmenbreite/2, $Rahmenbreite + 30, $Seitenabstand - 1.5*$Rahmenbreite, 30, $SS_CENTER)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUICtrlSetFont(-1, 10, 1000)

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

    $Label_Auswahl = GUICtrlCreateLabel("Wählen Sie einen Player aus"&@CRLF&"Diesen bedienen Sie mit der Maus", $Rahmenbreite + $Seitenabstand, $Rahmenbreite, @DesktopWidth - 2 * $Seitenabstand, 60, $SS_CENTER)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetFont(-1, 22)
    GUICtrlSetState(-1, $GUI_HIDE)

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

    For $i = 0 To UBound($Settings, 1) - 1
    $Settings[$i][1] = GUICtrlCreateLabel($Settings[$i][0], $Rahmenbreite + 150, @DesktopHeight / 14 + (@DesktopHeight / 7 * ($i + 3)), 300, 60, $SS_CENTERIMAGE)
    GUICtrlSetColor(-1, '0xFFFFFF')
    GUICtrlSetFont(-1, 30)
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetOnEvent(-1, '_Modus')
    _HoverAddCtrl($Settings[$i][1])
    Next

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

    For $i = 0 To 5
    $Label_Punkte[$i] = GUICtrlCreateLabel($Punkte[$i], @DesktopWidth - $Labelbreite - $Rahmenbreite, @DesktopHeight / 14 + (@DesktopHeight / 7 * $i), $Labelbreite, @DesktopHeight / 7, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    GUICtrlSetColor(-1, '0x' & $Farbe[$i])
    GUICtrlSetFont(-1, 40)
    GUICtrlSetState(-1, $GUI_HIDE)
    $Label_Player[$i] = GUICtrlCreateLabel($Label_Text[$i][0], $Rahmenbreite + 150, @DesktopHeight / 14 + (@DesktopHeight / 7 * $i), @DesktopWidth, @DesktopHeight / 7, $SS_CENTERIMAGE)
    GUICtrlSetColor(-1, '0x' & $Farbe[$i])
    GUICtrlSetFont(-1, 30)
    GUICtrlSetState(-1, $GUI_HIDE)
    $hPen[$i] = _GDIPlus_PenCreate('0xFF' & $Farbe[$i], $Linienbreite)
    $Winkel[$i] = Random(170, 190) ;)
    Next

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

    GUISetState()
    HotKeySet('p', '_Screen_Capture')
    HotKeySet("{Esc}", "_Exit")
    AdlibRegister("_ProcessHover", 50)

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

    Do
    Sleep(50)
    Until $Modus > 0

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

    AdlibUnRegister()

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

    For $i = 0 To UBound($Settings, 1) - 1
    GUICtrlSetState($Settings[$i][1], $GUI_HIDE)
    Next

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

    Sleep(1000)
    GUICtrlSetState($Welcome, $GUI_HIDE)
    Sleep(1000)

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

    Local $accel[18][2] = [["1"],["q"],["^"],["!"],["m"],[","],["^m"],["^,"],["^q"],["^1"],["!m"],["!,"],["!q"],["!1"],["{LEFT}"],["{DOWN}"],["{NUMPADDIV}"],["{NUMPADMULT}"]]
    GUISetAccelerators($accel)

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

    Switch $Modus
    Case 1
    GUICtrlSetState($Label_Auswahl, $GUI_SHOW)
    For $i = 0 To 5
    GUICtrlSetData($Label_Player[$i], 'Player ' & $i + 1)
    GUICtrlSetOnEvent($Label_Player[$i], '_SetSinglePlayer')
    _HoverAddCtrl($Label_Player[$i])
    GUICtrlSetState($Label_Player[$i], $GUI_SHOW)
    AdlibRegister("_ProcessHover", 50)
    Next
    Do
    Sleep(50)
    Until $SinglePlayerSel > 0
    GUICtrlSetState($Label_Auswahl, $GUI_HIDE)
    GUISetCursor(16, 1)
    AdlibUnRegister()
    Case 2
    GUISetCursor(16, 1)
    For $i = 0 To 5
    GUICtrlSetState($Label_Player[$i], $GUI_SHOW)
    Next
    Do
    For $i = 0 To 5
    If ($Aktiv[$i] = 0 Or $Aktiv[$i] = 1) And _IsPressed($Taste[$i][0], $dll) And Not $Pause[$i] Then _OnOff($i, 1)
    If $Aktiv[$i] > 0 And _IsPressed($Taste[$i][1], $dll) And Not $Pause[$i] Then _OnOff($i, 0)
    If Not _IsPressed($Taste[$i][0], $dll) And Not _IsPressed($Taste[$i][1], $dll) Then $Pause[$i] = 0
    Next
    Sleep(20)
    Until _IsPressed('20', $dll) And _ArraySum($Alive) >= $Min_Player ;mit Space weiter wenn mind. x Player bereit sind

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

    If _ArraySum($Alive) > 1 Then $Min_Player = 2
    EndSwitch

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

    For $i = 0 To 5
    GUICtrlSetState($Label_Player[$i], $GUI_HIDE)
    Next

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

    _DrawRahmen()
    _Set_Pos()
    _DrawStart()
    _Luecken()

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

    $Max_Punkte = _MaxPoints()
    HotKeySet('{Pause}', '_Pause')
    HotKeySet("{Esc}", "_Pause")
    If $Modus = 1 Then GUICtrlSetState($Status_Label, $GUI_SHOW)
    Sleep(1000)
    Adlibregister("_Zyklus", 35)

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

    While 1
    Sleep(3000)
    WEnd

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

    Func _Zyklus()
    For $i = 0 To 5
    Switch $Aktiv[$i]
    Case 1
    If _IsPressed($Taste[$i][0], $dll) Then _Curve($i, 1)
    If _IsPressed($Taste[$i][1], $dll) Then _Curve($i, 2)
    If $Alive[$i] Then
    If Not _DrawLine_Angle($Pos[$i][0], $Pos[$i][1], $Winkel[$i], $hPen[$i]) Then
    $Alive[$i] = 0
    For $j = 0 To 5
    If $j <> $i Then
    If $Alive[$j] And $Aktiv[$j] Then $Punkte[$j] += 1
    EndIf
    Next
    _UpDate_Points()
    EndIf
    EndIf
    Case 2
    If $Alive[$i] Then
    _Curve($i, _AutoScan($Pos[$i][0], $Pos[$i][1], $Winkel[$i]))
    If Not _DrawLine_Angle($Pos[$i][0], $Pos[$i][1], $Winkel[$i], $hPen[$i]) Then
    $Alive[$i] = 0
    For $j = 0 To 5
    If $j <> $i Then
    If $Alive[$j] And $Aktiv[$j] Then $Punkte[$j] += 1
    EndIf
    Next
    _UpDate_Points()
    EndIf
    EndIf
    EndSwitch
    Next
    $LueckenCounter += 1
    Switch $LueckenCounter
    Case $Luecken[0] + $Luecke
    _GDIPlus_PenSetColor($hPen[0], '0xFF' & $Farbe[0])
    Case $Luecken[1] + $Luecke
    _GDIPlus_PenSetColor($hPen[1], '0xFF' & $Farbe[1])
    Case $Luecken[2] + $Luecke
    _GDIPlus_PenSetColor($hPen[2], '0xFF' & $Farbe[2])
    Case $Luecken[3] + $Luecke
    _GDIPlus_PenSetColor($hPen[3], '0xFF' & $Farbe[3])
    Case $Luecken[4] + $Luecke
    _GDIPlus_PenSetColor($hPen[4], '0xFF' & $Farbe[4])
    Case $Luecken[5] + $Luecke
    _GDIPlus_PenSetColor($hPen[5], '0xFF' & $Farbe[5])
    Case $Luecken[0]
    _GDIPlus_PenSetColor($hPen[0], 0xFF000000)
    Case $Luecken[1]
    _GDIPlus_PenSetColor($hPen[1], 0xFF000000)
    Case $Luecken[2]
    _GDIPlus_PenSetColor($hPen[2], 0xFF000000)
    Case $Luecken[3]
    _GDIPlus_PenSetColor($hPen[3], 0xFF000000)
    Case $Luecken[4]
    _GDIPlus_PenSetColor($hPen[4], 0xFF000000)
    Case $Luecken[5]
    _GDIPlus_PenSetColor($hPen[5], 0xFF000000)
    Case 50
    $LueckenCounter = 0
    _Luecken()
    EndSwitch
    If _ArraySum($Alive) < $Min_Player Then
    _Restart()
    EndIf
    EndFunc ;==>_Zyklus

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

    Func _Restart()
    HotKeySet('{Pause}')
    HotKeySet("{Esc}", "_Exit")
    AdlibUnRegister()
    For $i = 0 To 5
    If $Punkte[$i] >= $Max_Punkte Then $Sieg = 1 ;Multiplayer - Bis der erste mind. 50 Punkte hat (6 Player)
    Next
    If $Modus = 1 And $Runde = $Max_Runden Then $Sieg = 1 ;Singleplayer - 10 Runden
    _Wait()
    If $Sieg Then
    _DrawRahmen()
    GUICtrlSetData($Welcome, 'Game Over')
    If $Modus = 1 Then GUICtrlSetData($Welcome, 'Game Over'&@CRLF&@CRLF&$HighScore&" %")
    GUICtrlSetState($Welcome, $GUI_SHOW)
    Sleep(1000)
    _Wait()
    _Exit()
    EndIf
    _DrawRahmen()
    _Set_Pos()
    $LueckenCounter = 0
    For $i = 0 To 5
    _GDIPlus_PenSetColor($hPen[$i], '0xFF' & $Farbe[$i])
    $Winkel[$i] = Random(170, 190) ;)
    If $Aktiv[$i] > 0 Then
    $Alive[$i] = 1
    Else
    $Alive[$i] = 0
    EndIf
    Next
    _DrawStart()
    _Luecken()
    $Runde += 1
    _Highscore()
    Sleep(1000)
    Adlibregister("_Zyklus", 35)
    HotKeySet('{Pause}', '_Pause')
    HotKeySet("{Esc}", "_Pause")
    EndFunc ;==>_Restart

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

    Func _Wait()
    HotKeySet('o', '_Minimize')
    Do
    Sleep(20)
    Until _IsPressed('20', $dll)
    HotKeySet('o')
    EndFunc ;==>_Wait

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

    Func _Modus()
    If @GUI_CtrlId = $Settings[0][1] Then $Modus = 1
    If @GUI_CtrlId = $Settings[1][1] Then $Modus = 2
    EndFunc ;==>_Modus

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

    Func _SetSinglePlayer()
    $SinglePlayerSel = 1
    For $i = 0 To 5
    $Aktiv[$i] = 2
    $Alive[$i] = 1
    If @GUI_CtrlId = $Label_Player[$i] Then
    GUICtrlSetBkColor($Label_Punkte[$i], '0x' & $Farbe[$i])
    GUICtrlSetColor($Label_Punkte[$i], 0x000000)
    $Taste[$i][0] = '01'
    $Taste[$i][1] = '02'
    $Aktiv[$i] = 1
    EndIf
    Next
    EndFunc ;==>_SetSinglePlayer

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

    Func _Highscore()
    If $Modus <> 1 Then Return
    For $i = 0 To 5
    If $Aktiv[$i] = 1 Then ExitLoop
    Next
    $HighScore = StringFormat("%.0f", $Punkte[$i] / ($Runde * 5) * 100)
    GUICtrlSetData($Status_Label, "Runde "&$Runde&"/ "&$Max_Runden&@CRLF&$HighScore&" %")
    EndFunc

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

    Func _OnOff($Player, $Switch)
    If $Switch Then
    $Aktiv[$Player] += 1
    GUICtrlSetData($Label_Player[$i], $Label_Text[$Player][$Aktiv[$Player]])
    Else
    $Aktiv[$Player] -= 1
    GUICtrlSetData($Label_Player[$i], $Label_Text[$Player][$Aktiv[$Player]])
    EndIf
    $Pause[$Player] = 1
    If $Aktiv[$Player] > 0 Then
    $Alive[$Player] = 1
    Else
    $Alive[$Player] = 0
    EndIf
    EndFunc ;==>_OnOff

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

    Func _Curve($Player, $Direction)
    If $Direction = 1 Then
    $Winkel[$Player] -= $Winkelweite
    ElseIf $Direction = 2 Then
    $Winkel[$Player] += $Winkelweite
    EndIf
    EndFunc ;==>_Curve

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

    Func _UpDate_Points()
    For $i = 0 To 5
    GUICtrlSetData($Label_Punkte[$i], $Punkte[$i])
    Next
    _Highscore()
    EndFunc ;==>_UpDate_Points

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

    Func _Check_Crash($Pos)
    Local $Pixel_Match = 0
    If PixelGetColor($Pos[0] - 1, $Pos[1] - 1) <> '0x000000' Then $Pixel_Match += 1
    If PixelGetColor($Pos[0] - 1, $Pos[1]) <> '0x000000' Then $Pixel_Match += 1
    If PixelGetColor($Pos[0] - 1, $Pos[1] + 1) <> '0x000000' Then $Pixel_Match += 1
    If PixelGetColor($Pos[0], $Pos[1] - 1) <> '0x000000' Then $Pixel_Match += 1
    If PixelGetColor($Pos[0], $Pos[1]) <> '0x000000' Then $Pixel_Match += 1
    If PixelGetColor($Pos[0], $Pos[1] + 1) <> '0x000000' Then $Pixel_Match += 1
    If PixelGetColor($Pos[0] + 1, $Pos[1] - 1) <> '0x000000' Then $Pixel_Match += 1
    If PixelGetColor($Pos[0] + 1, $Pos[1]) <> '0x000000' Then $Pixel_Match += 1
    If PixelGetColor($Pos[0] + 1, $Pos[1] + 1) <> '0x000000' Then $Pixel_Match += 1
    Return $Pixel_Match
    EndFunc ;==>_Check_Crash

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

    Func _Luecken()
    For $i = 0 To 5
    $Luecken[$i] = Random(0, 45, 1)
    Next
    EndFunc ;==>_Luecken

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

    Func _MaxPoints()
    Local $Summe = _ArraySum($Alive)
    Return ($Summe - 1) * 10
    EndFunc ;==>_MaxPoints

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

    Func _DrawLine_Angle(ByRef $aPos_x, ByRef $aPos_y, $Angle, $hPen, $Len = $Speed)
    Local $Alive = 1
    Local $arrayPos[2]
    $arrayPos[0] = $Len * Cos($Angle) + $aPos_x
    $arrayPos[1] = $Len * Sin($Angle) + $aPos_y
    If _Check_Crash($arrayPos) Then $Alive = 0
    _GDIPlus_GraphicsDrawLine($hGraphic, $aPos_x, $aPos_y, $arrayPos[0], $arrayPos[1], $hPen)
    $aPos_x = $arrayPos[0]
    $aPos_y = $arrayPos[1]
    Return $Alive
    EndFunc ;==>_DrawLine_Angle

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

    Func _AutoScan($aPos_x, $aPos_y, $Angle, $Len = $Speed)
    Local $ScanFaktor = 40
    Local $ScanStreuung = 3
    Local $ScanIntensity = 3
    Local $Chance
    Local $arrayPos[2]
    Local $Pixel_Match_l = 0, $Pixel_Match_r = 0, $Pixel_Match_m = 0;, $Pixel_Match_ql = 0, $Pixel_Match_qr = 0
    For $i = 1 To $ScanFaktor
    $arrayPos[0] = $Len / $ScanIntensity * $i * Cos($Angle + $Winkelweite * $ScanStreuung) + $aPos_x
    $arrayPos[1] = $Len / $ScanIntensity * $i * Sin($Angle + $Winkelweite * $ScanStreuung) + $aPos_y
    If PixelGetColor($arrayPos[0], $arrayPos[1]) <> '0x000000' Then $Pixel_Match_l += ($ScanFaktor + 1 - $i)
    $arrayPos[0] = $Len / $ScanIntensity * $i * Cos($Angle - $Winkelweite * $ScanStreuung) + $aPos_x
    $arrayPos[1] = $Len / $ScanIntensity * $i * Sin($Angle - $Winkelweite * $ScanStreuung) + $aPos_y
    If PixelGetColor($arrayPos[0], $arrayPos[1]) <> '0x000000' Then $Pixel_Match_r += ($ScanFaktor + 1 - $i)
    $arrayPos[0] = $Len / ($ScanIntensity / 2) * $i * Cos($Angle) + $aPos_x
    $arrayPos[1] = $Len / ($ScanIntensity / 2) * $i * Sin($Angle) + $aPos_y
    If PixelGetColor($arrayPos[0], $arrayPos[1]) <> '0x000000' Then $Pixel_Match_m += ($ScanFaktor + 1 - $i)
    Next
    Select
    Case $Pixel_Match_m > $Pixel_Match_l And $Pixel_Match_l >= $Pixel_Match_r
    Return 1
    Case $Pixel_Match_m > $Pixel_Match_r And $Pixel_Match_r >= $Pixel_Match_l
    Return 2
    Case $Pixel_Match_l > 0 And $Pixel_Match_l > $Pixel_Match_r
    Return 1
    Case $Pixel_Match_r > 0 And $Pixel_Match_r > $Pixel_Match_l
    Return 2
    Case $Pixel_Match_l > 0
    Return 1
    Case $Pixel_Match_r > 0
    Return 2
    Case Else
    $Chance = Random(0, 2, 1)
    If $Chance > 0 Then $Chance = Random(0, 2, 1)
    Return $Chance
    EndSelect
    EndFunc ;==>_AutoScan

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

    Func _Set_Pos()
    For $i = 0 To 5
    $Pos[$i][0] = Random($Randabstand + $Rahmenbreite, @DesktopWidth - $Randabstand - $Seitenabstand, 1)
    $Pos[$i][1] = Random($Randabstand + $Rahmenbreite, @DesktopHeight - $Randabstand - $Rahmenbreite, 1)
    Next
    EndFunc ;==>_Set_Pos

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

    Func _DrawStart()
    _GDIPlus_GraphicsDrawLine($hGraphic, @DesktopWidth - $Seitenabstand, 0, @DesktopWidth - $Seitenabstand, @DesktopHeight, $hPenRahmen)
    For $i = 0 To 5
    If $Aktiv[$i] Then
    _DrawLine_Angle($Pos[$i][0], $Pos[$i][1], $Winkel[$i], $hPen[$i], $LinienLen)
    GUICtrlSetState($Label_Punkte[$i], $GUI_SHOW)
    Sleep(700)
    EndIf
    Next
    EndFunc ;==>_DrawStart

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

    Func _DrawRahmen($Redraw = 1)
    If $Redraw = 1 Then _WinAPI_RedrawWindow($hwnd)
    _GDIPlus_GraphicsDrawLine($hGraphic, $Rahmenbreite / 2, 0, $Rahmenbreite / 2, @DesktopHeight, $hPenRahmen)
    _GDIPlus_GraphicsDrawLine($hGraphic, 0, $Rahmenbreite / 2, @DesktopWidth, $Rahmenbreite / 2, $hPenRahmen)
    _GDIPlus_GraphicsDrawLine($hGraphic, @DesktopWidth - $Rahmenbreite / 2, 0, @DesktopWidth - $Rahmenbreite / 2, @DesktopHeight, $hPenRahmen)
    _GDIPlus_GraphicsDrawLine($hGraphic, 0, @DesktopHeight - $Rahmenbreite / 2, @DesktopWidth, @DesktopHeight - $Rahmenbreite / 2, $hPenRahmen)
    EndFunc ;==>_DrawRahmen

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

    Func _ArraySum($array) ; original funkey für µit-November;)
    If (Not IsArray($array)) Then
    SetError(1)
    Return 0
    EndIf
    Local $iSum = 0
    For $i = 0 To UBound($array) - 1
    If StringIsFloat($array[$i]) Or StringIsInt($array[$i]) Then $iSum += $array[$i]
    Next
    Return $iSum
    EndFunc ;==>_ArraySum

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

    Func _Screen_Capture()
    If Not FileExists(@ScriptDir & '\ScreenCaptures') Then DirCreate(@ScriptDir & '\ScreenCaptures')
    _ScreenCapture_CaptureWnd(@ScriptDir & '\ScreenCaptures\Kurven-Spiel_' & @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & '.jpg', $hGUI, 0, 0, -1, -1, 0)
    EndFunc ;==>_Screen_Capture

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

    Func _Minimize()
    GUISetState(@SW_MINIMIZE)
    EndFunc ;==>_Minimize

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

    Func _BlinkPause()
    If GUICtrlRead($Pause_Label) = "Pause" Then
    GUICtrlSetData($Pause_Label, " ")
    ElseIf GUICtrlRead($Pause_Label) = " " Then
    GUICtrlSetData($Pause_Label, "Ende?")
    ElseIf GUICtrlRead($Pause_Label) = "Ende?" Then
    GUICtrlSetData($Pause_Label, "")
    ElseIf GUICtrlRead($Pause_Label) = "" Then
    GUICtrlSetData($Pause_Label, "Pause")
    EndIf
    EndFunc

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

    Func _Pause()
    $Stop = Not $Stop
    If $Stop Then
    Adlibregister("_BlinkPause", 700)
    GUISetCursor(2, 1)
    GUICtrlSetState($Pause_Label, $GUI_SHOW)
    HotKeySet("{Esc}", "_Exit")
    Else
    GUICtrlSetState($Pause_Label, $GUI_HIDE)
    GUISetCursor(16, 1)
    Adlibregister("_Zyklus", 35)
    HotKeySet("{Esc}", "_Pause")
    EndIf
    EndFunc

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

    Func _Exit()
    _GDIPlus_PenDispose($hPen[5])
    _GDIPlus_PenDispose($hPen[4])
    _GDIPlus_PenDispose($hPen[3])
    _GDIPlus_PenDispose($hPen[2])
    _GDIPlus_PenDispose($hPen[1])
    _GDIPlus_PenDispose($hPen[0])
    _GDIPlus_PenDispose($hPenRahmen)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    GUIDelete($hGUI)
    Exit
    EndFunc ;==>_Exit

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

    #Region _MouseHover.au3
    ;====================================================================================================================================
    ; UDF Name: _MouseHover.au3
    ; Author: marfdaman (Marvin)
    ; Contributions: RazerM (adding SetText parameter to _HoverFound and _HoverUndo).
    ; email: marfdaman at gmail dot com
    ; Use: Enable hover events for controls
    ; Note(s): If you want to use this i.c.w. an Adlibregister in your current script, make your Adlib call "_HoverCheck()" as well.
    ; In this case, _HoverOn must NOT be called.
    ;====================================================================================================================================

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

    ;===============================================================================
    ; Description: _HoverAddCtrl
    ; Parameter(s): $___ControlID -> Control ID of control to be hoverchecked
    ; Requirement: Array.au3
    ; Return Value(s): None
    ;===============================================================================
    Func _HoverAddCtrl($___ControlID)
    _ArrayAdd($HoverArray, $___ControlID)
    EndFunc ;==>_HoverAddCtrl
    ;===============================================================================
    ; Description: Checks whether the mousecursor is hovering over any of the defined controls.
    ; Parameter(s): None
    ; Requirement: None
    ; Return Value(s): If a control has matched, an array will be returned, with $array[1] being either
    ; "AcquiredHover" or "LostHover". $array[2] will contain the control ID.
    ; It is recommended that you put this function in an Adlibregister, since it's EXTREMELY
    ; resource friendly.
    ;===============================================================================
    Func _HoverCheck()
    $HoverData = GUIGetCursorInfo()
    If Not IsArray($HoverData) Then Return
    $Temp_Found = 0
    For $i = 1 To UBound($HoverArray) - 1
    If $HoverData[4] = $HoverArray[$i] Then
    $Temp_Found = $i
    EndIf
    Next
    Select
    Case $Temp_Found = 0 And $HoverActive = 1 Or $Temp_Found <> 0 And $Temp_Found <> $Global_I And $HoverActive = 1
    $HoverActive = 0
    $Temp_Found = 0
    $szTemp_Array[0] = "LostHover"
    $szTemp_Array[1] = $HoverArray[$Global_I]
    Return $szTemp_Array
    Case $Temp_Found > 0 And $HoverActive = 0
    $Global_I = $Temp_Found
    $HoverActive = 1
    $Temp_Found = 0
    $szTemp_Array[0] = "AcquiredHover"
    $szTemp_Array[1] = $HoverArray[$Global_I]
    Return $szTemp_Array
    EndSelect
    EndFunc ;==>_HoverCheck
    #EndRegion _MouseHover.au3

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

    Func _ProcessHover()
    $ControlID = _HoverCheck()
    If IsArray($ControlID) Then
    If $ControlID[0] = "AcquiredHover" Then
    _HoverFound($ControlID[1])
    Else
    _HoverLost($ControlID[1])
    EndIf
    EndIf
    EndFunc ;==>_ProcessHover

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

    Func _HoverLost($ControlID)
    GUICtrlSetFont($ControlID, 30)
    If StringLeft(GUICtrlRead($ControlID), 6) <> "Player" Then GUICtrlSetColor($ControlID, 0xFFFFFF)
    EndFunc ;==>_HoverLost

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

    Func _HoverFound($ControlID)
    GUICtrlSetFont($ControlID, 40)
    If StringLeft(GUICtrlRead($ControlID), 6) <> "Player" Then GUICtrlSetColor($ControlID, 0x00FF00)
    EndFunc ;==>_HoverFound

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

    #Region dwmAPI.au3
    ;===============================================================================
    ; Function Name: _EnableDisableAero()
    ; Description: Enables or Disables the Aero design from Vista to the default design.
    ; Parameter(s): $bEnable [BOOLEAN]: True enables the Aero, False disables it.
    ; Requirement(s): dwmapi.dll, Windows Vista
    ; Return Value(s): Returnvals of DLLCall
    ; Author(s): GtaSpider
    ;===============================================================================
    Func _EnableDisableAero($bEnable = True) ;True/False
    Local $aDll = DllCall($hDwmApiDll, "int", "DwmEnableComposition", "int", $bEnable)
    If @error Then Return SetError(@error, 0, 0)
    Return $aDll[0]
    EndFunc ;==>_EnableDisableAero
    ;===============================================================================
    ; Function Name: _IsAeroEnable
    ; Description: Checks if aero is enable
    ; Parameter(s): None
    ; Requirement(s): dwmapi.dll, Windows Vista
    ; Return Value(s): 0 If disabeld, 1 if enabled
    ; Author(s): GtaSpider
    ;===============================================================================
    Func _IsAeroEnable()
    Local $asDll = DllCall($hDwmApiDll, "int", "DwmIsCompositionEnabled", "str", "")
    If @error Then Return SetError(@error, 0, 0)
    Return StringReplace(StringReplace(Asc($asDll[1]), "1", True), "0", False)
    EndFunc ;==>_IsAeroEnable

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

    Func OnAutoItExit()
    DllClose($hDwmApiDll);Close dwmapi
    EndFunc ;==>OnAutoItExit
    #EndRegion dwmAPI.au3

    [/autoit]