• Jo - waren leider nur 2 Stück :(

    Eins hab ich mir schon angeschaut; ich denke morgen gibt es die Auswertung

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

    • Offizieller Beitrag


    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.

    [autoit]


    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

    [/autoit]

    Und hier die 'Lange':
    ESC zum beenden, Vollbildmodus, ein bißchen dynamischer als die andere Version.

    [autoit]


    #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

    [/autoit]
  • 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.

    Spoiler anzeigen
    [autoit]


    #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

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

    func _exit()
    Exit
    EndFunc

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Ich vote für McPoldy! :thumbup:
    Klasse Effekt (vielleicht noch mal ein bisschen an den Sleep's 'drehen' ;) ) und gute Programmierung.
    Fehlt nur noch der Blur-Effekt :whistling: 8)

  • @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 ?(:S?(

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

    • Offizieller Beitrag

    Hi,

    Blur verzerrt das Bild ein bißchen:

    Spoiler anzeigen
    [autoit]

    #include<GDIPlus.au3>
    #include<ScreenCapture.au3>
    #include<GUIConstantsEx.au3>
    #include<WinAPI.au3>
    #include<WindowsConstants.au3>

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

    $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()

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

    _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

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

    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)

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

    $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)

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

    _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)

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

    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 :whistling: . Aber echt Klasse wie es bis jetzt aussieht.

    Edit : Bau ma das von Xenobiologist in deinen Source ein :rock:

  • danke, da lernt man nie aus, kenne mich mit grafiksachen gar nicht aus, das ist ehr das dingen meiner frau :)

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • 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 ^^

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

  • hi :)


    hab zwar nichts abgegeben, poste hier aber trotzdem mal meinen versuch :)


    [autoit]

    $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

    [/autoit]

    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.

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Ich fände es gut, wenn wir ein Unterforum bekommen...

    @pee/gun wäre das möglich:?:

    Walle

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

  • 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