Ich hab das schon erlebt bei mir in der 8 (beim Wahlpflichtunterricht).
Da war eine die daheim keinen Computer hatte. Ihre Eltern waren der Meinung das sei schädlich für die Kindheit (villeicht hatten sie Recht ?).
Sie hat eindeutig die größten Fortschritte von allen gemacht und dafür als einzige eine 1 im Zeugnis erhalten. Diese Notengebung kann ich gut nachvollziehen.
Beiträge von Mars
-
-
Was bei euch machen die in Info sogar Excel?!
Also wir haben das ganze jahr lang Word und Powerpoint gemacht, alles andere wäre zu schwierig gewesen...
Info ist bei uns echtIn welcher Klasse seid ihr eigentlich alle ?
Ich habe von meiner Informatikerfahrung der 11 bis 13 berichtet.
Das wird man sicherlich nicht im WPF (Wahlpflichtfach) in der 6 oder 8 machen. (gab es bei uns damals in diesen Klassen)
Damals habe ich auch den Umgang mit Word und Powerpoint "gelernt" -
Wenn ich als Informatiklehrer meinen Schülern etwas beibringen will ist es von Vorteil, wenn das was ich ihnen beibringen will Teil meines Studiums als Lehrer war. (Klar, auf den Pädagogikteil hat es keine Auswirkung, aber der Fachspezifische Teil ist dann zwangsläufig 30 Jahre alt wenn man mit 25 Studiert und mit 55 noch Info unterrichtet.). Fortbildungen sind zwar schön und gut, aber später lernt es sich immer schlechter als in Jungen jahren. Wenn der Lehrer das was er den Schülern Zeigt also erst relativ spät selbst gelernt hat kann er es nicht so gut vermitteln wie etwas womit er aufgewachsen ist.
-
Das größte Problem in Info sehe ich in den "zu alten" Lehrern.
Meiner war glaube ich 55. Als er selbst in der Schule war gab es dieses Fach noch garnicht. Als er in der Uni war steckte alles noch in den Kinderschuhen. Und Java (was er so toll fand) gibt es erst knapp 15 Jahre. (als davon die ersten Versionen erschienen war er schon 40 und mit dem Studium lange fertig).
Ich habe nichts gegen "ältere" Programmierer. Das sind die von denen man am meisten Lernen kann. Aber eben nur wenn sie bereit sind auch mal Fehler einzugestehen. (Hier im Forum gibt es ja auch einige ältere Personen die ordentlich was auf dem Kasten haben.)Im Gegensatz dazu stand die "Informatik AG" die ich besucht habe. Die hatte nur 5 Mitglieder (Schüler) und einen frisch gebackenen Lehrer (der grade mal 6 Jahre älter war als wir selbst ).
Er hat unsere Probleme verstanden und uns in den geheimen Künsten geschult
(Er hatte auch einen Arduino (oder wie das heißt) und hat damit immer interessante Sachen angestellt).
Er hat die Sprache "Ocaml" vergöttert. Damit habe ich mich aber bisher noch nicht wirklich auseinandergesetzt... -
Du darfst Dir die Informatik der Schule nicht so zu Herzen nehmen.
Ich habe selbst "gelernt", dass zwischen Schule und Anwendung in ASM/AutoIt/C++ ein extremer Unterschied ist.Mein Infolehrer mochte mich nicht, weil ich ihm zu viel wusste. Daher hat er immer versucht irgendwas zu finden was mir eventuell nichts sagt nur um mir zu zeigen, dass ich nicht besser bin als der Rest des Kurses. Daher verlor ich nach einiger Zeit die Interesse und wurde ein Mittelfeldschüler (Arbeiten immer im 1er bereich, Mündlich dafür 3-4).
Dann musst du Dir vor Augen führen was Informatik in der Schule ist:
Bei mir war das am Anfang viel Theorie (Prozessoraufbau, Logikgatter, Variablentypen, Umrechnungen von Bin/Hex/Dec usw) und später HTML.
Zum "Programmieren" kam es bei uns kaum oder nie. Daher haben die ganzen Logischen Grundlagen (die absolut nichts mit HTML zu tun haben) dem Kurs auch nichts gebracht.Als ich meinen Lehrer gefragt habe, weshalb wir eigentlich solchen trockenen Stoff machen und zweitklassiges Webseitengestalten lernen (was wir ein ganzes volles Jahr lang gemacht haben und danch konnte es (incl mir) Niemand (mehr^^)), verwies er auf den doch relativ offenen Lehrplan. AutoIt wurde als "vollkommen wertlose Skriptsprache" abgetan und nicht weiter beachtet. Programme die ich ihm gezeigt habe um zu beweisen, dass ich mich in der Matiere zumindest teilweise auskenne wurden als "billige Skripte" degradiert und ich selbst als Hochstapler bezeichnet, weil ich ihm "Skripte" als Programme aushändige was ja nunmal eindeutig nicht das gleiche ist.
Nach den Grundlagen + HTML haben wir in Java Programmiert. Dabei belief es sich auf Konsolenanwendungen die einstellige Additionen lösen. Das klappte nur bei ca. 50%. Der Rest hat das umständliche vorkompillieren und Ausführen nicht hinbekommen. (ich habe noch nie so viele Errors gesehen bei einem 10 Zeilen Programm, wie in Java. min. 30 Stück. unglaublich)
Im Nachhinein muss ich sagen: Hätte ich mich einfach wie der durchschnittliche dumme Schüler benommen wäre überhaupt nichts schiefgegangen.
-
Per Struct ist das sicherlich möglich.
Was brauchst du denn alles an Funktionalität ? -
Nimm mal die version aus dem ersten Post (die 2te, nicht die alte).
Ich konnte den Fehler rekonstruieren, wenn ich das Skript auf "Stop" habe.
Dann wird nicht neu gezeichnet beim Wiederherstellen (kann man aber leicht einbauen).
Ist auch schon geschehen. Teste mal obs jetzt klappt. -
Korrekt, das ist das normale Verhalten, wenn mit GDI oder WinAPI-Befehlen gezeichnet wird.
Das passiert aber normalerweise nur, sofern kein Puffer genutzt wird.
In meinen Versionen wird auf jeden Fall einer benutzt. -
Lasst euch feiern.
Ihr ollen -
Bei mir verändert sich bis 7 nichts, und dann gehts aprupt viel zu schnell.
In ner Halben Stunde hab ich ne aktualisierte Version. (von meiner Version).
Die gibts dann für die Allgemeinheit.
Dann ist für mich aber echt schluss mit dem Thema^^ -
Das sieht doch schonmal sehr gut aus.
Leider funktioniert das "Skip Frame" nicht richtig. -
Die ist schon klar, dass es ein schönes Lpeicherleck gibt wenn man andauernd Brushes erzeugt ?
Erzeuge EINE Brush und verändere anschließend nur noch die Farbe.Edit: am Tempo sieht man schön den Unterschied zwischen GDI+ und GDI.
Die Version von Hauke ist mindestens 5Mal langsamer. -
Da lässt sich ja mehr mit anstellen als ich zunächst befürchtet habe...^^
Habe aber schon wieder etwas anderes am Start. Deshalb gehts hier nicht weiter.
(von meiner Seite. Wer basteln will dem sei es erlaubt.) -
Alter Inhalt
Moin,
Ich habe eben folgendes auf Wikipedia gefunden: Klick Mich
Das klang so einfach, dass man es direkt umsetzen musste.
Da nicht viel Interpretationsfreiraum war gibts nur 2 Optionen.
- Zoom (Um welchen Faktor soll das Bild für die anzeige verfrößert werden)
- FrameSkip (Wie viele Schritte sollten gemacht werden, bis gezeichnet wird. Min=1)Normalerweise fängt die maschine irgendwann an eine Schräge linie zu zeichnen.
Da das aber zu langweilig war gilt das Prinzip: Links rein, Rechts raus (auch für Oben und Unten).Skript
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>Opt('GUIOnEventMode', 1)
[/autoit] [autoit][/autoit] [autoit]; Vergrößerungsfaktor
[/autoit] [autoit][/autoit] [autoit]
Global Const $iZoom = 5; Es wird alle X Schritte gezeichnet und 10ms gewartet.
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global Const $iFrameSkip = 2; #### Skript:
[/autoit] [autoit][/autoit] [autoit]
Global $iW = 129, $iH = 129
Global $hGUI = GUICreate('Ameise', $iW*$iZoom, $iH*$iZoom)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]Global $hDLL_GDI32 = DllOpen('GDI32.dll')
[/autoit] [autoit][/autoit] [autoit]
Global $hDC = _WinAPI_GetDC($hGUI)
Global $hBUF = _Image_Create($iW, $iH)
Global $hDC_Buf = DllStructGetData($hBUF, 1, 1)
Global $hGFX = _GDIPlus_GraphicsCreateFromHDC($hDC_Buf)
Global $vStruct = DllStructCreate('int[' & $iW * $iH & ']', DllStructGetData($hBUF, 1, 4))_GDIPlus_GraphicsClear($hGFX, 0xFFFFFFFF)
[/autoit] [autoit][/autoit] [autoit]Global $x = 64, $y = 64, $r = 3
[/autoit] [autoit][/autoit] [autoit]
; LORUGUIRegisterMsg(0xF, 'WM_PAINT')
[/autoit] [autoit][/autoit] [autoit]
OnAutoItExitRegister('_Freigeben')
GUISetOnEvent(-3, '_Event')
GUISetState(@SW_SHOW, $hGUI)While Sleep(10)
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To $iFrameSkip Step 1
If _GetPx() = -1 Then ; Weiß
_SetPx(0xFF000000)
$r += 1
Else
_SetPx(0xFFFFFFFF)
$r -= 1
EndIf
If $r > 3 Then $r -= 4
If $r < 0 Then $r += 4
Switch $r
Case 0
$x -= 1
Case 1
$y -= 1
Case 2
$x += 1
Case 3
$y += 1
EndSwitch
If $x = $iW Then $x = 0
If $x < 0 Then $x = $iW-1
If $y = $iH Then $y = 0
If $y < 0 Then $y = $iH-1
Next
WM_PAINT()
WEndFunc _SetPx($iCol)
[/autoit] [autoit][/autoit] [autoit]
If $x+1+$y*$iW > $iW*$iH Then Return ToolTip('Error: Zeichnen außerhalb des Bildes.')
DllStructSetData($vStruct, 1, $iCol, $x+1+$y*$iW)
EndFuncFunc _GetPx()
[/autoit] [autoit][/autoit] [autoit]
Return DllStructGetData($vStruct, 1, $x+1+$y*$iW)
EndFuncFunc WM_PAINT()
[/autoit] [autoit][/autoit] [autoit]
DllCall($hDLL_GDI32, 'int', 'StretchBlt', 'hwnd', $hDC, 'int', 0, 'int', 0, 'int', $iW * $iZoom, 'int', $iH * $iZoom, 'hwnd', $hDC_Buf, 'int', 0, 'int', 0, 'int', $iW, 'int', $iH, 'dword', 0xCC0020)
EndFuncFunc _Event()
[/autoit] [autoit][/autoit] [autoit]
Switch @GUI_CtrlId
Case -3
Exit
EndSwitch
EndFuncFunc _Freigeben()
[/autoit] [autoit][/autoit] [autoit]
_Image_Delete($hBUF)
_GDIPlus_GraphicsDispose($hGFX)
_GDIPlus_Shutdown()
DllClose($hDLL_GDI32)
EndFuncFunc _Image_Create($iW, $iH)
[/autoit] [autoit][/autoit] [autoit]
Local $Ptr, $hDC, $hBmp, $tBMI, $aDIB, $vStruct
$hDC = _WinAPI_CreateCompatibleDC(0)
$tBMI = DllStructCreate($tagBITMAPINFO)
DllStructSetData($tBMI, "Size", DllStructGetSize($tBMI) - 4)
DllStructSetData($tBMI, "Width", $iW)
DllStructSetData($tBMI, "Height", -$iH)
DllStructSetData($tBMI, "Planes", 1)
DllStructSetData($tBMI, "BitCount", 32)
$aDIB = DllCall($hDLL_GDI32, 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBMI), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'uint', 0)
$hBmp = $aDIB[0]
$Ptr = $aDIB[4]
_WinAPI_SelectObject($hDC, $hBmp)
$vStruct = DllStructCreate('int[5]')
DllStructSetData($vStruct, 1, $hDC, 1)
DllStructSetData($vStruct, 1, $iW, 2)
DllStructSetData($vStruct, 1, $iH, 3)
DllStructSetData($vStruct, 1, $Ptr, 4)
DllStructSetData($vStruct, 1, $hBmp, 5)
Return $vStruct
EndFunc ;==>_Image_CreateFunc _Image_Delete(ByRef $vStruct)
[/autoit]
_WinAPI_DeleteObject(DllStructGetData($vStruct, 1, 5))
_WinAPI_DeleteDC(DllStructGetData($vStruct, 1, 1))
$vStruct = 0
EndFunc ;==>_Image_Delete
.
.
Edit: Künstlerischer Freiraum: Version mit 4 Farben und variabler Auflösung.Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>Opt('GUIOnEventMode', 1)
[/autoit] [autoit][/autoit] [autoit]; Vergrößerungsfaktor
[/autoit] [autoit][/autoit] [autoit]
Global Const $iZoom = 4; Es wird alle X Schritte gezeichnet und 10ms gewartet.
[/autoit] [autoit][/autoit] [autoit]
Global Const $iFrameSkip = 2; Auflösung anpassen (iW=iH)
[/autoit] [autoit][/autoit] [autoit]
Global Const $iAufloesung = 178; #### Skript:
[/autoit] [autoit][/autoit] [autoit]
Global $iW = $iAufloesung, $iH = $iAufloesung
Global $hGUI = GUICreate('Ameise', $iW*$iZoom, $iH*$iZoom)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]Global $hDLL_GDI32 = DllOpen('GDI32.dll')
[/autoit] [autoit][/autoit] [autoit]
Global $hDC = _WinAPI_GetDC($hGUI)
Global $hBUF = _Image_Create($iW, $iH)
Global $hDC_Buf = DllStructGetData($hBUF, 1, 1)
Global $hGFX = _GDIPlus_GraphicsCreateFromHDC($hDC_Buf)
Global $vStruct = DllStructCreate('int[' & $iW * $iH & ']', DllStructGetData($hBUF, 1, 4))_GDIPlus_GraphicsClear($hGFX, 0xFFFFFFFF)
[/autoit] [autoit][/autoit] [autoit]Global $aCol[4] = [0xFF000000, 0xFFFF8040, 0xFF4080FF, 0xFFFFFFFF]
[/autoit] [autoit][/autoit] [autoit]Global $x = Int($iW/2), $y = Int($iH/2), $r = 3
[/autoit] [autoit][/autoit] [autoit]
; LORUGUIRegisterMsg(0xF, 'WM_PAINT')
[/autoit] [autoit][/autoit] [autoit]
OnAutoItExitRegister('_Freigeben')
GUISetOnEvent(-3, '_Event')
GUISetState(@SW_SHOW, $hGUI)While Sleep(10)
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To $iFrameSkip Step 1
Switch _GetPx()
Case $aCol[0]
$r += 1
_SetPx($aCol[1])
Case $aCol[1]
$r += 2
_SetPx($aCol[2])
Case $aCol[2]
$r += 3
_SetPx($aCol[3])
Case $aCol[3]
$r += 4
_SetPx($aCol[0])
EndSwitch
;~ If _GetPx() = -1 Then ; Weiß
;~ _SetPx(0xFF000000)
;~ $r += 1
;~ Else
;~ _SetPx(0xFFFFFFFF)
;~ $r -= 1
;~ EndIf
If $r > 3 Then $r -= 4
If $r < 0 Then $r += 4
Switch $r
Case 0
$x -= 1
Case 1
$y -= 1
Case 2
$x += 1
Case 3
$y += 1
EndSwitch
If $x = $iW Then $x = 0
If $x < 0 Then $x = $iW-1
If $y = $iH Then $y = 0
If $y < 0 Then $y = $iH-1
Next
WM_PAINT()
WEndFunc _SetPx($iCol)
[/autoit] [autoit][/autoit] [autoit]
If $x+1+$y*$iW > $iW*$iH Then Return ToolTip('Error: Zeichnen außerhalb des Bildes.')
DllStructSetData($vStruct, 1, $iCol, $x+1+$y*$iW)
EndFuncFunc _GetPx()
[/autoit] [autoit][/autoit] [autoit]
Return DllStructGetData($vStruct, 1, $x+1+$y*$iW)
EndFuncFunc WM_PAINT()
[/autoit] [autoit][/autoit] [autoit]
DllCall($hDLL_GDI32, 'int', 'StretchBlt', 'hwnd', $hDC, 'int', 0, 'int', 0, 'int', $iW * $iZoom, 'int', $iH * $iZoom, 'hwnd', $hDC_Buf, 'int', 0, 'int', 0, 'int', $iW, 'int', $iH, 'dword', 0xCC0020)
EndFuncFunc _Event()
[/autoit] [autoit][/autoit] [autoit]
Switch @GUI_CtrlId
Case -3
Exit
EndSwitch
EndFuncFunc _Freigeben()
[/autoit] [autoit][/autoit] [autoit]
_Image_Delete($hBUF)
_GDIPlus_GraphicsDispose($hGFX)
_GDIPlus_Shutdown()
DllClose($hDLL_GDI32)
EndFuncFunc _Image_Create($iW, $iH)
[/autoit] [autoit][/autoit] [autoit]
Local $Ptr, $hDC, $hBmp, $tBMI, $aDIB, $vStruct
$hDC = _WinAPI_CreateCompatibleDC(0)
$tBMI = DllStructCreate($tagBITMAPINFO)
DllStructSetData($tBMI, "Size", DllStructGetSize($tBMI) - 4)
DllStructSetData($tBMI, "Width", $iW)
DllStructSetData($tBMI, "Height", -$iH)
DllStructSetData($tBMI, "Planes", 1)
DllStructSetData($tBMI, "BitCount", 32)
$aDIB = DllCall($hDLL_GDI32, 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBMI), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'uint', 0)
$hBmp = $aDIB[0]
$Ptr = $aDIB[4]
_WinAPI_SelectObject($hDC, $hBmp)
$vStruct = DllStructCreate('int[5]')
DllStructSetData($vStruct, 1, $hDC, 1)
DllStructSetData($vStruct, 1, $iW, 2)
DllStructSetData($vStruct, 1, $iH, 3)
DllStructSetData($vStruct, 1, $Ptr, 4)
DllStructSetData($vStruct, 1, $hBmp, 5)
Return $vStruct
EndFunc ;==>_Image_CreateFunc _Image_Delete(ByRef $vStruct)
[/autoit]
_WinAPI_DeleteObject(DllStructGetData($vStruct, 1, 5))
_WinAPI_DeleteDC(DllStructGetData($vStruct, 1, 1))
$vStruct = 0
EndFunc ;==>_Image_Delete
.
.Inzwischen hatte ich etwas Zeit und habe eine "Finale Version" der Ameisenlaufmaschine gemacht.
Für Erweiterungsideen bin ich natürlich trotz "final" immer zu haben.Funktionen:
- Frameskip (1 bis 2000) - Muss man sich selbst aussuchen. ca. 100 ist finde ich optimal zum testen.
- Anzahl Farben frei wählbar (2 bis 16)
- Freie Einstellmöglichkeit ob Links oder Recht gelaufen werden soll
- Start/Stop/Reset Möglichkeit
- Export und Import von Einstellungen via Rechtsklickmenu
- Zufällige EinstellungenExportierte Daten haben das Format : #71110000100000000# <- Sieht cool aus
Die # davor und danach sind unwichtig. Das ist nur, damit man es besser kopieren kann.Ameise 1.01
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>Opt('GUIOnEventMode', 1)
[/autoit] [autoit][/autoit] [autoit]; Der Faktor muss 640 ergeben.
[/autoit] [autoit][/autoit] [autoit]
Global $iAufloesung = 160
Global $iZoom = 4; #### Skript:
[/autoit] [autoit][/autoit] [autoit]
Global $iW = $iAufloesung, $iH = $iAufloesung
Global $hGUI = GUICreate('Ameise 1.01', $iW * $iZoom + 150, $iH * $iZoom + 19)
Global $x, $y, $r, $c, $bRun, $iFrames, $iT, $iFrameSkip, $iMaxCol;~ #91011111100000000#
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]Global $hDLL_GDI32 = DllOpen('GDI32.dll')
[/autoit] [autoit][/autoit] [autoit]
Global $hDC = _WinAPI_GetDC($hGUI)
Global $hBUF = _Image_Create($iW, $iH)
Global $hDC_Buf = DllStructGetData($hBUF, 1, 1)
Global $hGFX = _GDIPlus_GraphicsCreateFromHDC($hDC_Buf)
Global $vStruct = DllStructCreate('int[' & $iW * $iH & ']', DllStructGetData($hBUF, 1, 4))GUICtrlCreateLabel('Frame Skip:', $iW * $iZoom + 10, 20, 140, 17)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetFont(-1, 13, 500, 0, 'Arial', 5)
Global $hInput_FrameSkip = GUICtrlCreateInput('5', $iW * $iZoom + 10, 40, 130, 25)
GUICtrlSetFont(-1, 13, 500, 0, 'Arial', 5)
GUICtrlCreateUpdown(-1)
GUICtrlSetLimit(-1, 2000, 1)
GUICtrlSetOnEvent(-1, '_Event')GUICtrlCreateLabel('Anzahl Farben:', $iW * $iZoom + 10, 80, 140, 17)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetFont(-1, 13, 500, 0, 'Arial', 5)
Global $hInput_MaxCol = GUICtrlCreateInput('2', $iW * $iZoom + 10, 100, 130, 25)
GUICtrlSetFont(-1, 13, 500, 0, 'Arial', 5)
GUICtrlCreateUpdown(-1)
GUICtrlSetLimit(-1, 16, 2)
GUICtrlSetOnEvent(-1, '_Event')Global $hBtn_Run = GUICtrlCreateButton('Start', $iW * $iZoom + 10, $iH * $iZoom - 90, 130, 35)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetFont(-1, 13, 500, 0, 'Arial', 5)
GUICtrlSetOnEvent(-1, '_Event')Global $hBtn_Reset = GUICtrlCreateButton('Reset', $iW * $iZoom + 10, $iH * $iZoom - 50, 130, 35)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetFont(-1, 13, 500, 0, 'Arial', 5)
GUICtrlSetOnEvent(-1, '_Event')GUICtrlCreateLabel('', 0, $iH * $iZoom, $iW * $iZoom + 150, 1)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor(-1, 0x606060)GUICtrlCreateLabel('', 0, $iH * $iZoom+1, $iW * $iZoom + 150, 1)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor(-1, 0xA0A0A0)GUICtrlCreateLabel('', $iW*$iZoom, 0, 1, $iH*$iZoom)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor(-1, 0x606060)Global $hLabel_Status = GUICtrlCreateLabel('', 0, $iH * $iZoom + 2, $iW * $iZoom + 150, 17)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor(-1, 0xA0A0A0)
GUICtrlSetFont(-1, 10, 500, 0, 'Arial', 5)Global $aCol[16] = [0xFFFFFFFF, 0xFF000000, 0xFFFF0000, 0xFF00FF00, 0xFFFFFF00, 0xFF0000FF, 0xFFFF00FF, 0xFF00FFFF, 0xFFC0C0C0, 0xFF808080, 0xFF800000, 0xFF008000, 0xFF808000, 0xFF000080, 0xFF800080, 0xFF008080]
[/autoit] [autoit][/autoit] [autoit]
Global $aRichtung[16] = [-1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1]
Global $iDummy = GUICtrlCreateDummy()For $i = 0 To 15 Step 1
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateButton('', $iW * $iZoom + 28 + 50 * ($i > 7), 140 + $i * 50 - 50 * 8 * ($i > 7), 45, 45)
GUICtrlSetBkColor(-1, '0x' & StringRight(Hex($aCol[$i], 8), 6))
GUICtrlSetFont(-1, 13, 500, 0, 'Arial', 5)
If $i = 1 Or $i > 9 Then GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetOnEvent(-1, '_Event')
NextFor $i = 0 To 15 Step 1
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel($i+1, $iW * $iZoom + 5 + 122 * ($i > 7), 155 + $i * 50 - 50 * 8 * ($i > 7), 16, 16,0 + 2*($i<8))
GUICtrlSetFont(-1, 10, 500, 0, 'Arial', 5)
NextGlobal $hMenu = GUICtrlCreateContextMenu()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateMenuItem('Zufall', $hMenu)
GUICtrlSetOnEvent(-1, '_Zufall')GUICtrlCreateMenuItem('Importieren', $hMenu)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetOnEvent(-1, '_Import')GUICtrlCreateMenuItem('Exportieren', $hMenu)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetOnEvent(-1, '_Export');~ Global $hMenu_Aufloesung = GUICtrlCreateMenu('Auflösung Ändern', $hMenu)
[/autoit] [autoit][/autoit] [autoit]
;~ GUICtrlCreateMenuItem('80x80 px', $hMenu_Aufloesung);~ GUICtrlCreateMenuItem('128x128 px', $hMenu_Aufloesung)
[/autoit] [autoit][/autoit] [autoit];~ GUICtrlCreateMenuItem('160x160 px', $hMenu_Aufloesung)
[/autoit] [autoit][/autoit] [autoit];~ GUICtrlCreateMenuItem('320x320 px', $hMenu_Aufloesung)
[/autoit] [autoit][/autoit] [autoit];~ GUICtrlCreateMenuItem('640x640 px', $hMenu_Aufloesung)
[/autoit] [autoit][/autoit] [autoit]Global $bReset2 = False, $bRun2 = False
[/autoit] [autoit][/autoit] [autoit]_Reset()
[/autoit] [autoit][/autoit] [autoit]GUIRegisterMsg(0xF, 'WM_PAINT') ; Neu Zeichnen
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent(-5, 'WM_PAINT') ; Restore
OnAutoItExitRegister('_Freigeben')
GUISetOnEvent(-3, '_Event')GUISetState(@SW_SHOW, $hGUI)
[/autoit] [autoit][/autoit] [autoit]While Sleep(10)
[/autoit] [autoit][/autoit] [autoit]
While Not $bRun
If $bReset2 Then
_Reset()
$bReset2 = False
$bRun = $bRun2
If $bRun Then
GUICtrlSetData($hBtn_Run, 'Stop')
Else
GUICtrlSetData($hBtn_Run, 'Start')
EndIf
EndIf
Sleep(10)
WEnd
For $i = 1 To $iFrameSkip Step 1
$c = _GetPx()
$c = _Index()
If Not $c Then
;~ _Tip(''
;~ _Tip('Error: Unbekannte Farbe aufgetaucht. Reset wurde durchgeführt.')
_Reset()
$bRun = True
ExitLoop
EndIf
$t = $c
If $c = $iMaxCol Then $c = 0
_SetPx($aCol[$c])
$r += $aRichtung[$c]
If $r > 3 Then $r -= 4
If $r < 0 Then $r += 4
Switch $r
Case 0
$x -= 1
Case 1
$y -= 1
Case 2
$x += 1
Case 3
$y += 1
EndSwitch
If $x = $iW Then $x = 0
If $x < 0 Then $x = $iW - 1
If $y = $iH Then $y = 0
If $y < 0 Then $y = $iH - 1
Next
$iFrames += $iFrameSkip
If TimerDiff($iT) > 100 Then
_Status('Frame: ' & $iFrames)
$iT = TimerInit()
EndIf
WM_PAINT()
WEndFunc _Import()
[/autoit] [autoit][/autoit] [autoit]
Local $s = ClipGet()
$s = StringReplace($s, '#', '')
If (Not (StringLen($s) = 17)) Then Return _Tip('Error: Unbekannte Importdaten:' & @CRLF & '"' & $s & '"')
If Not (StringLen(StringReplace(StringReplace($s, '0',''),'1','')) <= 1) Then Return _Tip('Error: Unbekannte Importdaten:' & @CRLF & '"' & $s & '"')
$iMaxCol = Int('0x' & StringLeft($s, 1)) + 1
If $iMaxCol = 1 Then Return _Tip('Error: Defekte Importdaten:' & @CRLF & '"' & $s & '"')
For $i = 0 To $iMaxCol - 1 Step 1
$aRichtung[$i] = 1 - 2*(StringMid($s, $i+2,1)='1')
Next
GUICtrlSetData($hInput_MaxCol, $iMaxCol)
_Reset()
$bReset2 = True
$bRun2 = True
;~ GUICtrlSetData($hBtn_Run, 'Stop')
$s = '#' & $s & '#'
_Tip('Importiert: ' & @CRLF & StringMid($s, 1, 1) & ' ' & StringMid($s, 2, 1) & ' ' & StringMid($s, 3, 4) & ' ' & StringMid($s, 7, 4) & ' ' & StringMid($s, 11, 4) & ' ' & StringMid($s, 15, 4) & ' ' & StringMid($s, 19, 1))
EndFuncFunc _Export()
[/autoit] [autoit][/autoit] [autoit]
Local $s = '#' & Hex($iMaxCol-1,1)For $i = 0 To $iMaxCol - 1 Step 1
[/autoit] [autoit][/autoit] [autoit]
If $aRichtung[$i] = 1 Then
$s &= '0'
Else
$s &= '1'
EndIf
Next
$s = StringLeft($s & '00000000000000', 18) & '#'
ClipPut($s)
_Tip('Exportiert: ' & @CRLF & StringMid($s, 1, 1) & ' ' & StringMid($s, 2, 1) & ' ' & StringMid($s, 3, 4) & ' ' & StringMid($s, 7, 4) & ' ' & StringMid($s, 11, 4) & ' ' & StringMid($s, 15, 4) & ' ' & StringMid($s, 19, 1))
EndFuncFunc _Zufall()
[/autoit] [autoit][/autoit] [autoit]
Local $iMaxCol = Random(3, 16, 1)
For $i = 0 To $iMaxCol-1 Step 1
$aRichtung[$i] = 1-2*Random(0, 1, 1)
Next
GUICtrlSetData($hInput_MaxCol, $iMaxCol)
_Reset()
$bRun2 = True
$bReset2 = True
;~ GUICtrlSetData($hBtn_Run, 'Stop')
EndFuncFunc _ResetBtn($n = -1)
[/autoit] [autoit][/autoit] [autoit]
If $n = -1 Then
For $i = 0 To 15 Step 1
GUICtrlSetData($iDummy + $i + 1, LR($aRichtung[$i]))
Next
Else
GUICtrlSetData($iDummy + $n + 1, LR($aRichtung[$n]))
EndIf
EndFunc ;==>_ResetBtnFunc LR($a)
[/autoit] [autoit][/autoit] [autoit]
If $a = 1 Then Return 'R'
Return 'L'
EndFunc ;==>LRFunc _Reset()
[/autoit] [autoit][/autoit] [autoit]
$x = Int($iW / 2)
$y = Int($iH / 2)
$r = 3
$c = ''
$t = ''
$bRun = False
$iFrames = 0
$iMaxCol = Number(GUICtrlRead($hInput_MaxCol))
If $iMaxCol < 2 Then $iMaxCol = 2
If $iMaxCol > 16 Then $iMaxCol = 16
GUICtrlSetData($hInput_MaxCol, $iMaxCol)
$iFrameSkip = Number(StringReplace(GUICtrlRead($hInput_FrameSkip), '.', ''))
If $iFrameSkip < 1 Then
$iFrameSkip = 1
GUICtrlSetData($hInput_FrameSkip, 1)
EndIf
If $iFrameSkip > 2000 Then
$iFrameSkip = 2000
GUICtrlSetData($hInput_FrameSkip, '2.000')
EndIf
$iT = TimerInit()
_GDIPlus_GraphicsClear($hGFX, 0xFFFFFFFF)
WM_PAINT()
;~ GUICtrlSetData($hBtn_Run, 'Start')
_ResetBtn()
_Status('Bereit...')
EndFunc ;==>_ResetFunc _Tip($a)
[/autoit] [autoit][/autoit] [autoit]
ToolTip($a)
AdlibUnRegister('_EndTip')
AdlibRegister('_EndTip', 4000)
EndFuncFunc _EndTip()
[/autoit] [autoit][/autoit] [autoit]
ToolTip('')
AdlibUnRegister('_EndTip')
EndFuncFunc _Status($a)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($hLabel_Status, ' ' & $a)
EndFunc ;==>_StatusFunc _Index()
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To $iMaxCol - 1 Step 1
If $aCol[$i] = $c Then Return $i + 1
Next
Return ''
EndFunc ;==>_IndexFunc _SetPx($iCol)
[/autoit] [autoit][/autoit] [autoit]
If $x + 1 + $y * $iW > $iW * $iH Then Return _Tip('Error: Zeichnen außerhalb des Bildes.')
DllStructSetData($vStruct, 1, $iCol, $x + 1 + $y * $iW)
EndFunc ;==>_SetPxFunc _GetPx()
[/autoit] [autoit][/autoit] [autoit]
Return DllStructGetData($vStruct, 1, $x + 1 + $y * $iW)
EndFunc ;==>_GetPxFunc WM_PAINT()
[/autoit] [autoit][/autoit] [autoit]
DllCall($hDLL_GDI32, 'int', 'StretchBlt', 'hwnd', $hDC, 'int', 0, 'int', 0, 'int', $iW * $iZoom, 'int', $iH * $iZoom, 'hwnd', $hDC_Buf, 'int', 0, 'int', 0, 'int', $iW, 'int', $iH, 'dword', 0xCC0020)
EndFunc ;==>WM_PAINTFunc _Event()
[/autoit] [autoit][/autoit] [autoit]
Local $a = @GUI_CtrlId, $b
Switch $a
Case -3
Exit
Case $hInput_MaxCol + 1
$iMaxCol = Number(GUICtrlRead($hInput_MaxCol))
Case $hInput_FrameSkip + 1
$iFrameSkip = Number(StringReplace(GUICtrlRead($hInput_FrameSkip), '.', ''))
Case $hBtn_Run
If $bRun Then
GUICtrlSetData($hBtn_Run, 'Start')
Else
GUICtrlSetData($hBtn_Run, 'Stop')
EndIf
$bRun = Not $bRun
Case $hBtn_Reset
_Reset()
$bReset2 = True
$bRun2 = False
Case Else ; Button
$b = $a - $iDummy - 1
If $aRichtung[$b] = 1 Then
$aRichtung[$b] = -1
Else
$aRichtung[$b] = 1
EndIf
_ResetBtn($b)
EndSwitch
EndFunc ;==>_EventFunc _Freigeben()
[/autoit] [autoit][/autoit] [autoit]
_Image_Delete($hBUF)
_GDIPlus_GraphicsDispose($hGFX)
_GDIPlus_Shutdown()
DllClose($hDLL_GDI32)
EndFunc ;==>_FreigebenFunc _Image_Create($iW, $iH)
[/autoit] [autoit][/autoit] [autoit]
Local $Ptr, $hDC, $hBmp, $tBMI, $aDIB, $vStruct
$hDC = _WinAPI_CreateCompatibleDC(0)
$tBMI = DllStructCreate($tagBITMAPINFO)
DllStructSetData($tBMI, "Size", DllStructGetSize($tBMI) - 4)
DllStructSetData($tBMI, "Width", $iW)
DllStructSetData($tBMI, "Height", -$iH)
DllStructSetData($tBMI, "Planes", 1)
DllStructSetData($tBMI, "BitCount", 32)
$aDIB = DllCall($hDLL_GDI32, 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBMI), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'uint', 0)
$hBmp = $aDIB[0]
$Ptr = $aDIB[4]
_WinAPI_SelectObject($hDC, $hBmp)
$vStruct = DllStructCreate('int[5]')
DllStructSetData($vStruct, 1, $hDC, 1)
DllStructSetData($vStruct, 1, $iW, 2)
DllStructSetData($vStruct, 1, $iH, 3)
DllStructSetData($vStruct, 1, $Ptr, 4)
DllStructSetData($vStruct, 1, $hBmp, 5)
Return $vStruct
EndFunc ;==>_Image_CreateFunc _Image_Delete(ByRef $vStruct)
[/autoit]
_WinAPI_DeleteObject(DllStructGetData($vStruct, 1, 5))
_WinAPI_DeleteDC(DllStructGetData($vStruct, 1, 1))
$vStruct = 0
EndFunc ;==>_Image_DeleteInteressante Seeds:
#41110100000000000#
#30111000000000000#
#80000100010000000#
#60011110000000000#
#31100000000000000#
#B0110110010000000#
#80110110000000000# - läuft unglaublich lange in der Mitte im Kreis, ohne sich dabei zu wiederholen
#70110110000000000# - Das gleiche wie oben nur eine Farbe weniger -> gibt interessante Linien.
#A1010001110000000# - Schnell ausbreitendes Gelbes Gebilde
#61010000000000000# - Gelbes RechteckBugs:
Es muss 2x resettet werden, bevor wirklich alles resettet ist.
Deshalb vor dem Importieren auf Reset drücken. Sonst kann das Resultat abweichen.1.01:
- Resetsystem überarbeitet. Es wird jetzt automatisch 2x resettet. Falls eine unbekannte Farbe auftaucht folgt auch ein Reset.
- Beim wiederherstellen sollte nun das bild aktualisiert werden.
.
. -
Da juckts direkt in den Fingern selbst irgendwas möglichst kleines zu schreiben^^
Blöd ist bei AutoIt nur, dass z.B. Leerzeichen oder Zeilenumbrüche (also Formatierungen des selben Codes) das Resultat beeinflussen...Und da ist jener klar im Vorteil, der alles falsch macht^^
Daher müssten Regeln gesetzt werden die z.B. Tidy vorschreiben und ein Skript welches alle Kommentare entfernt. -
533132+150+2272+159
Besteht nur aus Linien412692+150+2001+80
Aufgerolltes Irgendwas -
@Xor: Hast im Prinzip Recht.
Ich mag es halt nicht, wenn wirklich gute Ideen nicht völlig ausgebaut werden.
Und da habe ich einen (kleinen) Schritt gewagt... -
Sieht interessant aus.
Vorallem wenn man eine Hohe Framerate (25) und viele einzelbilder (500+) nimmt.Edit:
Hab mal daran herumgebastelt (nur minimal).
- Smoothing auf 2
- Es werden jetzt Kreise mit variablem Durchmesser zentriert mit float Koordinaten gezeichnet statt kleine Rechtecke mit Int Koordinaten.Effekt: Es glitzert jetzt total
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
Global $iFrames = 150
Global $iFPS = 20
Global $iStars = Random(500,3000,1)
Global $iSeed = Random(1,1000000,1)
Global $iRadius = Random(50,200,1)
Opt("GUIOnEventMode",1)
Local Const $iRtoD = ACos(-1)/180
#include<GDIPlus.au3>
_GDIPlus_Startup()
Local $hGUI = GUICreate("Grafik User Interface",500,500,-1,-1)
GUISetOnEvent(-3,"_exit",$hGUI)
$hCMenue = GUICtrlCreateContextMenu()
$hCMenue_Neu = GUICtrlCreateMenu("Neu",$hCMenue)
$hCMenue_Neu_Neu = GUICtrlCreateMenuItem("Neu",$hCMenue_Neu)
GUICtrlSetOnEvent($hCMenue_Neu_Neu,"Neu")
$hCMenue_Neu_Zufaellig = GUICtrlCreateMenuItem("Zufällig",$hCMenue_Neu)
GUICtrlSetOnEvent($hCMenue_Neu_Zufaellig,"Zufallig")
$hCMenue_FPS = GUICtrlCreateMenu("Bildrate",$hCMenue)
$hCMenue_FPS_5 = GUICtrlCreateMenuItem("5",$hCMenue_FPS)
GUICtrlSetOnEvent($hCMenue_FPS_5,"FPS_05")
$hCMenue_FPS_10 = GUICtrlCreateMenuItem("10",$hCMenue_FPS)
GUICtrlSetOnEvent($hCMenue_FPS_10,"FPS_10")
$hCMenue_FPS_15 = GUICtrlCreateMenuItem("15",$hCMenue_FPS)
GUICtrlSetOnEvent($hCMenue_FPS_15,"FPS_15")
$hCMenue_FPS_20 = GUICtrlCreateMenuItem("20",$hCMenue_FPS)
GUICtrlSetOnEvent($hCMenue_FPS_20,"FPS_20")
$hCMenue_FPS_25 = GUICtrlCreateMenuItem("25",$hCMenue_FPS)
GUICtrlSetOnEvent($hCMenue_FPS_25,"FPS_25")
$hCMenue_FPS_30 = GUICtrlCreateMenuItem("30",$hCMenue_FPS)
GUICtrlSetOnEvent($hCMenue_FPS_30,"FPS_30")
$hCMenue_FPS_Mehr = GUICtrlCreateMenuItem("Mehr...",$hCMenue_FPS)
GUICtrlSetOnEvent($hCMenue_FPS_Mehr,"FPS_")
$hCMenue_Copy = GUICtrlCreateMenuItem("Kopieren",$hCMenue)
GUICtrlSetOnEvent($hCMenue_Copy,"Copy")
$hCMenue_Paste = GUICtrlCreateMenuItem("Einfügen",$hCMenue)
GUICtrlSetOnEvent($hCMenue_Paste,"Paste")
Local $hGrafik = _GDIPlus_GraphicsCreateFromHWND($hGUI)
Local $hBufferBitmap = _GDIPlus_BitmapCreateFromGraphics(500,500,$hGrafik)
Local $hBufferContext = _GDIPlus_ImageGetGraphicsContext($hBufferBitmap)
GUISetState(1,$hGUI)
Global $aBitmaps = Create($iFrames,$iStars,$iSeed,$iRadius)Local $iTimer = TimerInit()
[/autoit] [autoit][/autoit] [autoit]
Local $iFrame = 0
Do
$iFrame = Mod(Timerdiff($iTimer)/(1000/$iFPS),$iFrames)
_GDIPlus_GraphicsDrawImage($hGrafik,$aBitmaps[$iFrame],0,0)Until 0
[/autoit] [autoit][/autoit] [autoit]Func Create($iFrames,$iStars,$iSeed,$iRadius)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($hCMenue_Neu,128)
GUICtrlSetState($hCMenue_Paste,128)
Local $iSSeed = 0, $iDistanz = 0, $iWinkel = 0,$iTife = 0, $iFarbe = 0, $hContext = 0x00
Local $aBrush[7]
Local $aBitmap[$iFrames]
Local $nD
;~ ConsoleWrite($nD & @CRLF)$aBrush[0] = _GDIPlus_BrushCreateSolid(0x999999FF)
[/autoit] [autoit][/autoit] [autoit]
$aBrush[1] = _GDIPlus_BrushCreateSolid(0x99FFFF99)
$aBrush[2] = _GDIPlus_BrushCreateSolid(0x99FFFFFF)
$aBrush[3] = _GDIPlus_BrushCreateSolid(0x99FF9999)
$aBrush[4] = _GDIPlus_BrushCreateSolid(0xFFFF9999)
$aBrush[5] = _GDIPlus_BrushCreateSolid(0x99FF4444)
$aBrush[6] = _GDIPlus_BrushCreateSolid(0xFF774444)If $iSeed = 4474194 Then
[/autoit] [autoit][/autoit] [autoit]
$hBrush = _GDIPlus_BrushCreateSolid(0x88FF0000)
Else
$hBrush = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
EndIf
$hPen = _GDIPlus_PenCreate(0xFFFFFFFF,2)
_GDIPlus_GraphicsClear($hBufferContext,0xFF000000)
_GDIPlus_GraphicsClear($hGrafik,0xFF000000)Local $iSeed2 = Mod(Round($iSeed,2),ACos(-1))*(100/ACos(-1))
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 to $iFrames-1
$aBitmap[$i] = _GDIPlus_BitmapCreateFromGraphics(500,500,$hGrafik)
$hContext = _GDIPlus_ImageGetGraphicsContext($aBitmap[$i])
_GDIPlus_GraphicsSetSmoothingMode($hContext, 2)
_GDIPlus_GraphicsClear($hContext,0xFF000000)
For $ii = 1 to $iStars
$iSSeed = $iSeed2*$ii
$iDistanz = Mod($iSSeed,1)*$iRadius
$iWinkel = Mod(Mod($iSSeed,0.36)*1000 + ($i+1)/$iFrames*360,360)
$iTife = (Mod($iSSeed,0.5)-0.25)*Mod($iSSeed,100);$iSSeed/100
If $iSeed = 4474194 Then
$iFarbe = Int($iDistanz / $iRadius*2)+5
Else
$iFarbe = Int($iDistanz / $iRadius*5)
EndIf
$nD = _RandomMin(1, 3)
_GDIPlus_GraphicsFillEllipseF($hContext,250 + Sin($iRtoD*$iWinkel)*$iDistanz-$nD/2,250 + Cos($iRtoD*$iWinkel)*$iDistanz*0.50 + $iTife-$nD/2,$nD,$nD,$aBrush[$iFarbe])
Next
_GDIPlus_GraphicsDispose($hContext)
If $i = 0 Then
_GDIPlus_GraphicsDrawImage($hBufferContext,$aBitmap[0],0,0)
_GDIPlus_GraphicsDrawRect($hBufferContext,175,240,150,20,$hPen)
Local $aArray[5][2] = [[4]]
$aArray[1][0] = 174
$aArray[1][1] = 227
$aArray[2][0] = 190+30
$aArray[2][1] = 227
$aArray[3][0] = 325
$aArray[3][1] = 227+12
$aArray[4][0] = 174
$aArray[4][1] = 227+12
_GDIPlus_GraphicsFillPolygon($hBufferContext,$aArray,$hBrush)
_GDIPlus_GraphicsDrawString($hBufferContext,"Laden...",180,227,"Arial",8)
EndIf
_GDIPlus_GraphicsFillRect($hBufferContext,177,242,($i+1)/$iFrames*146,16,$hBrush)
_GDIPlus_GraphicsDrawImage($hGrafik,$hBufferBitmap,0,0)
Next
For $i = 0 to 6
_GDIPlus_BrushDispose($aBrush[$i])
Next
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_PenDispose($hPen)
GUICtrlSetState($hCMenue_Neu,64)
GUICtrlSetState($hCMenue_Paste,64)
Return $aBitmap
EndFuncFunc _RandomMin($Min, $Max) ; Tendenz zum kleinst möglichen Wert
[/autoit] [autoit][/autoit] [autoit]
Return Random($Min, Random($Min, Random($Min, Random($Min, $Max))))
EndFuncFunc _GDIPlus_GraphicsFillEllipseF($hGFX, $x, $y, $w, $h, $b)
[/autoit] [autoit][/autoit] [autoit]
DllCall($ghGDIPDll, "int", "GdipFillEllipse", "handle", $hGFX, "handle", $b, "float", $X, "float", $Y, "float", $W, "float", $H)
EndFuncFunc Zufallig()
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 to UBound($aBitmaps)-1
_GDIPlus_BitmapDispose($aBitmaps[$i])
Next
$iStars = Random(500,3000,1)
$iSeed = Random(1,1000000,1)
$iRadius = Random(50,200,1)
$aBitmaps = Create($iFrames,$iStars,$iSeed,$iRadius)
EndFuncFunc Neu()
[/autoit] [autoit][/autoit] [autoit]
Opt("GUIOnEventMode",0)
Local $hGUI2 = GUICreate("Neu",300,124,-1,-1)
GUICtrlCreateLabel("Seed:",0,12,100,19,2)
Local $hInput_Seed = GUICtrlCreateInput($iSeed,110,10,150,19,1)
GUICtrlCreateLabel("Frames:",0,32,100,19,2)
Local $hInput_Frames = GUICtrlCreateInput($iFrames,110,30,150,19,1)
GUICtrlCreateLabel("Sterne:",0,52,100,19,2)
Local $hInput_Stars = GUICtrlCreateInput($iStars,110,50,150,19,1)
GUICtrlCreateLabel("Radius:",0,72,100,19,2)
Local $hInput_Radius = GUICtrlCreateInput($iRadius,110,70,150,19,1)
Local $hButton_Ok = GUICtrlCreateButton("Erstellen",100,95,100,22)
GUISetState(1,$hGUI2)
Do
$msg = GUIGetMsg()
sleep(25)
If $msg = -3 Then
Opt("GUIOnEventMode",1)
GUIDelete($hGUI2)
Return
EndIf
Until $msg = $hButton_Ok
Opt("GUIOnEventMode",1)
$iSeed = GUICtrlRead($hInput_Seed)
If StringRegExp($iSeed,"[^0-9]") Then $iSeed = Int(StringToBinary($iSeed))
$iFrames = GUICtrlRead($hInput_Frames)
$iStars = GUICtrlRead($hInput_Stars)
$iRadius = GUICtrlRead($hInput_Radius)
GUIDelete($hGUI2)
For $i = 0 to UBound($aBitmaps)-1
_GDIPlus_BitmapDispose($aBitmaps[$i])
Next
$aBitmaps = Create($iFrames,$iStars,$iSeed,$iRadius)
EndFuncFunc FPS_05()
[/autoit] [autoit][/autoit] [autoit]
$iFPS = 5
EndFuncFunc FPS_10()
[/autoit] [autoit][/autoit] [autoit]
$iFPS = 10
EndFuncFunc FPS_15()
[/autoit] [autoit][/autoit] [autoit]
$iFPS = 15
EndFuncFunc FPS_20()
[/autoit] [autoit][/autoit] [autoit]
$iFPS = 20
EndFuncFunc FPS_25()
[/autoit] [autoit][/autoit] [autoit]
$iFPS = 25
EndFuncFunc FPS_30()
[/autoit] [autoit][/autoit] [autoit]
$iFPS = 30
EndFuncFunc FPS_()
[/autoit] [autoit][/autoit] [autoit]
Local $iNewFPS = InputBox("Bildrate","",$iFPS)
If @error > 0 Then Return
$iNewFPS = Int($iNewFPS)
If $iNewFPS <= 0 Then
Msgbox(16,"Fehler","Der Eingabewert muss über 0 sein")
Else
$iFPS = $iNewFPS
EndIf
EndFuncFunc Copy()
[/autoit] [autoit][/autoit] [autoit]
ClipPut(String($iSeed)&"+"&String($iFrames)&"+"&String($iStars)&"+"&String($iRadius))
EndFuncFunc Paste()
[/autoit] [autoit][/autoit] [autoit]
Local $aArray = StringSplit(ClipGet(),"+")
If Not IsArray($aArray) or $aArray[0] <> 4 Then
msgbox(16,"Fehler","String konnte nicht eigefügt werden")
Return
EndIf
$iSeed = Int($aArray[1])
$iFrames = Int($aArray[2])
$iStars = Int($aArray[3])
$iRadius = Int($aArray[4])
For $i = 0 to UBound($aBitmaps)-1
_GDIPlus_BitmapDispose($aBitmaps[$i])
Next
$aBitmaps = Create($iFrames,$iStars,$iSeed,$iRadius)
EndFuncFunc _Exit()
[/autoit]
For $i = 0 to UBound($aBitmaps)-1
_GDIPlus_BitmapDispose($aBitmaps[$i])
Next
_GDIPlus_GraphicsDispose($hBufferContext)
_GDIPlus_BitmapDispose($hBufferBitmap)
_GDIPlus_GraphicsDispose($hGrafik)
_GDIPlus_Shutdown()
exit
EndFunc -
Bisher habe ich überall gehört man würde die Garantie verlieren.
Ich verstehe zwar nicht warum, aber so scheint es zu sein. -
Hab grade mal geschaut.
der CM9 läuft scheinbar auf dem S+.Wenn du gerne rumbastelst kannst du folgendes mal anschauen.
http://www.androidnext.de/news/samsung-g…wich-cm9-alpha/