minesweeper rechtsklicksklick button

  • Halle alle zusammen,

    ich bastel nebenbei mal so aus spaß an ner minesweep copy, da wir auf arbeit das nicht installt haben und ich keine regestrie einträge oder exes rumliegen haben will ;)

    ansich funktionierts schon, ist ja auch kein ding, allerdings würd ich gerne ne mienenmarkierung vom user zu lassen, wie das orignal halt auch.
    nur blöd das als msgevent nur links klicks, oder auch rechtsklick, dann aber im allgemeinen egal wohin, gemeldet werden.

    sprich ich brauch ne lösung um rechtsklicks auf den button getrennt zu behandeln.
    falls wer das ganze dann am ende haben will, kann ichs auch posten, ist ja ne kleinigkeit an script :)

    ach noch was nebenbei, aktuell hab ich auch felder mit 0 mienen im umkreis, das ersetzt dieses "flächenaufdecken" vom original.
    teilweise trozdem recht schwer... vll ne idee wie ich das flächendecken einbauen und die 0 weglassen kann ?
    aktuelles füllverfahren:
    - alle felder des arrays durchgehen
    - per random entscheiden ob eine miene platziert wird, aktuelles verhältnis 2:5, vll schwierigkietsgrade einbauen ? wäre net schwer
    - wieder alle durchgehen und noch leere felder mit den countern füllen
    - counter ergibt sich aus 2 vorschleifen und ner if abfrage die um den punk herumkreisen, einfaches ding.

    noch was hihi, wollte das level eig per menü einbauen, wie rest auch. und die items dann mit nem radio parameter bestücken, geht soweit auch.
    nur leider kann ich da keinen eintrag vorselektieren, jemand ne idee ?

    Einmal editiert, zuletzt von Barra Sargtlin (23. Oktober 2009 um 15:46)

  • Spoiler anzeigen
    [autoit]


    Elseif ($gui_msg == $GUI_EVENT_PRIMARYDOWN) Then ;linksklick, aber auf keinen der anderen buttons
    Local $array = GUIGetCursorInfo()
    For $x = 0 To ubound($gui_field,1)-1
    For $y = 0 To ubound($gui_field,2)-1
    If ($array[4] == $gui_field[$x][$y]) Then
    GUICtrlSetData($gui_field[$x][$y], $feld[$x][$y])
    If ($feld[$x][$y] == "x") Then
    GUICtrlSetBkColor($gui_field[$x][$y], 0xCC3300)
    If (msgbox(4, "Minesweeper", "Game Over !" & @crlf & "Want you a restart ?") == 6) Then
    _restart($zise)
    Else
    exit(0)
    Endif
    Else
    GUICtrlSetBkColor($gui_field[$x][$y], 0x33CC00)
    Endif
    Endif
    Next
    Next

    Elseif ($gui_msg == $GUI_EVENT_SECONDARYDOWN) Then ;rechtsklick
    Local $array = GUIGetCursorInfo()
    For $x = 0 To ubound($gui_field,1)-1
    For $y = 0 To ubound($gui_field,2)-1
    If ($array[4] == $gui_field[$x][$y]) Then
    If (GUICtrlRead($gui_field[$x][$y]) == "") Then
    GUICtrlSetData($gui_field[$x][$y], "o")
    GUICtrlSetBkColor($gui_field[$x][$y], 0xFF6600)
    Elseif (GUICtrlRead($gui_field[$x][$y]) == "o") Then
    GUICtrlSetData($gui_field[$x][$y], "")
    GUICtrlSetBkColor($gui_field[$x][$y], 0xFFFFFF)
    Endif
    Endif
    Next
    Next
    EndIf

    [/autoit]

    supi :) sicherlich nicht optimal und fertig, aber funktionabel.
    jetzt muss nur noch dieses random felder aufdecken funktionieren... naja werd ich mir mal paar gedanken zu machen.

    Einmal editiert, zuletzt von Barra Sargtlin (22. Oktober 2009 um 16:08)