Kann mich dem nur anschließen, es sieht echt nicht schlecht aus
.
Da hat Ubuntu aber was ins Rollen gebracht... ![]()
Beiträge von name22
-
-
Hier wird nicht geclosed, sondern das Präfix auf Gelöst gesetzt (Ersten Post bearbeiten) ;).
(Kannst sowieso nicht closen ohne Mod Rechte :P). -
Zitat
Edit: Lol, ich wusste gar nicht, dass ACos(-1) = π ist
Wusstest du, dass der ATan(1) * 4 = π ist?
-
Zitat
Wieso muss man den Arcus Tangens durch Arcus Cosinus -1 durch 180 rechnen?
Um von Radiant in Grad umzurechnen ;). (Für weitere Infos -> Wikipedia :D). -
Hier mal mein Ansatz
.Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$hWnd = GUICreate("Degree", 400, 400)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
[/autoit] [autoit][/autoit] [autoit]
$hBitmap = _GDIPlus_BitmapCreateFromGraphics(400, 400, $hGraphic)
$hBitmap_BG = _GDIPlus_BitmapCreateFromGraphics(400, 400, $hGraphic)
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
$hBuffer_BG = _GDIPlus_ImageGetGraphicsContext($hBitmap_BG)
_GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
_GDIPlus_GraphicsSetSmoothingMode($hBuffer_BG, 2)$hPenRed = _GDIPlus_PenCreate(0xFFFF0000, 2)
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsClear($hBuffer_BG, 0xFFFFFFFF)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawLine($hBuffer_BG, 0, 200, 400, 200)
_GDIPlus_GraphicsDrawLine($hBuffer_BG, 200, 0, 200, 400)
_GDIPlus_GraphicsFillEllipse($hBuffer_BG, 198, 198, 4, 4)GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
[/autoit] [autoit][/autoit] [autoit]
OnAutoItExitRegister("_Exit")While Sleep(15)
[/autoit] [autoit][/autoit] [autoit]
$aMousePos = GUIGetCursorInfo($hWnd)
$iAngle = Round(_GetLineDegreeX($aMousePos[0] - 200, $aMousePos[1] - 200), 2)
If $aMousePos[0] >= 200 Then $iAngle += 180
If $aMousePos[1] >= 200 And $aMousePos[0] <= 200 Then $iAngle += 360
_GDIPlus_GraphicsDrawImageRect($hBuffer, $hBitmap_BG, 0, 0, 400, 400)
_GDIPlus_GraphicsDrawLine($hBuffer, $aMousePos[0], $aMousePos[1], 200, 200, $hPenRed)
_GDIPlus_GraphicsDrawPie($hBuffer, 150, 150, 100, 100, -180, $iAngle, $hPenRed)
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 400, 400)
ToolTip($iAngle & "°")
WEndFunc _GetLineDegreeX($iX_Point, $iY_Point, $iFlag = 0)
[/autoit] [autoit][/autoit] [autoit]
If Not ($iX_Point Or $iY_Point) Then Return SetError(1, 0, 0)
Switch $iFlag
Case 0
Return ATan($iY_Point / $iX_Point) / (ACos(-1) / 180)
Case 1
Return 180 - Abs(ATan($iY_Point / $iX_Point) / (ACos(-1) / 180))
Case 2
Return 360 - Abs(ATan($iY_Point / $iX_Point) / (ACos(-1) / 180))
EndSwitch
EndFuncFunc _GetLineDegreeY($iX_Point, $iY_Point, $iFlag = 0)
[/autoit] [autoit][/autoit] [autoit]
If Not ($iX_Point Or $iY_Point) Then Return SetError(1, 0, 0)
Switch $iFlag
Case 0
Return Abs(ATan($iX_Point / $iY_Point) / (ACos(-1) / 180))
Case 1
Return 180 - Abs(ATan($iX_Point / $iY_Point) / (ACos(-1) / 180))
Case 2
Return 360 - Abs(ATan($iX_Point / $iY_Point) / (ACos(-1) / 180))
EndSwitch
EndFuncFunc _Exit()
[/autoit]
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_GraphicsDispose($hBuffer)
_GDIPlus_GraphicsDispose($hBuffer_BG)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_BitmapDispose($hBitmap_BG)
_GDIPlus_PenDispose($hPenRed)
_GDIPlus_Shutdown()
Exit
EndFunc -
Zitat
in welchem grad system rechnet autoit eigentlich?
Wie meinst du das?Hab das Beispiel in meinem vorherigen Post nochmal überarbeitet.

