Script kürzen durch Array?

  • Hallo, ich weiß das ich schon ein Thread bezüglich Array offen habe, aber ich bräuchte mal eure Hilfe.

    Spoiler anzeigen
    [autoit]


    $eos = Random(1,5,1)
    $sos = Random(5,15,1)
    $sts = Random(100,500,1)
    $ets = Random(15,50,1)

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

    $sop = Random(1,15,1)
    $eop = Random(1,15,1)
    $stp = Random(1,15,1)
    $etp = Random(1,15,1)

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

    $soh = Random(5,15,1)
    $eoh = Random(1,5,1)
    $eth = Random(15,50,1)
    $sth = Random(100,500,1)

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

    $etexp = Random(50,100,1)
    $soexp = Random(25,50,1)
    $eoexp = Random(10,25,1)
    $stexp = Random(200,500,1)

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

    $eomony = Random(1,5,1)
    $somony = Random(5,15,1)
    $etmony = Random(15,50,1)
    $stmony = Random(200,500,1)

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

    #Region ### START Koda GUI section ### Form=
    $kampfed = GUICreate("Kampf", 596, 211, 193, 128, BitOR($WS_MAXIMIZEBOX,$WS_SYSMENU,$WS_POPUP,$WS_TABSTOP))
    GUISetBkColor(0x000000)
    GUISetFont(10, 800, 0, "MS Sans Serif")
    $Group1 = GUICtrlCreateGroup("Einfacher Ork", 8, 8, 113, 193)
    GUICtrlSetColor(-1, 0xFF0000)
    $k1 = GUICtrlCreateButton("Kampf!", 24, 168, 75, 25)
    GUICtrlSetColor(-1, 0xFF0000)
    $s1 = GUICtrlCreateLabel("Sträke: " & $eos, 16, 24, 101, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $h1 = GUICtrlCreateLabel("Hirn: " & $eoh, 16, 40, 95, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $p1 = GUICtrlCreateLabel("Pech: " & $eop, 16, 56, 101, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $m1 = GUICtrlCreateLabel("Money: " & $eomony, 16, 144, 101, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $e1 = GUICtrlCreateLabel("EXP: " & $eoexp, 16, 128, 96, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $closed = GUICtrlCreateButton("Close", 256, 168, 75, 25)
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetColor(-1, 0xFF0000)
    $Group2 = GUICtrlCreateGroup("Starker Ork", 128, 8, 121, 193)
    GUICtrlSetColor(-1, 0xFF0000)
    $k2 = GUICtrlCreateButton("Kampf!", 152, 168, 75, 25)
    GUICtrlSetColor(-1, 0xFF0000)
    $s2 = GUICtrlCreateLabel("Stärke: " & $sos, 136, 24, 109, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $h2 = GUICtrlCreateLabel("Hirn: " & $soh, 136, 40, 103, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $p2 = GUICtrlCreateLabel("Pech: " & $sop, 136, 56, 101, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $m2 = GUICtrlCreateLabel("Money: " & $somony, 136, 144, 105, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $e2 = GUICtrlCreateLabel("EXP: " & $soexp, 136, 128, 104, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group3 = GUICtrlCreateGroup("Einfacher Troll", 336, 8, 121, 193)
    GUICtrlSetColor(-1, 0xFF0000)
    $k3 = GUICtrlCreateButton("Kampf!", 360, 168, 75, 25)
    GUICtrlSetColor(-1, 0xFF0000)
    $s3 = GUICtrlCreateLabel("Stärke: " & $ets, 344, 24, 109, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $h3 = GUICtrlCreateLabel("Hirn: " & $eth, 344, 40, 109, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $p3 = GUICtrlCreateLabel("Pech: " & $etp, 344, 56, 109, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $m3 = GUICtrlCreateLabel("Money: " & $etmony, 344, 144, 109, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $e3 = GUICtrlCreateLabel("EXP: " & $etexp, 344, 128, 104, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group4 = GUICtrlCreateGroup("Starker Troll", 464, 8, 121, 193)
    GUICtrlSetColor(-1, 0xFF0000)
    $k4 = GUICtrlCreateButton("Kampf!", 488, 168, 75, 25)
    GUICtrlSetColor(-1, 0xFF0000)
    $s4 = GUICtrlCreateLabel("Stärke: " & $sts, 472, 24, 109, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $h4 = GUICtrlCreateLabel("Hirn: " & $sth, 472, 40, 103, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $p4 = GUICtrlCreateLabel("Pech: " & $stp, 472, 56, 109, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $m4 = GUICtrlCreateLabel("Money: " & $stmony, 472, 144, 101, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $e4 = GUICtrlCreateLabel("EXP: " & $stexp, 472, 128, 104, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 2
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $closed
    WinSetTrans($menu2,"",255)
    GUIDelete($kampfed)
    ExitLoop

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

    Case $k1
    GUIDelete($kampfed)
    $charcheck = IniRead(@tempdir &"\7466577\game\dal.cc","User","Char","")
    if $charcheck = "Krieger" then
    $mys = IniRead(@tempdir &"\7466577\game\dal.cc","Krieger","Stärke","")
    $myh = IniRead(@tempdir &"\7466577\game\dal.cc","Krieger","Hirn","")
    $myg = IniRead(@tempdir &"\7466577\game\dal.cc","Krieger","Glück","")
    $myp = IniRead(@tempdir &"\7466577\game\dal.cc","Krieger","Pech","")
    Else
    EndIf

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

    if $charcheck = "Bogi" then
    $mys = IniRead(@tempdir &"\7466577\game\dal.cc","Bogi","Stärke","")
    $myh = IniRead(@tempdir &"\7466577\game\dal.cc","Bogi","Hirn","")
    $myg = IniRead(@tempdir &"\7466577\game\dal.cc","Bogi","Glück","")
    $myp = IniRead(@tempdir &"\7466577\game\dal.cc","Bogi","Pech","")
    Else
    EndIf

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

    $bog = $mys + $myg
    $geg = $eos + $eoh
    $k1s = $bog - $geg
    $name = IniRead(@tempdir &"\7466577\game\dal.cc","Char","name","")
    SplashTextOn("Kampf","Einfacher Ork Runde 1",-1,85,-1,-1,Default,Default,15)
    Sleep(3000)
    SplashTextOn("Runde 1", $name & " greift an: Stärke " & $mys & " vs " & "Gegner Stärke " & $eos,-1,85,-1,-1,Default,Default,15)
    Sleep(3000)
    SplashOff()
    if $k1s < 0 then
    SplashTextOn("Runde 1","Gewonnen hat der Gegner",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()
    IniWrite(@tempdir & "\7466577\game\match.cc","Stats","Gegner","1")
    else
    SplashTextOn("Runde 1","Gewonnen hast du",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()
    IniWrite(@tempdir & "\7466577\game\match.cc","Stats","Ich","1")
    EndIf

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

    $bog2 = $myp + $myh
    $geg2 = $eoh + $eop
    $k1s2 = $bog2 - $geg2
    SplashTextOn("Kampf","Einfacher Ork Runde 2",-1,85,-1,-1,Default,Default,15)
    Sleep(3000)
    SplashTextOn("Runde 2","Gegner greift an: Hirn " & $eoh & " vs " & $name &" Hirn " & $myh,-1,85,-1,-1,Default,Default,15)
    Sleep(3000)
    SplashOff()
    if $k1s2 < 0 then
    SplashTextOn("Runde 2","Gewonnen hat der Gegner",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()
    $siegcheck = IniRead(@tempdir &"\7466577\game\match.cc","Stats","Gegner","")
    $sieg = $siegcheck + 1
    IniWrite(@tempdir & "\7466577\game\match.cc","Stats","Gegner",$sieg)
    else
    SplashTextOn("Runde 2","Gewonnen hast du",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()
    $siegcheck = IniRead(@tempdir &"\7466577\game\match.cc","Stats","Ich","")
    $sieg = $siegcheck + 1
    IniWrite(@tempdir & "\7466577\game\match.cc","Stats","Ich",$sieg)
    EndIf

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

    $geg3 = $eoh + $eos
    $bog3 = $mys + $mys
    $k1s3 = $bog3 - $geg3
    SplashTextOn("Kampf"," Einfacher Ork Runde 3",-1,85,-1,-1,Default,Default,15)
    Sleep(3000)
    SplashTextOn("Runde 3","Gegner greift an: Hirn " & $eoh & " vs " & $name & " Hirn " & $myh,-1,85,-1,-1,Default,Default,15)
    Sleep(3000)
    SplashOff()
    if $k1s3 < 0 then
    SplashTextOn("Runde 3","Gewonnen hat der Gegner",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()
    $siegcheck = IniRead(@tempdir &"\7466577\game\match.cc","Stats","Gegner","")
    $sieg = $siegcheck + 1
    IniWrite(@tempdir & "\7466577\game\match.cc","Stats","Gegner",$sieg)
    else
    SplashTextOn("Runde 3","Gewonnen hast du",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()
    $siegcheck = IniRead(@tempdir &"\7466577\game\match.cc","Stats","Ich","")
    $sieg = $siegcheck + 1
    IniWrite(@tempdir & "\7466577\game\match.cc","Stats","Ich",$sieg)
    EndIf

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

    local $winich = IniRead(@tempdir &"\7466577\game\match.cc","Stats","Ich","")
    Switch $winich
    Case 1 to 1
    SplashTextOn("Endmatch","Du hast leider Verloren",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()
    Case 2 to 2
    SplashTextOn("Endmatch","Du hast " & $eoexp & " EXP, "& $eomony & " Money Gewonnen",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()
    if $charcheck = "Bogi" Then
    SplashTextOn("Win","Du hast " & $eoexp & " EXP, "& $eomony & " Money Gewonnen",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()
    $expcheck = IniRead(@tempdir &"\7466577\game\dal.cc","Bogi","EXP","")
    $expsieg = $expcheck + $eoexp
    IniWrite(@tempdir &"\7466577\game\dal.cc","Bogi","EXP",$expsieg)
    $winsea = IniRead(@tempdir &"\7466577\game\dal.cc","Bogi","Wins","")
    $winset = $winsea + 1
    IniWrite(@tempdir &"\7466577\game\dal.cc","Bogi","Wins",$winset)
    $mo = IniRead(@tempdir &"\7466577\game\dal.cc","Bogi","Money","")
    $winmon = $mo + $eomony
    IniWrite(@tempdir &"\7466577\game\dal.cc","Bogi","Money",$winmon)
    else
    endif
    if $charcheck = "Krieger" Then
    SplashTextOn("Win","Du hast " & $eoexp & " EXP, "& $eomony & " Money Gewonnen",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()
    $expcheck = IniRead(@tempdir &"\7466577\game\dal.cc","Krieger","EXP","")
    $expsieg = expcheck + $soexp
    IniWrite(@tempdir &"\7466577\game\dal.cc","Krieger","EXP",$expsieg)
    $winsea = IniRead(@tempdir &"\7466577\game\dal.cc","Bogi","Wins","")
    $winset = $winsea + 1
    IniWrite(@tempdir &"\7466577\game\dal.cc","Krieger","Wins",$winset)
    $mo = IniRead(@tempdir &"\7466577\game\dal.cc","Krieger","Money","")
    $winmon = $mo + $eomony
    IniWrite(@tempdir &"\7466577\game\dal.cc","Krieger","Money",$winmon)
    Else
    EndIf
    Case 3 to 3
    SplashTextOn("Endmatch","Du hast " & $eoexp & " EXP Gewonnen",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()
    if $charcheck = "Krieger" Then
    SplashTextOn("Win","Du hast " & $eoexp & " EXP, "& $eomony & " Money Gewonnen",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()
    $expcheck = IniRead(@tempdir &"\7466577\game\dal.cc","Krieger","EXP","")
    $expsieg = expcheck + $soexp
    IniWrite(@tempdir &"\7466577\game\dal.cc","Krieger","EXP",$expsieg)
    $winsea = IniRead(@tempdir &"\7466577\game\dal.cc","Bogi","Wins","")
    $winset = $winsea + 1
    IniWrite(@tempdir &"\7466577\game\dal.cc","Krieger","Wins",$winset)
    $mo = IniRead(@tempdir &"\7466577\game\dal.cc","Krieger","Money","")
    $winmon = $mo + $eomony
    IniWrite(@tempdir &"\7466577\game\dal.cc","Krieger","Money",$winmon)
    Else
    EndIf
    if $charcheck = "Bogi" Then
    SplashTextOn("Win","Du hast " & $eoexp & " EXP, "& $eomony & " Money Gewonnen",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()
    $expcheck = IniRead(@tempdir &"\7466577\game\dal.cc","Bogi","EXP","")
    $expsieg = $expcheck + $eoexp
    IniWrite(@tempdir &"\7466577\game\dal.cc","Bogi","EXP",$expsieg)
    $winsea = IniRead(@tempdir &"\7466577\game\dal.cc","Bogi","Wins","")
    $winset = $winsea + 1
    IniWrite(@tempdir &"\7466577\game\dal.cc","Bogi","Wins",$winset)
    $mo = IniRead(@tempdir &"\7466577\game\dal.cc","Bogi","Money","")
    $winmon = $mo + $eomony
    IniWrite(@tempdir &"\7466577\game\dal.cc","Bogi","Money",$winmon)
    else
    endif
    case Else
    SplashTextOn("Endmatch","Du hast leider Verloren",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()
    EndSwitch

    [/autoit]

    Kann man sowas kürzen ????

    MFG, Danke im vorraus für wirklich helfer

    :):):):)

    Eine Antwort :D

  • Was genau möchtest du kürzen? Die Codelänge/Anzahl der Zeichen, die Anzahl der Anweisungen,...?
    Generell kannst du alles kürzen was sich durch eine andere Funktion ausdrücken lässt (For-Schleife sofern auf Basis einer mathematischen Grundlage/Reihe) oder eben oft auftritt, wie z.b. deine Labels Attribute im GUI Bereich (GUICtrlSetColor(-1, 0xFF0000)). So könntest du diese Labels in ein Array überführen, und für jedes Element diese Funktion aufrufen. Ich verwende hierzu immer oft extra Funktionen, da die lesbarkeit oft bei Kürzungen leidet , um wenigstens noch etwas den Überblick zu behalten:

    Spoiler anzeigen
    [autoit]


    $a[0] = GUICtrlCreateButton("Kampf!", 24, 168, 75, 25)
    $a[1] = GUICtrlCreateLabel("Sträke: " & $eos, 16, 24, 101, 17)
    $a[2] = GUICtrlCreateLabel("Hirn: " & $eoh, 16, 40, 95, 17)
    $a[3] = GUICtrlCreateLabel("Pech: " & $eop, 16, 56, 101, 17)
    $a[4] = GUICtrlCreateLabel("Money: " & $eomony, 16, 144, 101, 17)
    $a[5] = GUICtrlCreateLabel("EXP: " & $eoexp, 16, 128, 96, 17)
    _ColorizeLabels($a,0xFF0000)

    [/autoit]

    Und die Funktion:

    Spoiler anzeigen
    [autoit]


    ;Färbt übergebenen Array $a in $color
    Func _ColorizeLabels($a,$color)
    For $x = 0 To Ubound($a) -1
    GUICtrlSetColor($a[$x], $color)
    Next
    EndFunc ;==> _ColorizeLabels

    [/autoit]


    So musst du für die 4 Varianten (Ork/Troll) nur jeweils _ColorizeLabels aufrufen, dürfte so etwa 25 Zeilen einsparen.
    Dann könnte man bei

    Spoiler anzeigen
    [autoit]


    SplashTextOn("Win","Du hast " & $eoexp & " EXP, "& $eomony & " Money Gewonnen",-1,85,-1,-1,default,default,15)
    Sleep(3000)
    SplashOff()

    [/autoit]


    weitermachen nach den Case-Überprüfungen, auch wieder durch eine Funktion (_ShowWinText?).
    Aber ich denke es ware generell kürzer, anstatt zig Variablen für jedes Attribut (EinfachOrk-Hirn) zu erstellen, für jeden Gegner ein Array mit all sienen Attributen zu erstellen, oder für jedes Attribut ein Array. Aber das ist nur meine Meinung

    3 Mal editiert, zuletzt von draien (21. Januar 2015 um 12:53)

  • Oke das habe ich soweit verstanden, aber wie optimiere ich jetzt die eigenschaften, das habe ich noch nicht so verstanden.

    Rechtsklick -> Eigenschaften -> Optimieren klicken...

    Spoiler anzeigen


    Spaß beiseite. Was meinst du mit optimieren? Wie oben: Was meinst du mit kürzen? Was genau willst du haben/machen?