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. iFimOnl1n3

Beiträge von iFimOnl1n3

  • Gui [help]

    • iFimOnl1n3
    • 16. Januar 2015 um 06:13
    Zitat von BugFix

    Ich würde besser nur ein Array verwenden für Checkboxen und zugehörige Bilder.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 615, 437, 391, 262)

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

    Local $Checkbox[2][2] = [ _
    [GUICtrlCreateCheckbox("Bild 1", 312, 144, 97, 17), @DesktopDir & "\Unbenannt.jpg"], _
    [GUICtrlCreateCheckbox("Bild 2", 312, 176, 79, 25), @DesktopDir & "\lol.jpg"]_
    ]

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

    $Button1 = GUICtrlCreateButton("Start", 288, 264, 75, 25)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    For $i = 0 To UBound($Checkbox) -1
    If BitAND(GUICtrlRead($Checkbox[$i][0]), $GUI_CHECKED) Then ShellExecute($Checkbox[$i][1])
    Next
    EndSwitch
    WEnd

    [/autoit]
    Alles anzeigen


    Soweit dachte ich auch aber dann dachte ich das der Threadersteller einen kleinen Code hatte und dann bestimmt schon mit 1D Arrays erstmal zurecht kommen muss.
    Den Umgang bzw den Übergang des Umgangs von 1D auf 2 oder 3 ist Übungssache. Denke mal mit 2D Arrays wird er selbst und allein nicht weit kommen ohne sich zu demotivieren.
    Im Grunde aber richtig so mit einem 2 Dimensionalen Array!

  • kleine Snake Version

    • iFimOnl1n3
    • 16. Januar 2015 um 05:59

    Hallo,

    um mal wieder rein zu kommen in das AutoIT Scripting habe ich eine kleine Snake Version gebastelt.
    Keinerlei Inhalte sind irgendwo kopiert worden und ich habe das selbst geschrieben.
    Im Kopf hatte ich dabei ein schlichtes Snake Spiel ala 5110 Handy Zeiten. Zuerst nahm ich kleine Bildchen aber mit den farbigen Labels geht es erstmal soweit das man keine Dateien mitgeben muss.

    -Die Schlange wird nach jedem Fressen ein Stückchen schneller.
    -Es geht auch um Zeit das heißt mehr Konkurrenzkampf und Spaß wer schneller mehr einsammelt.
    (Pfeiltasten gedrückt halten dann beschleunigt sich die Schlange auf maximales Tempo)
    -Beschleunigt man die Schlange entstehen Durchgänge durch die Schlange selbst. Zuerst dachte ich das es blöd ist doch ich finde es mittlerweile spannender.
    -das maximale Tempo wird umso mehr man sammelt später erreicht.
    -Es gibt Effektivitätspunkte (Formel aus Zeit und gesammelten Futter)
    -Es gibt Gesamtpunkte
    ACHTUNG: Die beiden Punktearten sinken mit der Zeit wenn man nichts einsammelt.
    -sonst normaler Rand und das Spiel ist auch zu Ende wenn man in ein Schlangenteil reinläuft.

    Verbesserungsvorschläge:
    -Mit der Steuerung bin ich noch nicht 100% zufrieden.(jemand Vorschläge?)
    -den letzten Teil der Schlange an die Stelle des zweiten Teils moven um so das moven aller Schlangenteile zu vermeiden. (Hoffe so das flackern wegzubekommen)
    -Die Teile mit einem Rand ausrüsten und den Rand in korrekter Richtung ausrichten. (Dann erkennt man den Verlauf der Schlange besser)
    -Habe noch andere Varianten im Kopf wie: Schlangenteile hängen sich nicht an die Schlange sondern bleiben an den Stellen an dem man das Futter gesammelt hat.
    Oder Mit einem kleiner werdenden Rand nach X gesammelten. Auch normale Variante nur mit Hindernissen.

    Ist ein FunProjekt daher stelle ich euch den Code zur Verfügung und jeder kann dann daraus sein Snakespiel fertigstellen. Es gibt zwar schon ähnliches doch habe ich die anderen Dinge nicht genau betrachtet daher kann ich nicht sagen was es da alles gibt.

    Beispielbild:
    [Blockierte Grafik: http://prntscr.com/5syomm]http://prntscr.com/5syomm


    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>
    #include <Array.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $Form_Snaky = GUICreate("Snaky 1.0", 643, 526, 248, 171)
    GUISetOnEvent($GUI_EVENT_CLOSE, "__Function_Exit")
    $Main_Menu_Item = GUICtrlCreateMenu("Main")
    $Main_Menu_New_Game = GUICtrlCreateMenuItem("New Game", $Main_Menu_Item)
    GUICtrlSetOnEvent($Main_Menu_New_Game, "__Function_New_Game")
    $Main_Menu_Pause = GUICtrlCreateMenuItem("Pause", $Main_Menu_Item)
    GUICtrlSetOnEvent($Main_Menu_Pause, "__Function_Pause_Game")
    GUISetBkColor(0x000000)
    $Back_Pic = GUICtrlCreateLabel("",20, 20, 600, 440)
    GUICtrlSetBkColor($Back_Pic,0xFFFFFF)
    GUICtrlSetState($Back_Pic, $GUI_DISABLE)
    $Pic_Food = GUICtrlCreateLabel("",200, 200, 20, 20)
    GUICtrlSetBkColor($Pic_Food,0xFF0000)

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

    $Price_Points = GUICtrlCreateLabel("Punkte:",20, 470, 70, 20)
    $Price_Time = GUICtrlCreateLabel("Zeit:",100, 470, 130, 20)
    $Price_Effecty = GUICtrlCreateLabel("Effekty:", 230, 470, 150, 20)
    $Price_All = GUICtrlCreateLabel("Total:",370, 470,150, 20)
    $Price_Speed_LvL = GUICtrlCreateLabel("LvL:",530, 470,60, 20)
    Local $Price_Label = [$Price_Points,$Price_Time,$Price_Effecty,$Price_All,$Price_Speed_LvL]
    For $i = 0 To UBound($Price_Label) -1
    GUICtrlSetColor($Price_Label[$i],0xFFFFFF)
    Next

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

    Local $Pic_Snake[160]
    For $i = 1 To 160 -1
    $Pic_Snake[$i] = GUICtrlCreateLabel(" <>",300, 220, 20, 20)
    GUICtrlSetBkColor($Pic_Snake[$i],0x228B22)
    If $i > 1 Then
    GUICtrlSetState($Pic_Snake[$i],$GUI_HIDE)
    EndIf
    Next

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

    GUISetState(@SW_SHOW)

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

    Local $hDLL = DllOpen("user32.dll"), $Last_Pressed = 0,$Food_Counter = 0,$Match_Time = 0,$Your_Time = 0,$Pause_Game = 0, $Level_Speed = TimerInit()
    Local $Snake_Pos[161][2]
    __Function_Move_Food()

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

    While 1
    Sleep(20)
    For $i = 1 To 160 -1
    $xS = ControlGetPos($Form_Snaky,"",$Pic_Snake[$i])
    $Snake_Pos[$i][0] = $xS[0]
    $Snake_Pos[$i][1] = $xS[1]
    If $Snake_Pos[1][0] = $Snake_Pos[$i+1][0] And $Snake_Pos[1][1] = $Snake_Pos[$i+1][1] And $i < $Food_Counter Then
    __Function_Lost_Game()
    EndIf
    Next
    If $Last_Pressed = 0 Or $Pause_Game = 1 Then
    $Match_Time = TimerInit()
    Sleep(50)
    Else
    If TimerDiff($Level_Speed) > 100-$Food_Counter*0.500 Then
    __Function_Live_Stats()
    __Function_Move_Snake()
    $Level_Speed = TimerInit()
    If $Snake_Pos[1][0] < 20 Or $Snake_Pos[1][0] > 600 Or $Snake_Pos[1][1] < 20 Or $Snake_Pos[1][1] > 440 Then
    __Function_Lost_Game()
    EndIf
    EndIf

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

    EndIf
    If $Pause_Game = 0 Then
    __Button_Pressing()
    EndIf
    __Check_Food_Catch()
    WEnd

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

    Func __Function_Live_stats()
    GUICtrlSetData($Price_Label[0],"Points: " & $Food_Counter)
    GUICtrlSetData($Price_Label[1],"Time: " & StringLeft(__Calculate_Live_Time(),10))
    GUICtrlSetData($Price_Label[2],"Effekty: " & StringLeft((($Food_Counter/$Your_Time)*$Food_Counter),10))
    GUICtrlSetData($Price_Label[3],"Total: " & StringLeft((($Food_Counter*$Food_Counter)/($Your_Time-$Food_Counter))*$Food_Counter,10))
    GUICtrlSetData($Price_Label[4],"LvL: " & $Food_Counter*0.500/10)
    EndFunc

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

    Func __Calculate_Live_Time()
    $Your_Time = TimerDiff($Match_Time)/1000
    If StringInStr($Your_Time,".") Then
    $Temp = StringSplit($Your_Time,".")
    $Your_Time = $Temp[1]
    EndIf
    If $Your_Time < 60 Then
    Return $Your_Time & " Sek. "
    ElseIf $Your_Time >= 60 And $Your_Time <= 3600 Then
    Return $Your_Time/60 & " Min. "
    ElseIf $Your_Time >= 3600 Then
    Return $Your_Time/60/60 & " Std. "
    EndIf
    EndFunc

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

    Func __Function_Lost_Game()
    MsgBox(0,"Its not your Day!","Du hast: " & $Food_Counter & " Punkte in " & __Calculate_Live_Time() & "erspielt." & @CR & "Effektivität: " & ($Food_Counter/$Your_Time)*$Food_Counter & @CR & "Gesamtpunktzahl: " & (($Food_Counter*$Food_Counter)/($Your_Time-$Food_Counter))*$Food_Counter)
    __Function_New_Game()
    EndFunc

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

    Func __Check_Food_Catch()
    $Food_Pos = ControlGetPos($Form_Snaky,"",$Pic_Food)
    If $Snake_Pos[1][0] = $Food_Pos[0] And $Snake_Pos[1][1] = $Food_Pos[1] Then
    If $Food_Counter < 160 Then
    $Food_Counter += 1
    ControlShow($Form_Snaky,"",$Pic_Snake[$Food_Counter+1])
    __Function_Move_Food()
    ElseIf $Food_Counter >= 158 Then
    MsgBox(0,"Lucky Winner","Today is your Day!")
    EndIf
    EndIf
    EndFunc

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

    Func __Button_Pressing()
    Sleep(20)
    If $Food_Counter > 0 Then
    If _IsPressed("25",$hDLL) And $Last_Pressed <> 3 Then
    __Function_Move(1)
    ElseIf _IsPressed("26",$hDLL) And $Last_Pressed <> 4 Then
    __Function_Move(2)
    ElseIf _IsPressed("27",$hDLL) And $Last_Pressed <> 1 Then
    __Function_Move(3)
    ElseIf _IsPressed("28",$hDLL) And $Last_Pressed <> 2 Then
    __Function_Move(4)
    EndIf
    Else
    If _IsPressed("25",$hDLL) Then
    __Function_Move(1)
    ElseIf _IsPressed("26",$hDLL) Then
    __Function_Move(2)
    ElseIf _IsPressed("27",$hDLL) Then
    __Function_Move(3)
    ElseIf _IsPressed("28",$hDLL) Then
    __Function_Move(4)
    EndIf
    EndIf
    EndFunc

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

    Func __Function_Move($a)
    If $a = 1 Then
    If $Snake_Pos[1][0] > 20 Then
    ControlMove($Form_Snaky,"",$Pic_Snake[1],$Snake_Pos[1][0]-20,$Snake_Pos[1][1],20,20)
    EndIf
    ElseIf $a = 2 Then
    If $Snake_Pos[1][1] > 20 Then
    ControlMove($Form_Snaky,"",$Pic_Snake[1],$Snake_Pos[1][0],$Snake_Pos[1][1]-20,20,20)
    EndIf
    ElseIf $a = 3 Then
    If $Snake_Pos[1][0] < 600 Then
    ControlMove($Form_Snaky,"",$Pic_Snake[1],$Snake_Pos[1][0]+20,$Snake_Pos[1][1],20,20)
    EndIf
    ElseIf $a = 4 Then
    If $Snake_Pos[1][1] < 440 Then
    ControlMove($Form_Snaky,"",$Pic_Snake[1],$Snake_Pos[1][0],$Snake_Pos[1][1]+20,20,20)
    EndIf
    EndIf
    $Last_Pressed = $a
    EndFunc

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

    Func __Function_New_Game()
    $Last_Pressed = 0
    For $i = 2 To 160 -1
    ControlHide($Form_Snaky,"",$Pic_Snake[$i])
    Next
    $Food_Counter = 0
    __Function_Move_Food()
    ControlMove($Form_Snaky,"",$Pic_Snake[1],300,220,20,20)
    EndFunc

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

    Func __Function_Pause_Game()
    If $Pause_Game = 1 Then
    $Pause_Game = 0
    ElseIf $Pause_Game = 0 Then
    $Pause_Game = 1
    EndIf
    EndFunc

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

    Func __Function_Move_Snake()
    If $Last_Pressed = 1 Then
    ControlMove($Form_Snaky,"",$Pic_Snake[1],$Snake_Pos[1][0]-20,$Snake_Pos[1][1],20,20)
    ElseIf $Last_Pressed = 2 Then
    ControlMove($Form_Snaky,"",$Pic_Snake[1],$Snake_Pos[1][0],$Snake_Pos[1][1]-20,20,20)
    ElseIf $Last_Pressed = 3 Then
    ControlMove($Form_Snaky,"",$Pic_Snake[1],$Snake_Pos[1][0]+20,$Snake_Pos[1][1],20,20)
    ElseIf $Last_Pressed = 4 Then
    ControlMove($Form_Snaky,"",$Pic_Snake[1],$Snake_Pos[1][0],$Snake_Pos[1][1]+20,20,20)
    EndIf
    For $i = 2 To 160 -1
    ControlMove($Form_Snaky,"",$Pic_Snake[$i],$Snake_Pos[$i-1][0],$Snake_Pos[$i-1][1],20,20)
    If $i > $Food_Counter And $Food_Counter > 0 Then
    ExitLoop
    EndIf
    Next
    EndFunc

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

    Func __Function_Move_Food()
    Local $xF,$yF,$Temp=0
    GUICtrlSetState($Pic_Food,$GUI_HIDE)
    Do
    $Temp=0
    Do
    $xF = Random(20,600,1)
    Until Mod($xF,20) = 0
    Do
    $yF = Random(20,440,1)
    Until Mod($yF,20) = 0
    For $i = 1 To 160 -1
    If $Snake_Pos[$i][0] = $xF And $Snake_Pos[$i][1] = $yF Then
    $Temp = 1
    EndIf
    Next
    Until $Temp = 0
    ControlMove($Form_Snaky,"",$Pic_Food,$xF,$yF,20,20)
    GUICtrlSetBkColor($Pic_Food,0xFF0000)
    GUICtrlSetState($Pic_Food,$GUI_SHOW)
    EndFunc

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

    Func __Function_Exit()
    Exit
    EndFunc

    [/autoit]

    Kritik bitte nur mit Verbesserungsvorschlag, sonstiges Feedback gerne.

  • Gui [help]

    • iFimOnl1n3
    • 14. Januar 2015 um 06:04

    Probier dich mal an Arrays aus .. ein Beispiel

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 615, 437, 391, 262)

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

    Local $Checkbox = [ _
    GUICtrlCreateCheckbox("Bild 1", 312, 144, 97, 17), _
    GUICtrlCreateCheckbox("Bild 2", 312, 176, 79, 25) _
    ]

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

    $Button1 = GUICtrlCreateButton("Start", 288, 264, 75, 25)
    GUISetState(@SW_SHOW)

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

    Local $Names = [ _
    @DesktopDir & "\Unbenannt.jpg", _
    @DesktopDir & "\lol.jpg", _
    @DesktopDir & "\Unbenannt1.jpg", _
    @DesktopDir & "\lol1.jpg", _
    @DesktopDir & "\Unbenannt2.jpg", _
    @DesktopDir & "\lol2.jpg" _
    ]

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    For $i = 0 To UBound($Checkbox) -1
    If BitAND(GUICtrlRead($Checkbox[$i]), $GUI_CHECKED) = $GUI_CHECKED Then ShellExecute($Names[$i])
    Next
    EndSwitch
    WEnd

    [/autoit]


    Darauf achten das erste Bild in der Liste gehört zur ersten Checkbox.

    [autoit]

    Local $Names = [ _
    @DesktopDir & "\Unbenannt.jpg", _
    @DesktopDir & "\lol.jpg", _
    @DesktopDir & "\Unbenannt1.jpg", _
    @DesktopDir & "\lol1.jpg", _
    @DesktopDir & "\Unbenannt2.jpg", _
    @DesktopDir & "\lol2.jpg" _
    ]

    [/autoit]


    Diese Liste kannst Du dir auch sparen indem man die Dateien einfach im Ordner schon gleich benennt und sie mit einer Zahl am Ende unterscheidet. --> Bild[1].jpg oder Bild_1.jpg
    Folgende Zeile müsste dann so aussehen:

    [autoit]

    If BitAND(GUICtrlRead($Checkbox[$i]), $GUI_CHECKED) = $GUI_CHECKED Then ShellExecute(@DesktopDir & "\Bild[" & $i & "].jpg")

    [/autoit]

    ..eventuell den Pfad zu den Bilderordner anpassen.

  • Ftp Zeile aus txt dokument lesen

    • iFimOnl1n3
    • 14. Januar 2015 um 05:20

    _FTP_ListtoArray
    hilft nur bei Dateinamen und dem Verzeichnisbaum.

    Denke es klappt nicht weil bei bplaced die fsocks gesperrt sind beim kostenlosen Account.
    Square7 sollen offen sein oder was ich bevorzuge 000webhost..zumindest für kleinere Projekte.

    Bei bplaced hab ich das auch nicht gleich herausgefunden warum ich da mal nicht weiterkam.
    Eine Lösung wäre es bei bplaced über eine .php Datei zu arbeiten.
    Mit dem Autoit Befehl SetUserAgent kann man per PhP den UserAgendString abfragen und somit nur eine Abfrage der .php Seite über das Programm erlauben.(Insofern sich niemand die Mühe macht und seinen UserAgentString im Browser zu faken. Solche User erreichen früher oder später sowieso ihre Ziele da sie sich auskennen.)

    Du möchtest bestimmt auch in die .txt schreiben können doch wenn sie Sockets zu sind wird auch das nicht klappen über ein Programm. Daher müsstest Du ebenfalls die Einträge über die .php Datei steuern.
    Ein Vorteil daran wäre man könnte so einen Chat auf beiden Seiten mit einer Database errichten. Dann ist für das aktualisieren des Chatframes optimalerweise ein bisschen Java notwendig.

    Falls Du es an den geschlossenen Sockets liegt und Du dich für einen anderen Anbieter entscheidest mit "open fsocks" und in deiner Datei die Loginnamen zum Server angibst denk daran dies sicher zu machen.
    -Loginname und Passwort vom FTP sollten sehr unauffällig sein und schon eher wie Spam aussehen.
    zB.: "fsfjidsfihj90878897((()njuhf7uwtr"
    Für den Fall das man bei einem laufenden Programm den Arbeitsspeicher ausliest fallen normale Wörter einem als erstes auf.
    -Das vermeiden von Variablen die den Wert der Logindaten haben sogut es eben geht und ebenfalls wichtig falls solche Variablen eingesetzt werden sie vor und nach der Nutzung zu LEEREN bzw. LEER zu lassen.
    -Die Daten verschlüsseln (_Crypt_EncryptData ) und den Schlüssel ebenfalls verschlüsseln.. dies wiederholen ein paar mal oder eigene Tricks einbauen. Eigene Tricks wie String splitten nach X beliebigen Zeichen und anders wieder zusammen setzen.

    Grüße und viel Erfolg!

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™