- Offizieller Beitrag
Mittwoch 15.00 Uhr ist Abgabe
Wann gibt's die Auswertung? [drängel...]
Mittwoch 15.00 Uhr ist Abgabe
Wann gibt's die Auswertung? [drängel...]
Hi,
bin noch bei der Arbeit und gehe danach in die Sauna, wenn anschließend noch Lust habe, dann gucke ich mir alle Einsendungen an.
(Ich glaube es waren aber nur 2)
Mega
Jo - waren leider nur 2 Stück
Eins hab ich mir schon angeschaut; ich denke morgen gibt es die Auswertung
Echt? Mehr haben nicht mitgemacht. Schade!
Ich dachte, ich könnte mir ein paar mehr Lösungen ansehen.
Jo, morgen ist gut. Ich muss nämlich jetzt zurück auf meinen Planenten und da ab ins Nest.
Edit: Obwohl die beiden Teilnehmer auch eigentlich einfach ihre Lösungen posten könnten, dann können alle lernen und ihren Senf abgeben.
sry hatte einfach keine Zeit zum mitmachen xD Außerdem hatte ich kP wie ich das ganze programmieren sollte
Edit: Obwohl die beiden Teilnehmer auch eigentlich einfach ihre Lösungen posten könnten, dann können alle lernen und ihren Senf abgeben.
Ok, ich fang mal an:
Meine kurze Version:
Diese Version muss per Tray-Menü beendet werden.
Dim $l[31]
GUICreate('',999,750)
GUISetBKColor(0x000000)
For $i=0 To 30
$l[$i]=GUICtrlCreateLabel('',8+$i*32,0,20,750)
GUICtrlSetColor(-1,0x00ff00)
Next
GUISetState()
While 1
$y=Random(0,30,1)
$c=Chr(Random(32,122,1))
GUICtrlSetData($l[$y],$c&@LF&StringLeft(GUICtrlRead($l[$y]),120))
WEnd
Und hier die 'Lange':
ESC zum beenden, Vollbildmodus, ein bißchen dynamischer als die andere Version.
#Include<GUIConstants.au3>
Opt('GUIOnEventMode', 1)
Global $a = 48; Anzahl der Spalten
Global $sp[$a+1], $w = @DesktopWidth, $h = @DesktopHeight
GUICreate('Matrix', $w, $h, -1, -1, BitOr($WS_MAXIMIZE,$WS_POPUP))
GUISetOnEvent($GUI_EVENT_CLOSE, 'Ende'); ESC zum Beenden
GUISetBKColor(0x000000)
For $i = 0 To $a
$sp[$i] = GUICtrlCreateLabel('', 10+$i*Ceiling($w/($a)), 0, 18, $h, $SS_RIGHT)
GUICtrlSetFont(-1, 12, 800, 0, 'Verdana')
GUICtrlSetColor(-1, 0x00ff00)
Next
GUISetState()
GUISetCursor(16,1); Mauszeiger verstecken
$f = 0
While 1
If $f = 0 Then
$y = Random(0, $a, 1)
$y1 = Random(0, $a, 1)
$y2 = Random(0, $a, 1)
EndIf
If Not($y=$y1 And $y=$y2) Then
$r = StringLeft(GUICtrlRead($sp[$y]), 160)
Switch Mod($y, 2)
Case 0
$c = StringRegExpReplace(Chr(Random(32, 122, 1)), '[@]', ' ' & @LF & ' ')
Case Else
$c = StringMid('123 456 789', Random(1, 11, 1), 1)
EndSwitch
$x = $y
Else
$f += 1
If $f = 160 Then $f = 0
$c = ' '
$x = Random(0, $a, 1)
$r = StringLeft(GUICtrlRead($sp[$x]), 160)
EndIf
GUICtrlSetData($sp[$x], $c & @LF & $r)
WEnd
Func Ende()
GUISetCursor(2,0)
Exit
EndFunc
Moin, ich dürfte dann wohl der zweite sein
Ich hatte leider nicht so viel Zeit dafür und habe es mal mit GDI gemacht, hoffe es gefällt.
Das Skript läuft im Fullscreen und wird über die ESC Taste beendet.
#include <GUIConstants.au3>
#include <GDIPlus.au3>
HotKeySet("{esc}","_exit")
$breite = @DesktopWidth
$hohe = @DesktopHeight
Local $zeichen = StringSplit("a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|e|s|t|u|v|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|E|S|T|U|V|X|Y|Z|0|1|2|3|4|5|6|7|8|9","|") ;=62
$hGUI = GUICreate("GDI+", $breite, $hohe , 0,0, $WS_POPUP,$WS_EX_TOOLWINDOW)
GUISetBkColor(0x000000)
GUISetState()
$hWnd = WinGetHandle("GDI+")
_GDIPlus_Startup ()
MouseMove( $breite, $hohe ,1)
$hFamily = _GDIPlus_FontFamilyCreate ("Arial")
$hFont = _GDIPlus_FontCreate ($hFamily, 10, 1)
while 1
_drawLine(2)
Sleep(250)
WEnd
Func _drawLine($sleep)
$x01 = Random(0,$breite/ 2,1)
$y01 = random(($hohe - 200) / 2,$hohe - 200,1)
$x02 = Random(0,$breite/ 2,1)
$y02 = random(-100,($hohe - 200) / 2,1)
$x03 = Random($breite/ 2,$breite,1)
$y03 = random(($hohe - 200) / 2,$hohe - 200,1)
$x04 = Random($breite/ 2,$breite,1)
$y04 = random(-100,($hohe - 200) / 2,1)
$light = 0
For $i = 0 to 18
$light += 12
$x1 = Ceiling($x01/14) * 14
$y1 = Ceiling($y01 + ($i * 14 ))
_GDIPlus_GraphicsFillRect (_GDIPlus_GraphicsCreateFromHWND ($hWnd) ,$x1,$y1, 14, 14)
_GDIPlus_GraphicsDrawStringEx (_GDIPlus_GraphicsCreateFromHWND ($hWnd), $zeichen[Random(1,62,1)] , $hFont, _GDIPlus_RectFCreate ($x1,$y1,0, 0), _GDIPlus_StringFormatCreate (), _GDIPlus_BrushCreateSolid ("0x" & StringRight(hex($light),2) & "00FF00"))
$x2 = Ceiling($x02/14) * 14
$y2 = Ceiling($y02 + ($i * 14 ))
_GDIPlus_GraphicsFillRect (_GDIPlus_GraphicsCreateFromHWND ($hWnd) ,$x2,$y2, 14, 14)
_GDIPlus_GraphicsDrawStringEx (_GDIPlus_GraphicsCreateFromHWND ($hWnd), $zeichen[Random(1,62,1)] , $hFont, _GDIPlus_RectFCreate ($x2,$y2,0, 0), _GDIPlus_StringFormatCreate (), _GDIPlus_BrushCreateSolid ("0x" & StringRight(hex($light),2) & "00FF00"))
$x4 = Ceiling($x04/14) * 14
$y4 = Ceiling($y04 + ($i * 14 ))
_GDIPlus_GraphicsFillRect (_GDIPlus_GraphicsCreateFromHWND ($hWnd) ,$x4,$y4, 14, 14)
_GDIPlus_GraphicsDrawStringEx (_GDIPlus_GraphicsCreateFromHWND ($hWnd), $zeichen[Random(1,62,1)] , $hFont, _GDIPlus_RectFCreate ($x4,$y4,0, 0), _GDIPlus_StringFormatCreate (), _GDIPlus_BrushCreateSolid ("0x" & StringRight(hex($light),2) & "00FF00"))
$x3 = Ceiling($x03/14) * 14
$y3 = Ceiling($y03 + ($i * 14 ))
_GDIPlus_GraphicsFillRect (_GDIPlus_GraphicsCreateFromHWND ($hWnd) ,$x3,$y3, 14, 14)
_GDIPlus_GraphicsDrawStringEx (_GDIPlus_GraphicsCreateFromHWND ($hWnd), $zeichen[Random(1,62,1)] , $hFont, _GDIPlus_RectFCreate ($x3,$y3,0, 0), _GDIPlus_StringFormatCreate (), _GDIPlus_BrushCreateSolid ("0x" & StringRight(hex($light),2) & "00FF00"))
sleep(6)
Next
EndFunc
func _exit()
Exit
EndFunc
Ich vote für McPoldy!
Klasse Effekt (vielleicht noch mal ein bisschen an den Sleep's 'drehen' ) und gute Programmierung.
Fehlt nur noch der Blur-Effekt
@Jan ja, wenn man noch an den Sleeps dreht wird es flüssiger, hatte halt die erste Version die lauffähig war geschickt :), aber was ist ein Blur-Effeckt
Hi,
Blur verzerrt das Bild ein bißchen:
#include<GDIPlus.au3>
#include<ScreenCapture.au3>
#include<GUIConstantsEx.au3>
#include<WinAPI.au3>
#include<WindowsConstants.au3>
$hGUI = GUICreate("Blurp", 200,120)
GUICtrlCreateLabel("InterpolationMode", 20, 20, 100, 20)
GUICtrlCreateLabel("Stretch ratio", 20, 50, 100, 20)
$cInputIM = GUICtrlCreateInput("6", 120, 15, 50, 20)
GUICtrlSetTip(-1, "Possible values" & @CRLF & "0 - 7")
$cInputSR = GUICtrlCreateInput("1.25", 120, 45, 50, 20)
GUICtrlSetTip(-1, "Possible values" & @CRLF & "1.0 - @DesktopHeight.0")
$cBtnBlur = GUICtrlCreateButton("Blur", 20, 80, 80, 20)
$cBtnClear = GUICtrlCreateButton("Clear", 100, 80, 80, 20)
GUISetState()
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
_GDIPlus_Shutdown()
Exit
Case $cBtnBlur
_ScreenBlur(GUICtrlRead($cInputSR), GUICtrlRead($cInputIM))
Case $cBtnClear
_ScreenClear()
EndSwitch
WEnd
Func _ScreenClear()
_WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE+$RDW_UPDATENOW+$RDW_ALLCHILDREN)
EndFunc
Func _ScreenBlur($nRatio, $iInterMode, $iSmoothMode=0, $iPixOffsetMode = 2)
$hBMP = _ScreenCapture_Capture("", 0,0,-1,-1, False)
$hImg = _GDIPlus_BitmapCreateFromHBITMAP($hBMP)
$hScreenDC = _WinAPI_GetDC(0)
$hScreenGraph = _GDIPlus_GraphicsCreateFromHDC($hScreenDC)
$hImg2 = _GDIPlus_BitmapCloneArea($hImg, 0, 0, @DesktopWidth/$nRatio, @DesktopHeight/$nRatio)
$hMemGraph = _GDIPlus_ImageGetGraphicsContext($hImg2)
;http://msdn2.microsoft.com/en-us/library/ms534141(VS.85).aspx
;InterpolationModeDefault = 0
;InterpolationModeLowQuality = 1
;InterpolationModeHighQuality = 2
;InterpolationModeBilinear = 3
;InterpolationModeBicubic = 4
;InterpolationModeNearestNeighbor = 5
;InterpolationModeHighQualityBilinear = 6
;InterpolationModeHighQualityBicubic = 7
$a = DllCall("gdiplus.dll", "int", "GdipSetInterpolationMode", "hwnd", $hMemGraph, "int", $iInterMode)
$a = DllCall("gdiplus.dll", "int", "GdipSetInterpolationMode", "hwnd", $hScreenGraph, "int", $iInterMode)
;http://msdn2.microsoft.com/en-us/library/ms534169(VS.85).aspx
;PixelOffsetModeDefault = 0 = PixelOffsetModeNone
;PixelOffsetModeHighSpeed = 1 = PixelOffsetModeNone
;PixelOffsetModeHighQuality = 2 = PixelOffsetModeHalf
;PixelOffsetModeNone = 3
;PixelOffsetModeHalf = 4
$a = DllCall("gdiplus.dll", "int", "GdipSetPixelOffsetMode", "hwnd", $hMemGraph, "int", $iPixOffsetMode)
$a = DllCall("gdiplus.dll", "int", "GdipSetPixelOffsetMode", "hwnd", $hScreenGraph, "int", $iPixOffsetMode)
;http://msdn2.microsoft.com/en-us/library/ms534173(VS.85).aspx
;SmoothingModeDefault = 0 = SmoothingModeNone
;SmoothingModeHighSpeed = 1 = SmoothingModeNone
;SmoothingModeHighQuality = 2 = SmoothingModeAntiAlias8x4
;SmoothingModeNone
;SmoothingModeAntiAlias8x4
;SmoothingModeAntiAlias = SmoothingModeAntiAlias8x4
;SmoothingModeAntiAlias8x8
$a = DllCall("gdiplus.dll", "int", "GdipSetSmoothingMode", "hwnd", $hMemGraph, "int", $iSmoothMode)
$a = DllCall("gdiplus.dll", "int", "GdipSetSmoothingMode", "hwnd", $hScreenGraph, "int", $iSmoothMode)
_GDIPlus_GraphicsDrawImageRectRect($hMemGraph, $hImg, 0, 0, @DesktopWidth, @DesktopHeight, 0, 0, @DesktopWidth/$nRatio, @DesktopHeight/$nRatio)
_GDIPlus_GraphicsDrawImageRectRect($hScreenGraph, $hImg2, 0, 0, @DesktopWidth/$nRatio, @DesktopHeight/$nRatio, 0, 0, @DesktopWidth, @DesktopHeight)
_WinAPI_DeleteObject($hBMP)
_GDIPlus_ImageDispose($hImg)
_GDIPlus_ImageDispose($hImg2)
_GDIPlus_GraphicsDispose($hMemGraph)
_GDIPlus_GraphicsDispose($hScreenGraph)
_WinAPI_ReleaseDC(0, $hScreenDC)
EndFunc
[/autoit]Mega
Du weißt doch das bei Matrix die fertigen Zeichen irgendwann 'ausfaden', also langsam verschwinden. Und ein Blur-Effekt ist eigentlich ein Weichzeichner. Das kombiniert ergibt den Effekt bei Matrix. Dafür müsste man aber OpenGL oder DirectX benutzen um es zu realisieren . Aber echt Klasse wie es bis jetzt aussieht.
Edit : Bau ma das von Xenobiologist in deinen Source ein
danke, da lernt man nie aus, kenne mich mit grafiksachen gar nicht aus, das ist ehr das dingen meiner frau
Ich finde die uIt-Idee ja sehr interessant, muss aber auch anmerken, dass eine Durchführungszeit von wenigen Tagen doch ein wenig schlapp ist. Besser wäre da ungefähr 2 Wochen bis 1 Monat, weil
1. Liest nicht jeder jeden Tag im Forum (bzw. übersieht einen solchen Thread).
2. Hat man sicherlich noch andere Dinge außer AutoIt zu erledigen.
3. Schreckt solch ein enges Zeitlimit von vornherein ab ("Ach, morgen schon - dann beim nächsten Mal!").
4. Spricht auch nichts gegen eine längere Laufzeit, da der Quellcode ja vorab nicht verfügbar gestellt wird.
Ich denke, dass das Ganze nur mit einer Teilnehmeranzahl von mindestens fünf Leuten Sinn macht! Außerdem sollte vielleicht ein Sticky für uIt angelegt werden, in dem die Regeln genauer als bisher festgelegt werden und die Aufgaben gestellt werden. (Das Posten wäre dann verboten, es würden nur Aufgaben/eingesandte Lösungen und Gewinner darin zu finden sein!)
Dann würden sich auch die vielen Unklarheiten von vornherein ausschließen und das Ganze würde für jeden ersichtlich sein!
So hab mir jetzt beide angeschaut.
Erstmal großes Lob an die beiden Teilnehmer, habt ihr wirklich gut gelöst. Nichts desto trotz kann nur einer Gewinnen und das ist im Bereich Style McPoldy. Sieht echt klasse aus! Der Blur Effekt war ja net vorgegeben und das es etwas stockend läuft ist zwar schade aber schadet dem Gesamteindruck nicht.
Im Bereich Größe gewinnt Oscar, der mit sehr wenig Code auch ein schönes Programm erzeugt hat.
Glückwunsch an Beide.
Die nächste Aufgabe werde ich demnächst posten. Meinetwegen könnt ihr aber vorher noch das Anliegen teh_han`s klären.
Meine Meinung dazu ist:
Ich finde es nicht sinnvoll sowas ewig hinzuziehen, da es dann einfach in Vergessenheit gerät. Einen Sticky Thread hingegen würde auch ich bevorzugen um da dann die Regeln eindeutig klären.
Da mir die Aufgabenstellungsgebung und Auswertung gut gefallen haben würde ich mich auch gerne bereit erklären diesen Wettbewerb in Zukunft zu leiten, vorrausgesetzt es gibt keine Gegenstimmen
hi
hab zwar nichts abgegeben, poste hier aber trotzdem mal meinen versuch
$g=GUICreate("",@DesktopWidth,@DesktopHeight,0,0,2147483648,8)
Global $l[@DesktopWidth/20]
For $i=0 To UBound($l)-1
$l[$i]=GUICtrlCreateLabel("",$i*20,0,20,@DesktopHeight)
GUICtrlSetBkColor(-1,0)
GUICtrlSetColor(-1,65280)
GUICtrlSetFont(-1,14,600)
Next
GUISetState()
Do
$t=""
For $i=0 To Random(0,@DesktopHeight/20,1)
$t=$t&" "&Chr(Random(33,127,1))
Next
GUICtrlSetData($l[Random(0,UBound($l)-1,1)],$t)
Until GUIGetMsg()=-3
ja...ich weiß sieht sehr beschissen aus^^... hab auch schonmal versucht, mit controlsetdata und mehreren unterscripten einen laufenden text zu erzeugen aber irgendwie ist der zufall von autoit da nciht zufällig genug und es kommen in jeder zeile die gleichen buchstaben raus...
grez
Waluev Danke schön freue mich schon auf die nächste Aufgabe, hoffe das dann mehr Leute Zeit haben, wäre schön.
Waluev: Schreib einfach die Regeln auf und schick sie mir, ich mache dann ein Thread mit den Regeln als Sticky.
Mega
Ich fände es gut, wenn wir ein Unterforum bekommen...
@pee/gun wäre das möglich
Walle
Hi,
oha wie konnte ich dieses geile Thread erst so spät entdecken?!?!^^
Also ich find alle Lösungen echt geil,
am besten gefällt mir Oscars, kann mich aber nicht so wirklich entscheiden ob das Erste oder das Zweite
Hätte garnicht gewusst, wie ich so etwas anzufangen habe, hab mal wieder was dazugelernt.
Liebe Grüße