3 - in a row - automatisierung!

  • Aaaalso,

    ich habe ein Spielfeld mit 8x8 Felden. In diesen Feldern sitzen Bilder, von denen es 6 verschiedene gibt. Also, es gibt 64 Felder, welche zufällig mit einem von 6 verschiedenen "smilies" besetzt sind. Ziel ist es immer 3 oder mehr gleiche Bilder nebeneinander zu bekommen. Wagrecht, oder senkrecht - nicht diagonal! Bewegen kann man die Bilder immer nur um ein Feld und dann nur, wenn sich eine passende kombination ergibt!!! Bewegt werden die Bilder/Felder/Smilies durch einmal anklicken und dann nochmals ins Zielfeld klicken! ;D

    Hatte selber eigentlich gedacht, es wäre kein Problem aber irgendwie bekomme ich schon Probleme beim ersten auslesen vom Spielfeld... -.-

    Hab mir gedacht das über ne routine zu machen die pixelchecksums von jedem feld (a1,a2,a3[....]h5,h6,h7,h8) ausliest und die daten dann in ner ?? . ini ?? speichert...

    welche dann von ner andern routine ausgewertet wird, um einen Zug zu machen... ! oder falscher weg?

    bernd670: Thema verschoben!

    Einmal editiert, zuletzt von punkratz0815 (4. Juli 2007 um 13:26)

  • Zitat

    Original von punkratz0815
    bin ehrlich gesagt absoluter coding-nuub... ;D wäre also auch über ein kompletten script, den ich nur copieren muss froh.. ;)


    kurz:sowas gibts hier nicht...eigeninitiative ist gefragt....wenn konkrete fragen bestehen dann helfen sicher einige gern weiter!! aber so kommt das rüber nach "ahh ich hab keine lust..macht ihr mal".....und das wird kaum einer unterstützen ;)
    versuch es dochmal erstmal selbst zu lösen und bei problemen kannste ruhig bescheid sagen...dann helfen wir auch gern weiter(hast ja schon nen halben lösungsweg versuchs doch mal mit dem!)

    snoozer

  • brrr.... :D


    wollte ja auch nicht wirklich den gesamten code haben! ;D

    nur evtl ein paar konstruktive Kritik-Punkte wie ich das am beseten Löse! ;D

    das selber knobeln is ja grad das, was daran Spaß macht! Nur wie gesagt, hab bis jetzt noch keinen wirklich vernünftigen Ansatz gefunden der mehr bringt als nur debugger-meldungen.... -.-

    Edit:

    [autoit]

    for $b = 0 to 7
    for $a = 0 to 7
    $cs = PixelChecksum(302+$a*$x,214+$b*$x,352+$a*$x,264+$b*$x,0)
    IniWrite("check.ini","minig",$b & $a, $cs)
    Next
    Next

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

    $a = x-wert(vertikal) / $a*$x = spalte
    $b = y-wert(senkrecht) / $b*$x = reihe....

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

    $cs = checksum... ;)

    [/autoit]


    das is bis jetzt meine routine
    in der ini steht dann zB 12=2156445612 oder sowas!
    wobei 12 bedeutet zeile 1 reihe 2 und dann die entsprechende checksum kommt! :D

    aber ich hab irgendwie 77 einträge in der ini statt nur 64(für 8x8 felder) ...
    außerdem immer n = als ersten eintrag... kann mir das grad nicht erklären! ;D
    8|

    bernd670: Post zusammengefasst, bitte keine Mehrfachposts!

  • ahhso okay...dann kams falsch rüber ;)
    ich versth dein projekt aber noch nicht genau.....also du hast ein feld 8x8....in jedem feld haste ein (teil)bild....und die willst unterm strich mit klicken oder was auch immer das gesamte bild zusammen bekommen oder was? klär mal bitte dein vorhaben noch genauer dann können wir auch besser helfen :)

    Ps:editier beim nächsten mal bitte deinen post ;)

    snoozy

    • Offizieller Beitrag

    Es können nur 64 Einträge sein, die 77 steht ja nach deiner Vorgehensweise für Zeile 7 und Spalte 7. Wenn da 1 - 64 stehen soll muss die IniWrite Zeile so aussehen:

    [autoit]

    IniWrite("check.ini","minig",$b + $a*8, $cs)

    [/autoit]
  • macht es einen Unterschied zwischen "$a & $b" oder "$a + $b" ??

    Ich glaube schon! $a und $b sollen ja nicht addiert werden, sondern "getrennt" eingeschrieben werden dass wirklich ZeileSpalte=$cs da steht und nicht die summe aus zeile und spalte! (zeile5+spalte6 wäre = 11 und eben nicht 56)

    =)

    *BING*

    aber danke trotzdem Bernd, grad ist mir aufgefallen, dass die 77 ja stimmt... ist ja zeile 7 spalte 7.... *omg*

    • Offizieller Beitrag

    Hab ich doch geschrieben, ich dachte nur Du wolltest es anders machen!

    Meine Formel ist übrigens $a * 8 + $b für Spalte5 und Zeile6 also 5 * 8 + 6 = 46.

  • aaaalso:

    meine check.ini sieht so aus:

    Spoiler anzeigen

    [minig]
    00=2067162805
    01=2888590141
    02=535923592
    03=2972619574
    04=1540652675
    05=2629350751
    06=2488916925
    07=182752896
    10=2447802279
    11=2870323108
    12=738912427
    13=1590863171
    14=4079046569
    15=2398422786
    16=1359377530
    17=2320609845
    20=1174167850
    21=1218365688
    22=248632689
    23=1944295763
    24=1912760797
    25=226297803
    26=3282796482
    27=817452631
    30=82194016
    31=3825808144
    32=3749692397
    33=270599180
    34=2695264042
    35=3791340700
    36=3994881726
    37=3181813196
    40=3123122695
    41=1755968358
    42=2843640266
    43=2478722469
    44=582678493
    45=2939242839
    46=3213383692
    47=336720214
    50=3877502394
    51=3047330607
    52=3614825739
    53=1198130990
    54=1964840991
    55=4005188526
    56=1095140124
    57=2483977912
    60=2925854921
    61=1674908059
    62=3167026405
    63=3628160982
    64=159195877
    65=3872072076
    66=4027808299
    67=3301167910
    70=1116443214
    71=3698059695
    72=2559650566
    73=2369705982
    74=3648244941
    75=2541317961
    76=1986806891
    77=10000150

    abgesehen davon , dass die werte noch nicht ganz stimmen, solle nun festgestellt werde, ob irgendwo die möglichkeit besteht einen 3er herzustellen! also quasi:

    wenn 10 + 11 gleich sind und 13 auch das selbet ist, kann ich 13 nach 12 verschieben um 10+11+12 als 3er zu haben...

    Zur Erinnerung: 11 bedeutet zeile1 spalte1; 12 zeile1 spalte2 etc :D

    @1:
    habe mal die lesefunktion ein wenig geändert, im Prinzip noch das selbe... nur ist es so hoffe ich nicht so anfällig wie mit den pixelchecksums... ;D

    Spoiler anzeigen
    [autoit]


    for $b = 0 to 7
    for $a = 0 to 7
    $cs = PixelChecksum(302+$a*$x,214+$b*$x,352+$a*$x,264+$b*$x,0)
    if PixelSearch(302+$a*$x,214+$b*$x,352+$a*$x,264+$b*$x, 16763895)<> @error then IniWrite ("check.ini","minig",$b & $a, "pink")
    if PixelSearch(302+$a*$x,214+$b*$x,352+$a*$x,264+$b*$x, 7068539) = @error then IniWrite ("check.ini","minig",$b & $a, "guen")
    if PixelSearch(302+$a*$x,214+$b*$x,352+$a*$x,264+$b*$x, 16772062) <> @error then IniWrite ("check.ini","minig",$b & $a, "braun")
    if PixelSearch(302+$a*$x,214+$b*$x,352+$a*$x,264+$b*$x, 15701644) <> @error then IniWrite ("check.ini","minig",$b & $a, "rot")
    if PixelSearch(302+$a*$x,214+$b*$x,352+$a*$x,264+$b*$x, 16768792) <> @error then IniWrite ("check.ini","minig",$b & $a, "gelb")
    if PixelSearch(302+$a*$x,214+$b*$x,352+$a*$x,264+$b*$x, 10260199)<> @error then IniWrite ("check.ini","minig",$b & $a, "blau")
    next
    Next

    [/autoit]

    da sich die Bilderchen alle Farblich sehr deutlich unterscheiden, müsste es so gehen! xD

    jetzt steht in meiner check.ini also:
    [...]
    00=gruen
    01=blau
    [...] etc!

    aber wie mache ich am besten die KI, dass er erkennt wo es möglichkeiten zu ziehen gibt? kennt sich damit wer aus?

    wie gestaltet sich eine "gute" und "schnelle" Ki - jedes feld, reihe und spalte mit einer einzelnen "if ... then" schleife abzufragen erscheint mir zu lang... und vor allem zu unübersichtlich(im code)... kann man das nicht irgendwie anders lösen?

    Spielregeln sind am Anfang erklärt, bei fragen Pm oder sowas ;D

    bernd670: Posts zusammengefasst, schon zum 2. mal, keine Mehrfachposts!