-
Man lernt nie aus :D. Danke Oscar den Stil kannte ich noch gar nicht.
Zitatdenn es kommt entweder 0 "False" oder eben der mit BitAnd verknüpfte Wert heraus, was AutoIt als "True" interpretiert.
[autoit]
Bei BitAND steht die 0 dann aber nicht für "False" im Sinne von falsch sondern für:BitAND(2,
[/autoit]
0010 = 2
1000 = 8
0000 = 0Anderes Beispiel:
[autoit]BitAND(10,
[/autoit]
1010 = 10
1000 = 8
1000 = 10 -
Ich hab mal eben ein paar Funktionen dafür gebastelt, ich hoffe sie helfen dir weiter...
Spoiler anzeigen
[autoit]MsgBox(0,"",_GetLineDegreeX(5, 5, 1))
[/autoit] [autoit][/autoit] [autoit]Func _GetLineDegreeX($iX_Point, $iY_Point, $iFlag = 0)
[/autoit] [autoit][/autoit] [autoit]
If Not ($iX_Point Or $iY_Point) Then Return SetError(1, 0, -1)
Switch $iFlag
Case 0
Return Abs(ATan($iY_Point / $iX_Point) / (ACos(-1) / 180))
Case 1
Return 360 - Abs(ATan($iY_Point / $iX_Point) / (ACos(-1) / 180))
EndSwitch
EndFuncFunc _GetLineDegreeY($iX_Point, $iY_Point, $iFlag = 0)
[/autoit]
If Not ($iX_Point Or $iY_Point) Then Return SetError(1, 0, -1)
Switch $iFlag
Case 0
Return Abs(ATan($iX_Point / $iY_Point) / (ACos(-1) / 180))
Case 1
Return 360 - Abs(ATan($iX_Point / $iY_Point) / (ACos(-1) / 180))
EndSwitch
EndFunc
Hier noch mal überarbeitet und mit besserem Beispiel:Spoiler anzeigen
[autoit]While Sleep(100)
[/autoit] [autoit][/autoit] [autoit]
$aMousePos = MouseGetPos()
ToolTip(Round(_GetLineDegreeX($aMousePos[0], $aMousePos[1], 1), 2) & "°", @DesktopWidth, @DesktopHeight, "", "", 4)
WEndFunc _GetLineDegreeX($iX_Point, $iY_Point, $iFlag = 0)
[/autoit] [autoit][/autoit] [autoit]
If Not ($iX_Point Or $iY_Point) Then Return SetError(1, 0, 0)
Switch $iFlag
Case 0
Return Abs(ATan($iY_Point / $iX_Point) / (ACos(-1) / 180))
Case 1
Return 180 - Abs(ATan($iY_Point / $iX_Point) / (ACos(-1) / 180))
Case 2
Return 360 - Abs(ATan($iY_Point / $iX_Point) / (ACos(-1) / 180))
EndSwitch
EndFuncFunc _GetLineDegreeY($iX_Point, $iY_Point, $iFlag = 0)
[/autoit]
If Not ($iX_Point Or $iY_Point) Then Return SetError(1, 0, 0)
Switch $iFlag
Case 0
Return Abs(ATan($iX_Point / $iY_Point) / (ACos(-1) / 180))
Case 1
Return 180 - Abs(ATan($iX_Point / $iY_Point) / (ACos(-1) / 180))
Case 2
Return 360 - Abs(ATan($iX_Point / $iY_Point) / (ACos(-1) / 180))
EndSwitch
EndFunc -
Ich meine du sollst eine Bitmap erstellen und da am Anfang alles hineinzeichnen was sich nicht bewegt ;).
Dann muss in jedem Durchgang viel weniger neu gezeichnet werden, weil du einfach die Bitmap in den Buffer zeichnen kannst. -
[autoit]
If BitAnd(GUICtrlRead($Checkbox1),$GUI_CHECKED) THen
[/autoit]
; Wenn die Checkbox angekreuzt ist führt er den Code aus
; ### Code ###
EndIf
Erstens gibt BitAnd nicht nur True oder False zurück (also ist die Abfrage schwachsinnig), zweitens gibt GUICtrlRead bei einer Checkbox nur zwei Werte zurück ($GUI_CHECKED und $GUI_UNCHECKED), da keine kombinierten States zurückgegeben werden z.B. $GUI_CHECKED + $GUI_UNCHECKED wird BitAND nicht benötigt.
Das hier reicht völlig aus:Spoiler anzeigen
[autoit]If GUICtrlRead($Check1) = $GUI_CHECKED Then
[/autoit]
MsgBox(0,"","Checkbox aktiv")
Else
MsgBox(0,"","Checkbox inaktiv")
EndIf -
Zitat
Noch eine Frage zum Schluss, hat jemand eine bessere Idee, wie ich die Welt noch zeichnen könnte? (So wie es jetzt ist, dauert es 25 ms pro Durchlauf)
Mach doch eine extra Bitmap für die Welt und den Hintergrund und zeichne einfach diese Bitmap immer wieder in denn Backbuffer. (Ersetzt _GDIPlus_GraphicClear).
Wenn man zu viele grüne Teilchen isst sinkt die Anzahl der Schlangenteile auf 0 und AutoIt meldet einen Error. -
Kann es daran liegen, dass du $split versehentlich 2 Mal verwendest? Das sieht nämlich nicht so ganz richtig aus...

-
Versuch mal
[autoit]ControlFocus
[/autoit];).
-
Wow sieht echt prima aus, ich weiß zwar nicht wofür die Hälfte der Anzeigen gut ist aber es sieht wirklich gut aus :D.
-
Zitat
Hat denn da keiner eine Lösung?
Musst du schon nach einer knappen Stunde pushen?
-
So ungefähr?
Spoiler anzeigen
[autoit]#include <String.au3>
[/autoit] [autoit][/autoit] [autoit]$sReplace = 'Test'
[/autoit]
$sHTML_Source = '<a href="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" target=_blank><img src="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" border="0" style="margin: 1px;" ></a>'
$aHREF = _StringBetween($sHTML_Source, '<a href="', '"')
If $aHREF <> 0 Then MsgBox(0,"",StringReplace($sHTML_Source, $aHREF[0], $sReplace)) -
Ich glaube du hast FileOpen und FileRead noch nicht so ganz verstanden....
Spoiler anzeigen
[autoit]$fileread1 = FileOpen(@Scriptdir&"\cache\1.txt",0)
[/autoit]
$fileread2 = FileOpen(@Scriptdir&"\cache\2.txt",0)
$fileread3 = FileOpen(@Scriptdir&"\cache\3.txt",0)
$fileread4 = FileOpen(@Scriptdir&"\cache\4.txt",0)
GUICtrlSetData($input1,FileRead(@Scriptdir&"\cache\1.txt"))
GUICtrlSetData($input2,FileRead(@Scriptdir&"\cache\2.txt"))
GUICtrlSetData($input3,FileRead(@Scriptdir&"\cache\3.txt"))
GUICtrlSetData($input4,FileRead(@Scriptdir&"\cache\4.txt"))
Und wozu benötigst du FileCreate? Wenn du eine Datei die nicht existiert mit FileOpen in einem Schreibmodus öffnest wird sie erstellt... -
Ja das geht und über Google findest du sogar ein paar Tools dafür, aber du brauchst eine kompatible WLAN Karte und kannst dich mit dem Laptop auch nicht mehr mit einem anderen Router verbinden glaube ich... Du müsstest also eine LAN Verbindung zu deinem Router haben oder so... Du kannst aber auch gleich einen dieser komischen Nintendo Wi-Fi USB Sticks kaufen.
-
Nach einem Neustart? Dann müsste aber der Download wieder aufgenommen werden und könnte nicht einfach in der Mitte fortgesetzt werden...
Die Internetverbindung wäre ja dann für kurze Zeit weg. -