1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. moritz1243

Beiträge von moritz1243

  • Remote Desktop

    • moritz1243
    • 10. Januar 2010 um 12:35

    Morgen zusammen,

    ich habe gestern Abend mal eben eine Remote desktop programm geschrieben, jedoch lässt das Ergebnis etwas zu wünschen übrig. Da die Geschwindigkeit nicht so schnell ist und das übertragen von befehlen auch nicht so gut klappt. Es wäre also schön wenn ihr verbesserungsvorschläge hättet

    Server:

    Spoiler anzeigen
    [autoit]


    #include <String.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <Date.au3>
    #include <Misc.au3>

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

    ;Variablen
    $Serverip = "127.0.0.1"
    $Serverip = @IPAddress1
    $Resvfile = @ScriptDir & "\recive.jpg"

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

    $Packete = 0
    $Bilder = 0

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

    HotKeySet("{ESC}","Raus")

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

    $Form1 = GUICreate("Server", 1100, 720, 100,10,-1,$WS_EX_TOPMOST)
    $picClient = GUICtrlCreatePic("", 0, 0, 960, 600, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $logwin = GUICtrlCreateEdit("Start....",0,610,960,100,0x0040 + 0x00200000)
    $button1 = GUICtrlCreateButton("Maus Bewegen",1000,40,80,50)
    $button2 = GUICtrlCreateButton("Herrunterfahren",1000,100,80,50)
    $button3 = GUICtrlCreateButton("Neu Starten",1000,160,80,50)
    $button4 = GUICtrlCreateButton("Nachricht",1000,220,80,50)
    GUISetState(@SW_SHOW)

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

    Global $Maus_use = False

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

    TCPStartup()
    $server = TCPListen($serverip, 65432, 128)
    If $server = -1 Then Exit

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

    slog("IP " & @IPAddress1)
    slog("Warte auf Client")
    Do
    $Verbindung = TCPAccept($server)
    Until $Verbindung >= 0

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

    slog("Client verbunden, warte auf Daten")

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

    Local $fso

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

    Global $input_await

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

    Global $last_data
    TCPSend($Verbindung, "next|")
    While 1
    $msg = GUIGetMsg()

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

    Switch $Msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $Button1
    $maus_use = Not $maus_use
    If $maus_use Then
    GUICtrlSetData($Button1,"Maus Aus")
    TCPSend($Verbindung, "maus|")
    slog("maus")
    Else
    GUICtrlSetData($Button1,"Maus")
    TCPSend($Verbindung, "mausaus|")
    slog("mausaus")
    EndIf
    Case $Button2
    TCPSend($Verbindung, "shutdown|")
    Case $Button3
    TCPSend($Verbindung, "restart|")
    Case $Button4
    $input_await = True
    Global $Input_gui = GUICreate("Input",256,156,-1,-1,$WS_EX_TOPMOST,-1,$Form1)
    Global $Input_send = GUICtrlCreateButton("Send", 10,100,236,20)
    Global $Input = GUICtrlCreateInput("",10,10,236,80)
    GUISetState()
    Case Else
    If $input_await Then
    If $msg = $input_send Then
    TCPSend($Verbindung, "message|" & GUICtrlRead($input) & "|")
    GUIDelete($input_gui)
    EndIf
    EndIf
    EndSwitch

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

    If $maus_use Then
    If _IsPressed(01) Then
    TCPSend($Verbindung, "click|")
    Else
    TCPSend($Verbindung, MouseGetPos(0) & ":" & MouseGetPos(1) & "|")
    EndIf
    EndIf

    $data = TCPRecv($Verbindung,16384);8192,4096
    If $data <> "" Then

    If StringRight($data,6) = "656E64" Then
    FileWrite($resvfile,Binary(StringTrimRight($data,6)))
    GUICtrlSetImage($picClient, $resvfile)
    FileDelete($resvfile)
    TCPSend($Verbindung, "next|")
    $Bilder += 1
    slog("# Bild fertig '" & $Bilder & "' ... fordere nächstes ")
    Sleep(20)
    Else
    $Packete += 1
    slog("# Packet empfangen '" & $Packete & "' #")
    FileWrite($resvfile,$data)
    EndIf
    Else
    Sleep(100)
    TCPSend($Verbindung, "next|")
    EndIf
    WEnd

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

    Func slog($logtext)
    GUICtrlSetData($logwin,$logtext & @CRLF & GUICtrlRead($logwin))
    EndFunc

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

    Func Raus()
    TCPCloseSocket($Verbindung)
    TCPShutdown()
    Exit 0
    EndFunc

    [/autoit]

    Client

    Spoiler anzeigen
    [autoit]


    #include <ScreenCapture.au3>
    #include <GUIConstants.au3>

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

    _ScreenCapture_SetJPGQuality(100)

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

    HotKeySet("{ESC}","Beenden")

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

    TCPStartup()
    $serverip = "127.0.0.1"

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

    If FileExists(@ScriptDir & "/config.ini") Then
    $serverip = IniRead(@ScriptDir & "/config.ini","config","Server IP",-1)
    Else
    $serverip = InputBox("Server IP","Geben sie die Server IP (nur einmal erforderlich ;-)")
    IniWrite(@ScriptDir & "/config.ini","config","Server IP",$serverip)
    EndIf

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

    $Socket = TCPConnect($serverip, 65432)

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

    ;TrayTip("Verbindung","Verbindung steht :-)",3)

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

    Local $pic = @ScriptDir & "\start1.jpg"

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

    Global $gui_timer

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

    While 1

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

    FileDelete($pic)
    _ScreenCapture_Capture($pic,0,0,@DesktopWidth,@DesktopHeight)
    ;$filesize = FileGetSize($pic)

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

    If $Socket <> -1 Then

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

    $weiter = True
    While $weiter

    Local $Rec = TCPRecv($Socket,1024)
    If $rec <> "" Then
    Local $splitt = StringSplit(StringLeft($rec,128),"|")

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

    If Not @error Then
    For $i = 1 To $splitt[0] Step 1

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

    Switch $splitt[$i]
    Case "maus"
    ; BlockInput(1)
    TrayTip("Info","blocked Input",3)
    Case "mausaus"
    ; BlockInput(0)
    TrayTip("Info","allow Input",3)
    Case "click"
    MouseClick("left")
    Case "shutdown"
    Shutdown(12)
    Case "restart"
    Shutdown(2)
    Case "next"
    $data = FileRead($pic)
    TCPSend($Socket,$data)
    TCPSend($Socket,"end")
    $weiter = False
    Case "message"
    If $i + 1 <= $splitt[0] Then
    Global $Info_Gui = GUICreate("Info",@DesktopWidth,@DesktopHeight,0,0,0x80000000,0x00000008)
    GUICtrlCreateLabel($splitt[$i+1],0,0,@DesktopWidth,@DesktopHeight,0x01)
    GUICtrlSetColor(-1,0xFF0000)
    GUICtrlSetFont(-1,40)
    GUISetState()
    $gui_timer = 20
    EndIf
    Case Else
    If $rec <> "" Then
    $pos = StringSplit($splitt[$i],":")
    If IsArray($pos) Then
    If UBound($pos) > 2 Then MouseMove($pos[1],$pos[2],1)
    EndIf
    EndIf
    EndSwitch
    Next
    EndIf
    EndIf

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

    If $gui_timer > 0 Then
    $gui_timer -= 1
    If $gui_timer = 1 Then GUIDelete($info_gui)
    EndIf
    WEnd

    Else
    ExitLoop
    EndIf
    WEnd

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

    Func Beenden()
    TCPCloseSocket($Socket)
    TCPShutdown()
    Exit 0
    EndFunc

    [/autoit]

    Gruß Moritz

  • Tower Defense A2D.udf A-Stern

    • moritz1243
    • 8. Januar 2010 um 15:43

    mmh das ist natürlich schlecht, ich werde nochmal drüber gucken habe schon ne vermutung wo das prob sein könnte, die frage ist ob sich das lohnt, weil wenn das keiner Spielt wäre das ziehmlich nutzlos es weiter zu entwicheln. Also ich frage einfach mal wer will das ich es weiter entwickel, oder sollte ich mcih ehr einem anderem meienr projekt(Jump n' Run, Towerdefense, Physikengine,Autoball,Moe Shooter(habe ich noch nciht hochgeladen mache ich später mal)) ?(

  • Physik Engine Projekt

    • moritz1243
    • 7. Januar 2010 um 15:20

    Das ist natürlich schade, weil ich hatte gehofft bei dem Projekt hilfe von jemandem zu bekommen der besser in mathe / physik ist als ich :(. Hier guck mal hier so sollte das dann am ende aussehen http://www.youtube.com/watch?v=LnvtZn2agmA. Kann du mir den dabei helfen die kraftübertragung zwischen den Vierecken hinzubekommen???

  • Physik Engine Projekt

    • moritz1243
    • 7. Januar 2010 um 14:33

    Hi zusammen,

    hätte jemand Lust mit mir eine Physik-Engine zu schreiben? Sie soll erstmal "nur" Kreise und Polygone ohne Schwerkraft berechnen, sprich Kollision(habe ich schon größtenteils fertig und dann die energie übertragung (Bewegungsvektoren und Rotationsgeschwindigkeit).

    Hier schonmal was ich geschaft habe:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <GDIPlus.au3>
    #include <Misc.au3>
    #include <Mathe.au3>
    #include <Array.au3>

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

    HotKeySet("{ESC}", "_beenden")

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

    Opt('MustDeclareVars', 1)
    Opt('GuiOnEventMode', 1)
    Opt ('MouseCoordMode', 0 )

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

    Global $hGUI, $hWnd, $hGraphic, $Bitmap, $Buffer, $hPen, $msg
    Global $width = 640
    Global $height = 400
    Global $titel = "Titel"
    Global $version = " v XXX"

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

    Global Const $pi = 3.14159265358979
    Global Const $pi_div_180 = $pi/180
    Global Const $180_div_pi = 180/$pi

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

    Global $Kugel_Masse
    Global $Kugel_Radius
    Global $Kugel_Position
    Global $Kugel_Vector

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

    Global $Kugel_Reibung = 0.0

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

    Global $mov[2]

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

    #Region Kugel hinzufügen
    Func Kugel_Hinzufuegen($x, $y, $radius, $x_vector = 0, $y_vector = 0, $masse = 0)

    If IsArray($Kugel_Masse) Then
    Local $Element = UBound($Kugel_Masse)
    ReDim $Kugel_Masse[$Element+1]
    ReDim $Kugel_Radius[$Element+1]
    ReDim $Kugel_Position[$Element+1][2]
    ReDim $Kugel_Vector[$Element+1][2]
    Else
    Local $Element = 0
    Dim $Kugel_Masse[$Element+1]
    Dim $Kugel_Radius[$Element+1]
    Dim $Kugel_Position[$Element+1][2]
    Dim $Kugel_Vector[$Element+1][2]
    EndIf

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

    $Kugel_Radius[$Element] = $radius
    If $masse = 0 Then
    $Kugel_Masse[$Element] = $PI * $radius * $radius
    Else
    $Kugel_Masse[$Element] = $masse
    EndIf
    $Kugel_Position[$Element][0] = $x
    $Kugel_Position[$Element][1] = $y
    If _Punkte_Distance($x,$y,$x+$x_vector,$y+$y_vector) <> 0 Then
    $Kugel_Vector[$Element][0] = $x_vector; / _Punkte_Distance($x,$y,$x+$x_vector,$y+$y_vector)
    Else
    $Kugel_Vector[$Element][0] = 0
    EndIf
    If _Punkte_Distance($x,$y,$x+$x_vector,$y+$y_vector) <> 0 Then
    $Kugel_Vector[$Element][1] = $y_vector; / _Punkte_Distance($x,$y,$x+$x_vector,$y+$y_vector)
    Else
    $Kugel_Vector[$Element][1] = 0
    EndIf

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

    EndFunc
    #EndRegion
    Kugel_Hinzufuegen(100, 100, 20, 10, 9)
    Kugel_Hinzufuegen(200, 100, 20, -8, 10)

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

    Global $Strich[1][4]
    #Region Strich hinzufügen
    Func Strich_Hinzufuegen($x1,$y1, $x2,$y2)

    Local $Strich_Anzahl = UBound($Strich)

    ReDim $Strich[$Strich_Anzahl+1][4]

    $Strich[$Strich_Anzahl][0] = $x1
    $Strich[$Strich_Anzahl][1] = $y1
    $Strich[$Strich_Anzahl][2] = $x2
    $Strich[$Strich_Anzahl][3] = $y2

    EndFunc
    #EndRegion

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

    $hGUI = GUICreate($Titel & $version, $width, $height,-1,-1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")
    $hWnd = WinGetHandle($Titel & $version)
    GUISetState(@SW_SHOW)

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

    Global $Quadrat
    #Region Quadrat hinzufügen
    Func Rechteck_Hinzufuegen($x, $y, $breite, $hoehe)

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

    If IsArray($Quadrat) Then
    Local $Quadrat_Anzahl = UBound($Quadrat)
    ReDim $Quadrat[$Quadrat_Anzahl+1][8]
    Else
    Local $Quadrat_Anzahl = 0
    Dim $Quadrat[$Quadrat_Anzahl+1][8]
    EndIf

    $Quadrat[$Quadrat_Anzahl][0] = $x
    $Quadrat[$Quadrat_Anzahl][1] = $y
    $Quadrat[$Quadrat_Anzahl][2] = $x + $breite
    $Quadrat[$Quadrat_Anzahl][3] = $y
    $Quadrat[$Quadrat_Anzahl][4] = $x + $breite
    $Quadrat[$Quadrat_Anzahl][5] = $y + $hoehe
    $Quadrat[$Quadrat_Anzahl][6] = $x
    $Quadrat[$Quadrat_Anzahl][7] = $y + $hoehe

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

    EndFunc
    #EndRegion
    Rechteck_Hinzufuegen(100, 300, 100, 60)

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

    GUISetCursor(16) ;unsichtbar

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

    Global $Aktuelle_Kugel = 0
    Global $Richtung
    Global $Geschwindigkeit

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

    _GDIPlus_Startup ()

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hWnd)
    $Bitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphic)
    $Buffer = _GDIPlus_ImageGetGraphicsContext($Bitmap)
    _GDIPlus_GraphicsSetSmoothingMode($Buffer, 4)
    _GDIPlus_GraphicsClear($Buffer,0xFF000000)
    $hPen = _GDIPlus_PenCreate (0xFF00FF00,1)

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

    AdlibEnable("Main", 25)

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

    While 1
    Sleep(3000)
    WEnd

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

    Func Main()
    _GDIPlus_GraphicsClear($Buffer,0xFFFFFFFF)
    Input()
    Kugeln()
    Zeichnen()

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

    EndFunc

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

    Func Input()

    _GDIPlus_GraphicsFillRect($Buffer,MouseGetPos(0),MouseGetPos(1)-25,4,4)

    If _IsPressed(01) Then

    Local $mouse_position = MouseGetPos()

    For $i = 0 To UBound($Kugel_Position)-1 Step 1

    If _Punkte_Distance($mouse_position[0], $mouse_position[1]-25, $Kugel_Position[$i][0] + $Kugel_Radius[$i], $Kugel_Position[$i][1]+$Kugel_Radius[$i]) < $Kugel_Radius[$i] Then

    $Aktuelle_Kugel = $i
    ExitLoop

    EndIf

    Next
    EndIf
    If $Aktuelle_Kugel <> -1 Then
    If _IsPressed(02) Then
    Local $mouse_position = MouseGetPos()
    $Kugel_Position[$Aktuelle_Kugel][0] = $mouse_position[0] - 25
    $Kugel_Position[$Aktuelle_Kugel][1] = $mouse_position[1] - 50
    EndIf
    EndIf
    If $Aktuelle_Kugel <> -1 Then

    $mov[0] = 0
    $mov[1] = 0

    If _IsPressed(41) Then
    $Richtung += 5;$mov[0] += 10;$Kugel_Vector[$Aktuelle_Kugel][0] += 0.5
    RechtEck_drehen(0, 5)
    ElseIf _IsPressed(44) Then
    $Richtung -= 5;$mov[0] -= 10;$Kugel_Vector[$Aktuelle_Kugel][0] -= 0.5
    RechtEck_drehen(0, -5)
    EndIf
    If _IsPressed(53) And $Geschwindigkeit < 10 Then $Geschwindigkeit += 0.5;$mov[1] += 10;$Kugel_Vector[$Aktuelle_Kugel][1] += 0.5
    If _IsPressed(57) And $Geschwindigkeit > -10 Then $Geschwindigkeit -= 0.5;$mov[1] -= 10;$Kugel_Vector[$Aktuelle_Kugel][1] -= 0.5
    EndIf

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

    $mov[0] = Sin(($Richtung+90)*$pi_div_180)*$Geschwindigkeit
    $mov[1] = Cos(($Richtung+90)*$pi_div_180)*$Geschwindigkeit

    RechtEck_Bewegen(0,$mov[0],$mov[1])

    EndFunc

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

    Func RechtEck_Bewegen($ID,$x,$y)


    For $i = 0 To 7 Step 2
    If $Quadrat[$ID][$i] + $x < 0 Or $Quadrat[$ID][$i] + $x > $width Then Return 0
    If $Quadrat[$ID][$i+1] + $y < 0 Or $Quadrat[$ID][$i+1] + $y > $height Then Return 0
    Next

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

    For $i = 0 To 7 Step 2

    $Quadrat[$ID][$i] += $x
    $Quadrat[$ID][$i+1] += $y

    Next

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

    EndFunc

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

    Func RechtEck_drehen($ID, $Winkel)

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

    Local $Center[2] = [($Quadrat[$ID][0]+$Quadrat[$ID][4])/2, ($Quadrat[$ID][1]+$Quadrat[$ID][5])/2]

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

    For $i = 0 To 7 Step 2

    Local $Winkel_Alt = _Punkte_Winkel($Center[0],$Center[1], $Quadrat[$ID][$i], $Quadrat[$ID][$i+1]) + 90
    Local $Abstand = _Punkte_Distance($Center[0],$Center[1], $Quadrat[$ID][$i], $Quadrat[$ID][$i+1])

    $Quadrat[$ID][$i] = $Center[0] + Sin(($Winkel_Alt + $Winkel)*$pi_div_180)*$Abstand
    $Quadrat[$ID][$i+1] = $Center[1] + Cos(($Winkel_Alt + $Winkel)*$pi_div_180)*$Abstand
    Next

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

    EndFunc

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

    Func Kugeln()

    Kugeln_Bewegen()
    Kugeln_Kollisionen()

    EndFunc

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

    Func Kugeln_Bewegen()

    Local $limit = 10

    For $i = 0 To UBound($Kugel_Position)-1 Step 1

    $Kugel_Position[$i][0] += $Kugel_Vector[$i][0]
    $Kugel_Position[$i][1] += $Kugel_Vector[$i][1]

    If Abs($Kugel_Vector[$i][0]) < $Kugel_Reibung Then $Kugel_Vector[$i][0] = 0
    If Abs($Kugel_Vector[$i][1]) < $Kugel_Reibung Then $Kugel_Vector[$i][1] = 0

    If $Kugel_Vector[$i][0] < 0 Then
    $Kugel_Vector[$i][0] += $Kugel_Reibung
    ElseIf $Kugel_Vector[$i][0] > 0 Then
    $Kugel_Vector[$i][0] -= $Kugel_Reibung
    EndIf
    If $Kugel_Vector[$i][1] < 0 Then
    $Kugel_Vector[$i][1] += $Kugel_Reibung
    ElseIf $Kugel_Vector[$i][1] > 0 Then
    $Kugel_Vector[$i][1] -= $Kugel_Reibung
    EndIf

    If Abs($Kugel_Vector[$i][0]) > $limit Then
    Local $divisor = Abs($Kugel_Vector[$i][0]) / $limit
    $Kugel_Vector[$i][0] /= $divisor
    $Kugel_Vector[$i][1] /= $divisor
    EndIf
    If Abs($Kugel_Vector[$i][1]) > $limit Then
    Local $divisor = Abs($Kugel_Vector[$i][1]) / $limit
    $Kugel_Vector[$i][0] /= $divisor
    $Kugel_Vector[$i][1] /= $divisor
    EndIf
    Next

    EndFunc

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

    Func Kugeln_Kollisionen()

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

    Local $Kugel_Anzahl = UBound($Kugel_Position)

    For $i = 0 To $Kugel_Anzahl-1 Step 1
    For $j = $i+1 To $Kugel_Anzahl-1 Step 1

    If _Punkte_Distance($Kugel_Position[$i][0], $Kugel_Position[$i][1], $Kugel_Position[$j][0], $Kugel_Position[$j][1]) < $Kugel_Radius[$i] + $Kugel_Radius[$j] Then

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

    Local $Delta_X = $Kugel_Position[$i][0] - $Kugel_Position[$j][0]
    Local $Delta_Y = $Kugel_Position[$i][1] - $Kugel_Position[$j][1]
    Local $Abstand = Sqrt($Delta_X*$Delta_X+$Delta_Y*$Delta_Y)

    Local $Matrix11 = $Delta_X / $Abstand
    Local $Matrix12 = -$Delta_Y / $Abstand
    Local $Matrix21 = $Delta_Y / $Abstand
    Local $Matrix22 = $Delta_X / $Abstand

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

    ;$Koordinatentransformion

    Local $Vp1 = $Kugel_Vector[$i][0] * $Matrix11 + $Kugel_Vector[$i][1] * -$Matrix12
    Local $Vs1 = $Kugel_Vector[$i][0] * -$Matrix21 + $Kugel_Vector[$i][1] * $Matrix22
    Local $Vp2 = $Kugel_Vector[$j][0] * $Matrix11 + $Kugel_Vector[$j][1] * -$Matrix12
    Local $Vs2 = $Kugel_Vector[$j][0] * -$Matrix21 + $Kugel_Vector[$j][1] * $Matrix22


    If $Vp1-$Vp2<0 Then

    Local $MasseTotal = $Kugel_Masse[$i] + $Kugel_Masse[$j]
    Local $Vp1_ = ($Kugel_Masse[$i]-$Kugel_Masse[$j]) / $MasseTotal * $Vp1 + 2*$Kugel_Masse[$j] / $MasseTotal * $Vp2
    Local $Vp2_ = ($Kugel_Masse[$j]-$Kugel_Masse[$i]) / $MasseTotal * $Vp2 + 2*$Kugel_Masse[$i] / $MasseTotal * $Vp1

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

    $Kugel_Vector[$i][0] = $Vp1_ * $Matrix11+$Vs1*$Matrix12
    $Kugel_Vector[$i][1] = $Vp1_ * $Matrix21+$Vs1*$Matrix22
    $Kugel_Vector[$j][0] = $Vp2_ * $Matrix11+$Vs2*$Matrix12
    $Kugel_Vector[$j][1] = $Vp2_ * $Matrix21+$Vs2*$Matrix22

    EndIf

    EndIf
    Next

    If $Kugel_Position[$i][0] <= 0 Or $Kugel_Position[$i][0] + $Kugel_Radius[$i]*2 >= $width Then
    $Kugel_Vector[$i][0] = -$Kugel_Vector[$i][0]
    If $Kugel_Position[$i][0] <= 0 Then
    $Kugel_Position[$i][0] = 0
    Else
    $Kugel_Position[$i][0] = $width - 2*$Kugel_Radius[$i]
    EndIf
    EndIf
    If $Kugel_Position[$i][1] <= 0 Or $Kugel_Position[$i][1] + $Kugel_Radius[$i]*2 >= $height Then
    $Kugel_Vector[$i][1] = -$Kugel_Vector[$i][1]
    If $Kugel_Position[$i][1] <= 0 Then
    $Kugel_Position[$i][1] = 0
    Else
    $Kugel_Position[$i][1] = $height - 2*$Kugel_Radius[$i]
    EndIf
    EndIf
    For $j = 0 To UBound($Strich)-1 Step 1

    _GDIPlus_GraphicsFillRect($Buffer,$Kugel_Position[$i][0]+$Kugel_Radius[$i],$Kugel_Position[$i][1]+$Kugel_Radius[$i],4,4)

    Local $sp = _Punkt_Linie($Kugel_Position[$i][0]+$Kugel_Radius[$i], $Kugel_Position[$i][1]+$Kugel_Radius[$i], $Strich[$j][0],$Strich[$j][1],$Strich[$j][2],$Strich[$j][3]) ; Der Punkt auf der Linie der

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

    If _Punkt_in_RechtEck($sp[0], $sp[1], $Strich[$j][0],$Strich[$j][1],$Strich[$j][2],$Strich[$j][3]) Then ; Wenn die Spieler überhaupt mit der Seite kollidieren kann

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

    If _Punkte_Distance($Kugel_Position[$i][0]+$Kugel_Radius[$i], $Kugel_Position[$i][1]+$Kugel_Radius[$i], $sp[0],$sp[1]) < $Kugel_Radius[$i] Then ; Prüpf ob die Positition überhaupt kollidieren kann.

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

    Local $Spiegel = _Punkte_Winkel($Kugel_Position[$i][0]+$Kugel_Radius[$i], $Kugel_Position[$i][1]+$Kugel_Radius[$i],$sp[0],$sp[1]) + 90; Errechnet den Abprall-Winkel der Seites

    Local $eintrittswinkel = _Punkte_Winkel(0, 0, $Kugel_Vector[$i][0], $Kugel_Vector[$i][1]) + 90

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

    Local $neuer_winkel = _Spiegelwinkel($eintrittswinkel,$Spiegel) + 180

    $Kugel_Position[$i][0] = $sp[0] - $Kugel_Radius[$i] + Sin(($Spiegel+180) * $pi_div_180) * $Kugel_Radius[$i] ; Korrektur der X-Position
    $Kugel_Position[$i][1] = $sp[1] - $Kugel_Radius[$i] + Cos(($Spiegel+180) * $pi_div_180) * $Kugel_Radius[$i] ; Korrektur der Y-Position

    _GDIPlus_GraphicsFillRect($Buffer,$sp[0],$Sp[1],4,4)
    _GDIPlus_GraphicsDrawLine($Buffer,$sp[0],$Sp[1],$Kugel_Position[$i][0]+$Kugel_Radius[$i],$Kugel_Position[$i][1]+$Kugel_Radius[$i])

    $Kugel_Vector[$i][0] = Sin($neuer_winkel*$pi_div_180) * _Punkte_Distance(0, 0, $Kugel_Vector[$i][0], $Kugel_Vector[$i][1]) + $mov[0]
    $Kugel_Vector[$i][1] = Cos($neuer_winkel*$pi_div_180) * _Punkte_Distance(0, 0, $Kugel_Vector[$i][0], $Kugel_Vector[$i][1]) + $mov[1]

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

    EndIf
    EndIf

    Local $Distanz = _Punkte_Distance($Kugel_Position[$i][0]+$Kugel_Radius[$i],$Kugel_Position[$i][1]+$Kugel_Radius[$i],$Strich[$j][0],$Strich[$j][1])

    If $Distanz < $Kugel_Radius[$i] Then

    Local $Speed = _Punkte_Distance(0,0,$Kugel_Vector[$i][0],$Kugel_Vector[$i][1])

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

    $Kugel_Vector[$i][0] = (($Kugel_Position[$i][0]+$Kugel_Radius[$i]) - $Strich[$j][0]) / $Distanz * $Speed + $mov[0]
    $Kugel_Vector[$i][1] = (($Kugel_Position[$i][1]+$Kugel_Radius[$i]) - $Strich[$j][1]) / $Distanz * $Speed + $mov[1]

    EndIf
    Next

    For $j = 0 To UBound($Quadrat)-1 Step 1

    #Region Ecken Kollision
    For $Ecke = 0 To 7 Step 2
    Local $Distanz = _Punkte_Distance($Kugel_Position[$i][0]+$Kugel_Radius[$i], $Kugel_Position[$i][1]+$Kugel_Radius[$i],$Quadrat[$j][$Ecke],$Quadrat[$j][$Ecke+1])
    If $Distanz < $Kugel_Radius[$i] Then

    Local $Speed = _Punkte_Distance(0,0,$Kugel_Vector[$i][0],$Kugel_Vector[$i][1])
    $Kugel_Vector[$i][0] = (($Kugel_Position[$i][0]+$Kugel_Radius[$i]) - $Quadrat[$j][$Ecke]) / $Distanz * $Speed + $mov[0]
    $Kugel_Vector[$i][1] = (($Kugel_Position[$i][1]+$Kugel_Radius[$i]) - $Quadrat[$j][$Ecke+1]) / $Distanz * $Speed + $mov[1]

    Local $Winkel_Alt = _Punkte_Winkel(0,0,$Kugel_Vector[$i][0],$Kugel_Vector[$i][1]) + 90

    ;MsgBox(0,"",$Kugel_Vector[$i][0] & @LF & $Kugel_Vector[$i][1] & @LF & $Speed)

    $Kugel_Position[$i][0] = $Quadrat[$j][$Ecke] + Sin(($Winkel_Alt)*$pi_div_180)*$Kugel_Radius[$i] - $Kugel_Radius[$i]
    $Kugel_Position[$i][1] = $Quadrat[$j][$Ecke+1] + Cos(($Winkel_Alt)*$pi_div_180)*$Kugel_Radius[$i] - $Kugel_Radius[$i]

    EndIf
    Next
    #EndRegion
    #Region Seiten Kollision
    For $punkt = 0 To 5 Step 2
    Local $sp = _Punkt_Linie($Kugel_Position[$i][0]+$Kugel_Radius[$i], $Kugel_Position[$i][1]+$Kugel_Radius[$i], $Quadrat[$j][$punkt],$Quadrat[$j][$punkt+1],$Quadrat[$j][$punkt+2],$Quadrat[$j][$punkt+3])
    If _Punkt_in_RechtEck($sp[0], $sp[1], $Quadrat[$j][$punkt],$Quadrat[$j][$punkt+1],$Quadrat[$j][$punkt+2],$Quadrat[$j][$punkt+3]) Then
    If _Punkte_Distance($Kugel_Position[$i][0]+$Kugel_Radius[$i], $Kugel_Position[$i][1]+$Kugel_Radius[$i], $sp[0],$sp[1]) < $Kugel_Radius[$i] Then

    Local $Spiegel = _Punkte_Winkel($Kugel_Position[$i][0]+$Kugel_Radius[$i], $Kugel_Position[$i][1]+$Kugel_Radius[$i],$sp[0],$sp[1]) + 90; Errechnet den Abprall-Winkel der Seites

    Local $eintrittswinkel = _Punkte_Winkel(0, 0, $Kugel_Vector[$i][0], $Kugel_Vector[$i][1]) + 90

    $Kugel_Position[$i][0] = $sp[0] - $Kugel_Radius[$i] + Sin(($Spiegel+180) * $pi_div_180) * $Kugel_Radius[$i] ; Korrektur der X-Position
    $Kugel_Position[$i][1] = $sp[1] - $Kugel_Radius[$i] + Cos(($Spiegel+180) * $pi_div_180) * $Kugel_Radius[$i] ; Korrektur der Y-Position

    _GDIPlus_GraphicsFillRect($Buffer,$sp[0],$Sp[1],4,4)
    _GDIPlus_GraphicsDrawLine($Buffer,$sp[0],$Sp[1],$Kugel_Position[$i][0]+$Kugel_Radius[$i],$Kugel_Position[$i][1]+$Kugel_Radius[$i])

    If $Spiegel + 90 < $eintrittswinkel And $Spiegel - 90 > $eintrittswinkel Then

    Local $neuer_winkel = _Spiegelwinkel($eintrittswinkel,$Spiegel) + 180

    $Kugel_Vector[$i][0] = Sin($neuer_winkel*$pi_div_180) * _Punkte_Distance(0, 0, $Kugel_Vector[$i][0], $Kugel_Vector[$i][1])
    $Kugel_Vector[$i][1] = Cos($neuer_winkel*$pi_div_180) * _Punkte_Distance(0, 0, $Kugel_Vector[$i][0], $Kugel_Vector[$i][1])

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

    EndIf

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

    EndIf
    EndIf
    Next
    Local $sp = _Punkt_Linie($Kugel_Position[$i][0]+$Kugel_Radius[$i], $Kugel_Position[$i][1]+$Kugel_Radius[$i], $Quadrat[$j][6],$Quadrat[$j][7],$Quadrat[$j][0],$Quadrat[$j][1])
    If _Punkt_in_RechtEck($sp[0], $sp[1], $Quadrat[$j][6],$Quadrat[$j][7],$Quadrat[$j][0],$Quadrat[$j][1]) Then
    If _Punkte_Distance($Kugel_Position[$i][0]+$Kugel_Radius[$i], $Kugel_Position[$i][1]+$Kugel_Radius[$i], $sp[0],$sp[1]) < $Kugel_Radius[$i] Then

    Local $Spiegel = _Punkte_Winkel($Kugel_Position[$i][0]+$Kugel_Radius[$i], $Kugel_Position[$i][1]+$Kugel_Radius[$i],$sp[0],$sp[1]) + 90; Errechnet den Abprall-Winkel der Seites

    Local $eintrittswinkel = _Punkte_Winkel(0, 0, $Kugel_Vector[$i][0], $Kugel_Vector[$i][1]) + 90

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

    Local $neuer_winkel = _Spiegelwinkel($eintrittswinkel,$Spiegel) + 180

    $Kugel_Position[$i][0] = $sp[0] - $Kugel_Radius[$i] + Sin(($Spiegel+180) * $pi_div_180) * $Kugel_Radius[$i] ; Korrektur der X-Position
    $Kugel_Position[$i][1] = $sp[1] - $Kugel_Radius[$i] + Cos(($Spiegel+180) * $pi_div_180) * $Kugel_Radius[$i] ; Korrektur der Y-Position

    _GDIPlus_GraphicsFillRect($Buffer,$sp[0],$Sp[1],4,4)
    _GDIPlus_GraphicsDrawLine($Buffer,$sp[0],$Sp[1],$Kugel_Position[$i][0]+$Kugel_Radius[$i],$Kugel_Position[$i][1]+$Kugel_Radius[$i])

    $Kugel_Vector[$i][0] = Sin($neuer_winkel*$pi_div_180) * _Punkte_Distance(0, 0, $Kugel_Vector[$i][0], $Kugel_Vector[$i][1])
    $Kugel_Vector[$i][1] = Cos($neuer_winkel*$pi_div_180) * _Punkte_Distance(0, 0, $Kugel_Vector[$i][0], $Kugel_Vector[$i][1])

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

    EndIf
    EndIf
    #EndRegion
    Next

    Next

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

    EndFunc

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

    Func Viereck_drehen($winkel)

    Local $mittel_p_x = ($Strich[1][0] + $Strich[3][0]) / 2
    Local $mittel_p_y = ($Strich[1][1] + $Strich[3][1]) / 2

    Local $c = _Punkte_Distance($Strich[1][0], $Strich[1][1],$mittel_p_x,$mittel_p_y)

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

    Local $dir = _Punkte_Winkel($mittel_p_x, $mittel_p_y, $Strich[1][0], $Strich[1][1]) + 90
    $Strich[1][0] = $mittel_p_x + Sin (($dir + $winkel)*$pi_div_180)*$c
    $Strich[4][2] = $mittel_p_x + Sin (($dir + $winkel)*$pi_div_180)*$c
    $Strich[1][1] = $mittel_p_y + Cos (($dir + $winkel)*$pi_div_180)*$c
    $Strich[4][3] = $mittel_p_y + Cos (($dir + $winkel)*$pi_div_180)*$c
    $dir = _Punkte_Winkel($mittel_p_x, $mittel_p_y, $Strich[2][0], $Strich[2][1]) + 90
    $Strich[2][0] = $mittel_p_x + Sin (($dir + $winkel)*$pi_div_180)*$c
    $Strich[1][2] = $mittel_p_x + Sin (($dir + $winkel)*$pi_div_180)*$c
    $Strich[2][1] = $mittel_p_y + Cos (($dir + $winkel)*$pi_div_180)*$c
    $Strich[1][3] = $mittel_p_y + Cos (($dir + $winkel)*$pi_div_180)*$c
    $dir = _Punkte_Winkel($mittel_p_x, $mittel_p_y, $Strich[3][0], $Strich[3][1]) + 90
    $Strich[3][0] = $mittel_p_x + Sin (($dir + $winkel)*$pi_div_180)*$c
    $Strich[2][2] = $mittel_p_x + Sin (($dir + $winkel)*$pi_div_180)*$c
    $Strich[3][1] = $mittel_p_y + Cos (($dir + $winkel)*$pi_div_180)*$c
    $Strich[2][3] = $mittel_p_y + Cos (($dir + $winkel)*$pi_div_180)*$c
    $dir = _Punkte_Winkel($mittel_p_x, $mittel_p_y, $Strich[4][0], $Strich[4][1]) + 90
    $Strich[4][0] = $mittel_p_x + Sin (($dir + $winkel)*$pi_div_180)*$c
    $Strich[3][2] = $mittel_p_x + Sin (($dir + $winkel)*$pi_div_180)*$c
    $Strich[4][1] = $mittel_p_y + Cos (($dir + $winkel)*$pi_div_180)*$c
    $Strich[3][3] = $mittel_p_y + Cos (($dir + $winkel)*$pi_div_180)*$c

    EndFunc

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

    Func Zeichnen ()

    ; _GDIPlus_GraphicsClear($Buffer,0xFFFFFFFF)

    For $i = 0 To UBound($Kugel_Position) - 1 Step 1
    _GDIPlus_GraphicsDrawPie ($Buffer, $Kugel_Position[$i][0], $Kugel_Position[$i][1], $Kugel_Radius[$i]*2, $Kugel_Radius[$i]*2,-_Punkte_Winkel(0,0,$Kugel_Vector[$i][0],$Kugel_Vector[$i][1]),360,$hPen)
    Next
    For $i = 0 To UBound($Quadrat)-1 Step 1
    _GDIPlus_GraphicsDrawLine($Buffer, $Quadrat[$i][0], $Quadrat[$i][1], $Quadrat[$i][2], $Quadrat[$i][3], $hPen)
    _GDIPlus_GraphicsDrawLine($Buffer, $Quadrat[$i][2], $Quadrat[$i][3], $Quadrat[$i][4], $Quadrat[$i][5], $hPen)
    _GDIPlus_GraphicsDrawLine($Buffer, $Quadrat[$i][4], $Quadrat[$i][5], $Quadrat[$i][6], $Quadrat[$i][7], $hPen)
    _GDIPlus_GraphicsDrawLine($Buffer, $Quadrat[$i][6], $Quadrat[$i][7], $Quadrat[$i][0], $Quadrat[$i][1], $hPen)
    Next
    For $i = 0 To UBound($Strich)-1 Step 1
    _GDIPlus_GraphicsDrawLine($Buffer, $Strich[$i][0], $Strich[$i][1], $Strich[$i][2], $Strich[$i][3], $hPen)
    Next

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

    _GDIPlus_GraphicsDrawImageRect($hGraphic, $Bitmap,0,0, $width, $height)

    EndFunc

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

    Func _beenden ()

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

    _GDIPlus_GraphicsDispose ($hGraphic)
    _GDIPlus_BitmapDispose($Bitmap)
    _GDIPlus_GraphicsDispose($Buffer)
    _GDIPlus_PenDispose ($hPen)

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

    _GDIPlus_Shutdown ()

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

    Exit

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

    EndFunc

    [/autoit]

    Und hier noch meine Mathe UDF:

    Spoiler anzeigen
    [autoit]


    ; Moritz Mathe UDf

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

    Func _Punkte_Winkel($x1, $y1, $x2, $y2) ;Moritz Theorem ;)

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

    Local $winkel

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

    $winkel = ACos(($x2 - $x1) / Sqrt(($x2 - $x1) * ($x2 - $x1) + ($y2 - $y1) * ($y2 - $y1))) * $180_div_pi

    If $y2 > $y1 Then $winkel = -$winkel

    Return $winkel

    EndFunc ;==>Winkel zueinander

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

    Func _Punkte_Distance($x1, $y1, $x2, $y2) ;Pythagoras Theorem

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

    If $x2 = $x1 And $y2 = $y1 Then
    Return 0
    Else
    Local $a, $b, $c
    $a = $y2 - $y1
    $b = $x2 - $x1
    $c = Sqrt($a * $a + $b * $b)
    Return $c
    EndIf
    EndFunc ;==>Punkt Distance

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

    Func _Punkt_Linie($x,$y, $x1,$y1, $x2,$y2)

    Local $m1, $m2, $p[2]

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

    If $x1 = $x2 Then
    $p[0] = $x1
    $p[1] = $y
    ElseIf $y1 = $y2 Then
    $p[0] = $x
    $p[1] = $y1
    Else

    $m1 = ($y2 - $y1) / ($x2 - $x1)
    $m2 = -1 / $m1

    $p[0] = (-$m1*$x1 + $y1 - $y + $m2 * $x) / ($m2 -$m1)
    $p[1] = $m1 * ($p[0] - $x1) + $y1

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

    EndIf

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

    Return $p

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

    EndFunc ;==>Punkt zu Linie

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

    Func _Linien_Schnittpunkt($x1,$y1,$x2,$y2, $x3,$y3,$x4,$y4)

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

    Local $m1 = ($y2 - $y1) / ($x2 - $x1)
    Local $m2 = ($y4 - $y3) / ($x4 - $x3)

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

    If $m1 = $m2 Then Return 0; Es gibt keinen Schnittpunkt

    If $x1 = $x2 Then
    Local $punkt[2]

    $punkt[0] = $x1
    $punkt[1] = $m2 * ($punkt[0] - $x3) + $y3

    ; MsgBox(0,"",$punkt[0] & " - " & $punkt[1])

    Return $punkt
    EndIf
    If $x3 = $x4 Then
    Local $punkt[2]
    ; MsgBox(0,"","")
    $punkt[0] = $x3
    $punkt[1] = $m1 * ($punkt[0] - $x1) + $y1

    Return $punkt
    EndIf
    If $y1 = $y2 Then
    Local $punkt[2]
    $punkt[1] = $y1
    $punkt[0] = ($punkt[1] + $m2*$x3 - $y3) / $m2
    Return $punkt
    EndIf
    If $y3 = $y4 Then
    Local $punkt[2]
    $punkt[1] = $y3
    $punkt[0] = ($punkt[1] + $m1*$x1 - $y1) / $m1
    Return $punkt
    EndIf
    ;ToolTip($m1 & " | " & $m2)
    ;Sleep(1000)

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

    Local $punkt[2]
    $punkt[0] = ($m1*$x1 + $y3 - $y1 - $m2*$x3) / ($m1 - $m2)
    ; $punkt[0] = ($y3 + $m1*$y1 - $y1 - $m2*$x3) / ($m1 - $m2)
    ; $punkt[0] = (-$m1*$y1 - $y3 + $y1 + $m2*$x3) / ($m2 - $m1)
    $punkt[1] = $m1 * ($punkt[0] - $x1) + $y1

    Return $punkt

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

    EndFunc

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

    Func _punkte_zu_vektor($x1,$y1, $x2,$y2)

    Local $Vektor[2], $dist = _Punkte_Distance($x1, $y1, $x2, $y2)

    $Vektor[0] = ($x1-$x2) / $dist
    $Vektor[1] = ($y1-$y2) / $dist

    Return $Vektor

    EndFunc

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

    Func _Punkt_in_RechtEck($x,$y, $x1,$y1, $x2,$y2)

    If _zwischen($x, $x1,$x2) And _zwischen($y, $y1,$y2) Then
    Return True
    Else
    Return False
    EndIf

    EndFunc ;==>Prüft ob ein Punkt in einem Rechteck ist

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

    Func _Highest($var1,$var2)

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

    If $var1 > $var2 Then
    Return $var1
    Else
    Return $var2
    EndIf

    EndFunc ;==>Gibt die höhere Variable zurück

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

    Func _Lowest($var1,$var2)

    If $var1 < $var2 Then
    Return $var1
    Else
    Return $var2
    EndIf

    EndFunc ;==>Gibt die kleinere Variable zurück

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

    Func _zwischen($var,$var1,$var2)

    If $var >= _Lowest($var1,$var2) And $var <= _Highest($var1,$var2) Then
    Return True
    Else
    Return False
    EndIf

    EndFunc

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

    Func _Limit($var,$min,$max)
    If $var < $min Then
    Return $min
    ElseIf $var > $max Then
    Return $max
    Else
    Return $var
    EndIf
    EndFunc

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

    Func _Spiegelwinkel($eintrittswinkel,$Spiegel)

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

    Return Mod($spiegel + ($spiegel - $eintrittswinkel + 360),360)

    EndFunc ;==>Gibt die Spiegelung eines Winkel zurück

    [/autoit]

    Es wäre echt schön, wenn sich jemand bereit erklärt mir zu helfen :rolleyes:

  • Tower Defense A2D.udf A-Stern

    • moritz1243
    • 7. Januar 2010 um 14:24

    Irgendwie hast du ne alte Version von dem Spiel??? 8o

  • Tower Defense A2D.udf A-Stern

    • moritz1243
    • 6. Januar 2010 um 11:08

    Mmh das ist schlecht und eigentlich hatte ich das so gedacht, dass falls das passiert die bots wieder aus die spanwn position zurückgesetzt werden.

  • Tower Defense A2D.udf A-Stern

    • moritz1243
    • 30. Dezember 2009 um 12:13

    Entweder ist die udf falsch includiert oder aber du hast 64bit compilt

  • Mein Jump n' Run Spiel mit der Irrlich Engine - Neue Version!

    • moritz1243
    • 29. Dezember 2009 um 18:56

    Meinst du jetzt das mein Spiel die Level selber generieren sollte? Wenn ja ist das nicht ganz so einfach, wie du es gesagt hast, da das programm ja auch überprüfen muss ob das schafbar ist.

  • Kleines Rechenprogramm zeigt keine Nachkommastellen an

    • moritz1243
    • 28. Dezember 2009 um 22:43

    schreib mal vor die variablen Global und versuch dann nochmal

  • Mein Jump n' Run Spiel mit der Irrlich Engine - Neue Version!

    • moritz1243
    • 28. Dezember 2009 um 22:20

    Erstmal danke für deine gute Wertung :P das mit den hebebürnen ist so ne sache, da bei der kollision feste sachen in Vordergrund stehen so kann es sein, dass man manchmal in eine plattform reingedrückt wird - ich denke ich mache das man da stirbt, weil man zerquetscht wurde. An der Performance werde ich auch noch arbeiten, jedoch ist eine vorrausetzung dafür das die irrlicht udf verbessert wird, oder ich gucke mir das selbst mal an. das mit den unsichtbaren blöcken ist noch eine sehr gut idee ;) mal schauen was man da machen kann. Achja und das level ist so schwer, da ich mal zeigen wollte was man schon alles so tolles bei dem spiel machen kann.

    Wie findest du(Franzi)/ihr den Editor?

  • Mein Jump n' Run Spiel mit der Irrlich Engine - Neue Version!

    • moritz1243
    • 28. Dezember 2009 um 18:47

    So ich habe ich EXE mal hochgeladen ;) es kann auch sein das ihr versucht habt es 64bit zu kompilen das geht nämlich auch nicht

  • Mein Jump n' Run Spiel mit der Irrlich Engine - Neue Version!

    • moritz1243
    • 28. Dezember 2009 um 00:41

    testuren und so mit gimp, models mit milkshape ;)

  • Tower Defense A2D.udf A-Stern

    • moritz1243
    • 27. Dezember 2009 um 22:24

    So ich habe sie jetzt erneut hochgeladen ;)

  • Mein Jump n' Run Spiel mit der Irrlich Engine - Neue Version!

    • moritz1243
    • 27. Dezember 2009 um 17:21

    bei winrar ist wichtig beim öffnen von partitionierten datein die erste zu öffnen oder was meinst du?

  • Mein Jump n' Run Spiel mit der Irrlich Engine - Neue Version!

    • moritz1243
    • 27. Dezember 2009 um 17:05

    die a2d udf findest du auch so im englischen forum:-) und das tower defense spiele lade ich später nochmal hoch (bin grade am ipod on:-))

  • Mein Jump n' Run Spiel mit der Irrlich Engine - Neue Version!

    • moritz1243
    • 27. Dezember 2009 um 16:12

    Dafür empfehle ich dir nicht die irrlicht engine, das sie in der "Autoit Fassung" noch nicht viel bzw gar nichts 2D unterstützt, ich rate dir die A2D UDF zu nutzen die ist ideal dafür :-). Ein Beispiel ist meine Tower Defense Spiel ihr im Forum.

  • Mein Jump n' Run Spiel mit der Irrlich Engine - Neue Version!

    • moritz1243
    • 27. Dezember 2009 um 13:02

    NEUE VERSION!!!

  • Warum geht das Nicht - Hat Autoit fehler?

    • moritz1243
    • 25. November 2009 um 13:51

    Mach mal ein Beispiel mit Sinus und Cosinus. Ich bin auch mal gespannt ob irgentjemand hier im forum das problem findet.

  • Warum geht das Nicht - Hat Autoit fehler?

    • moritz1243
    • 25. November 2009 um 11:42

    Ja mit größer- und kleinergleich klappt es aber auch nur wenn die 1.Postion keine negativen werte enthält. Das Script ist teil meine projektes und dient dazu ein Objekt in Raum hin un her zu bewegen. Mein Problem bleibt jedoch weiterhin bestehend - Wo kommen die komischen Werte her, normaler weise müsste das script bei 0 wieder rauf zählen.

    Sind die Vektoren richtig berechnet???

  • Warum geht das Nicht - Hat Autoit fehler?

    • moritz1243
    • 24. November 2009 um 22:36

    Hallo,
    ich habe in diesem script einen fehler, der ziemlcih komisch ist. Das script müsste so wie ich die funktion konfiguriet habe bis 3 bzw 4 zählen und dann wieder bis 0 und so weiter aber es klappt nicht weil die variabln plötzlich extrem komische Wert annehmen

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <Misc.au3>

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

    Global $animator_array

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

    animator_add(0, 0, 0, 3, 4, 0, 2,True)

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

    While True
    zeichne_particle()
    ; MouseMove($animator_array[0][9],$animator_array[0][10],100)
    Sleep(500)
    If _IsPressed(01) Then _ArrayDisplay($animator_array)
    If _IsPressed(02) Then Exit
    ToolTip($animator_array[0][9] & @LF & $animator_array[0][10] & @LF & $animator_array[0][11])
    WEnd

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

    Exit

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

    Func animator_add($x, $y, $z, $tx, $ty, $tz, $speed, $circle)

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

    Local $ubound = UBound($animator_array)

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

    If IsArray($animator_array) Then
    ReDim $animator_array[$ubound + 1][13]
    Else
    Dim $animator_array[$ubound + 1][13]
    EndIf

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

    $animator_array[$ubound][0] = $x ; X Startpunkt
    $animator_array[$ubound][1] = $y ; Y Startpunkt
    $animator_array[$ubound][2] = $z ; Z Startpunkt
    $animator_array[$ubound][3] = $tx ; X Zielpunkt
    $animator_array[$ubound][4] = $ty ; Y Zielpunkt
    $animator_array[$ubound][5] = $tz ; Z Zielpunkt
    Local $distanz = Sqrt(($tx-$x)*($tx-$x) + ($ty-$y)*($ty-$y) + ($tz-$z)*($tz-$z)) ; Distanz
    $animator_array[$ubound][6] = ($tx - $x) / $distanz ;X Vector
    $animator_array[$ubound][7] = ($ty - $y) / $distanz ;Y Vector
    $animator_array[$ubound][8] = ($tz - $z) / $distanz ;Z Vector
    $animator_array[$ubound][9] = $x ; X Position
    $animator_array[$ubound][10] = $y ; Y Position
    $animator_array[$ubound][11] = $z ; Z Position
    $animator_array[$ubound][12] = $circle

    Return $ubound

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

    EndFunc

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

    Func zeichne_particle()

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

    For $i = 0 To UBound($animator_array) - 1 Step 1

    $animator_array[$i][9] += $animator_array[$i][6] ; X Bewegung
    $animator_array[$i][10] += $animator_array[$i][7] ; Y Bewegung
    $animator_array[$i][11] += $animator_array[$i][8] ; Z Bewegung
    If ($animator_array[$i][0] = $animator_array[$i][9]) Or ($animator_array[$i][3] = $animator_array[$i][9]) Then ; Wenn Start- oder Zielpunkt erreicht wurden.
    If $animator_array[$i][12] = False Then
    MsgBox(0,"","")
    particle_delete_effect($i)
    $i -= 1
    Else
    MsgBox(0,"","")
    $animator_array[$i][6] = -$animator_array[$i][6]
    $animator_array[$i][7] = -$animator_array[$i][7]
    $animator_array[$i][8] = -$animator_array[$i][8]
    EndIf
    EndIf

    Next

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

    EndFunc

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

    Func particle_delete_effect($num)
    _ArrayDelete($animator_array, $num)
    EndFunc

    [/autoit]

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™