Jump to content
Sign in to follow this  
Kiti

Minesweeper bot: Advanced level in 1 second

Recommended Posts

I've made an effort towards a logic-based sweeper bot, any additions to the solver logic would be appreciated :)

<snip>
Edited by JLogan3o13

Share this post


Link to post
Share on other sites

sandin

Try this:

Run(@SystemDir & "\winmine.exe")
WinWaitActive("Minesweeper")
$speed = 10
Opt("MouseClickDelay", $speed)
Opt("MouseClickDownDelay", $speed)
WinGetHandle("Minesweeper")
WinMove("Minesweeper", "", 229, 187)
Send("xyzzy{LSHIFT}{ENTER}")
For $i = 0 To 8
    MouseMove(251, 299 + $i * 16, $speed)
    For $k = 0 To 8
        MouseMove(251 + $k * 16, 299 + $i * 16, $speed)
        $x = PixelGetColor(0, 0)
        If $x = 16777215 Then
            MouseClick("left")
        EndIf
    Next
Next

I'm almost 100% sure it will work. Then you can adjust $speed to the limit where it works. (Select the beginner mode)

it works!! :P

edit: min. speed it worked is 1, $speed = 1, on $speed = 0 it fails :)

Edited by sandin

Share this post


Link to post
Share on other sites

Sandin

I'm glad it worked :) . I've made a nice working GUI, but when i try to integrate it into the full script it doesn't work anymore.

Here's the stand alone, working version.

#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>

$Form2 = GUICreate("Wow !!! Did you saw that? Just 1 second!", 378, 126, 302, 282)
GUISetIcon("D:\002.ico")
$Button1 = GUICtrlCreateButton("Play again", 15, 80, 75, 25, 0)
$Button2 = GUICtrlCreateButton("Slow motion", 105, 80, 75, 25, 0)
$Button3 = GUICtrlCreateButton("Didn't work?", 280, 80, 75, 25, 0)
$Label2 = GUICtrlCreateLabel("", 104, 88, 4, 4)
$Button4 = GUICtrlCreateButton("Spiral Motion", 190, 80, 75, 25, 0)
$Label1 = GUICtrlCreateLabel("Please select one of the folowing options:", 88, 32, 200, 17)
GUISetState(@SW_SHOW)


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            MsgBox(64, "Ok...", "Bye- Bye !!!" & @CRLF & "" & @CRLF & "               Regards," & @CRLF & "                        Kiti    ")
            GuiDelete("slider1")
            Exit
        Case $Button1
                MsgBox(64, "Ok then, one more shot", "Please select the level again")
        Case $Button2
            MsgBox(64, "Ok then, slow motion", "Please select the level again" & @CRLF & "Tip: Select Beginner for better experience!")
            Global $a = 1
            GUISetState(@SW_SHOW)
        Case $Button3
            GUIDelete()
            GUICreate("Slider", 220, 120)
            GUICtrlCreateLabel("Select the desired mouse speed:", 10, 10)
            GUICtrlCreateLabel("0", 17, 60)
            GUICtrlCreateLabel("10", 194, 60)
            GUISetBkColor(0xECE9D8)
            $slider1 = GUICtrlCreateSlider(10, 35, 200, 20)
            GUICtrlSetLimit(-1, 10, 0)
            $button = GUICtrlCreateButton("Value?", 75, 80, 70, 20)
            GUISetState()
            GUICtrlSetData($slider1, 1)
            Do
                $msg = GUIGetMsg()

                If $msg = $button Then
                    MsgBox(0, "slider1", GUICtrlRead($slider1), 2)
                EndIf
            Until $msg = $GUI_EVENT_CLOSE
        Case $Button4

    EndSwitch
WEndoÝ÷ Ø    ÝêÞÝý²)íz
ÚµçbÚ-ë®*m"×hzÉ÷öÜ(®F®¶­sb6æ6ÇVFRfÇC´uT6öç7FçG4WæS2fwC°¢6æ6ÇVFRfÇC´uT6öç7FçG2æS2fwC°¢6æ6ÇVFRfÇC´uT6öç7FçG4WæS2fwC° ¦vÆö&Âb33c¶ÒÂb33c¶"ÒÂb33c¶2Ò ¤÷BgV÷C´Ö÷W6T6Æ6´FVÆgV÷C²Âb33c¶2¤÷BgV÷C´Ö÷W6T6Æ6´F÷väFVÆgV÷C²Âb33c¶2¤÷BgV÷C´uTöäWfVçDÖöFRgV÷C²Â ¤×6t&÷cBÂgV÷C´VÆÆòb333²gV÷C²ÂgV÷CµF226ööÂ67&Bv66öÇfW2ÖæW7vVWW"âöæÇ6V6öæBb333²Fò÷RvçBFò6VRCògV÷C²¥'Vâ77FVÔF"fײgV÷C²b3#·væÖæRæWRgV÷C²¥våvD7FfRgV÷C´ÖæW7vVWW"gV÷C²¥vävWDæFÆRgV÷C´ÖæW7vVWW"gV÷C²¥väÖ÷fRgV÷C´ÖæW7vVWW"gV÷C²ÂgV÷C²gV÷C²Â##Âr¥6VæBgV÷C·§§´Å4eG×´TåDU'ÒgV÷C² ¤vÆö&Âb33c¶wVÒuT7&VFRgV÷C´7W7FöÒ×6v&÷gV÷C²Â#Â#S¤uT7G&Ä7&VFTÆ&VÂgV÷CµÆV6R6Æ6²'WGFöâb333²gV÷C²Â¤vÆö&Âb33c·&FóÒuT7G&Ä7&VFU&FògV÷C´&VvææW"gV÷C²ÂÂcÂ#Â#¤vÆö&Âb33c·&"ÒuT7G&Ä7&VFU&FògV÷C´çFW&ÖVFFRgV÷C²ÂÂÂ#Â#¤vÆö&Âb33c·&Fó2ÒuT7G&Ä7&VFU&FògV÷C´WW'BgV÷C²ÂÂ#Â#Â#¤vÆö&Âb33c·&FóBÒuT7G&Ä7&VFU&FògV÷C´7W7FöÒgV÷C²ÂÂSÂ#Â#¤vÆö&Âb33c´'FâÒuT7G&Ä7&VFT'WGFöâgV÷C´vòVBgV÷C²ÂSÂÂÂ#¤uT7G&Å6WE7FFRb33c·&FóÂb33c´uTô4T4´TB¤uT7G&Å6WDöäWfVçBb33c´'FâÂgV÷C¶öå&W72gV÷C²¤uT6WDöäWfVçBb33c´uTôUdTåEô4Äõ4RÂgV÷C´öäWBgV÷C² ¤uT6WE7FFR ¥vÆR 6ÆVW¥tVæ@ £²ÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒgVæ7Föç2ÒÒÒÒÒÒÒÒÒÒÒÒÒÒФgVæ2öå&W72 b33c¶×6rÒuTvWD×6r 6VÆV7@ 66R&DäBuT7G&Å&VBb33c·&FóÂb33c´uTô4T4´TBÒb33c´uTô4T4´T@ uT6WE7FFR5uôDR vä7FfFRgV÷C´ÖæW7vVWW"gV÷C² våvD7FfRgV÷C´ÖæW7vVWW"gV÷C² Ö÷W6T6Æ6²gV÷C·&Ö'gV÷C²Â#S"Â##r Ö÷W6T6Æ6²gV÷C·&Ö'gV÷C²Â#S"Â#s vÆö&Âb33c¶ÒÒ vÆö&Âb33c¶âÒ 66R&DäBuT7G&Å&VBb33c·&Fó"Âb33c´uTô4T4´TBÒb33c´uTô4T4´T@ uT6WE7FFR5uôDR vä7FfFRgV÷C´ÖæW7vVWW"gV÷C² våvD7FfRgV÷C´ÖæW7vVWW"gV÷C² Ö÷W6T6Æ6²gV÷C·&Ö'gV÷C²Â#S"Â##r Ö÷W6T6Æ6²gV÷C·&Ö'gV÷C²Â#S"Â#2 vÆö&Âb33c¶ÒÒP vÆö&Âb33c¶âÒP 66R&DäBuT7G&Å&VBb33c·&2Âb33c´uTô4T4´TBÒb33c´uTô4T4´T@ uT6WE7FFR5uôDR vä7FfFRgV÷C´ÖæW7vVWW"gV÷C² våvD7FfRgV÷C´ÖæW7vVWW"gV÷C² Ö÷W6T6Æ6²gV÷C·&Ö'gV÷C²Â#S"Â##r Ö÷W6T6Æ6²gV÷C·&Ö'gV÷C²Â#S"Â3B vÆö&Âb33c¶ÒÒP vÆö&Âb33c¶âÒ# VæE6VÆV7@ ×6t&÷cBÂgV÷C´WfW'Færb33·26WBgV÷C²ÂgV÷Cµ&W72ö²vVâ÷Rb33·&R&VGgV÷C² bb33c¶"ÒFVà FööÅFgV÷C´Wb333²÷fW"W&Rb333²Fò÷R6VRÖSòW&RvöW2FR6÷VçFF÷vã¢gV÷C² VÇ6R FööÅFgV÷C´W&RvöW2FR6÷VçFF÷vã¢gV÷C² VæD` vÆö&Âb33c¶"Ò 6ÆVW# FööÅFgV÷C³2gV÷C² 6ÆVW FööÅFgV÷C³"gV÷C² 6ÆVW FööÅFgV÷C³gV÷C² 6ÆVW FööÅFgV÷C´vòb333²gV÷C² 6ÆVW FööÅFgV÷C²gV÷C² bb33c¶ÒFVà ÷BgV÷C´Ö÷W6T6ö÷&DÖöFRgV÷C²Â" ÷BgV÷CµVÄ6ö÷&DÖöFRgV÷C²Â" Æö6Âb33c¶FW6·F÷ÒvävWDæFÆRgV÷Cµ´4Ä53¥v÷&¶W%uÒgV÷C² Æö6Âb33c¶ÖæU7vVWÒvävWDæFÆRgV÷Cµ´4Ä53¤ÖæW7vVWW%ÒgV÷C² våvD7FfRb33c¶ÖæU7vVW Æö6Âb33c¶u÷2ÒvävWE÷2b33c¶ÖæU7vVW  f÷"b33c·ÒFòb33c¶Ð f÷"b33c·ÒFòb33c¶à b33c·2ÒB²b33c·¢b b33c·2ÒSr²b33c·¢b VÅ6V&6b33c·2ÒÂb33c·2Âb33c·2ÒÂb33c·2ÂdddddbÂÂBÂb33c¶ÖæU7vVW bæ÷BW'&÷"FVà Ö÷W6TÖ÷fRb33c·2Âb33c·2ÂR bVÄvWD6öÆ÷"ÂÂb33c¶FW6·F÷ÓÒdddddbFVà Ö÷W6T6Æ6²gV÷C·&Ö'gV÷C²Âb33c·2Âb33c·2 VÇ6P Ö÷W6T6Æ6²gV÷C·6V6öæF'gV÷C²Âb33c·2Âb33c·2 VæD` VæD` æW@ æW@ VÇ6P f÷"b33c¶ÒFòb33c¶Ð Ö÷W6TÖ÷fR#SÂ#²b33c¶¢b f÷"b33c¶²ÒFòb33c¶à Ö÷W6TÖ÷fR#S²b33c¶²¢bÂ#²b33c¶¢b b33c·ÒVÄvWD6öÆ÷" bb33c·Òcsss#RFVà Ö÷W6T6Æ6²gV÷C¶ÆVgBgV÷C² VÇ6P Ö÷W6T6Æ6²gV÷C·&vBgV÷C² VæD` æW@ æW@ VæD` FööÅFgV÷C´W'&b333²b333²b333²gV÷C² 6ÆVW# FööÅFgV÷C²gV÷C² ¢b33c´f÷&ÒÒuT7&VFRgV÷Cµv÷rb333²b333²b333²FB÷R6rFCò§W7B6V6öæBb333²gV÷C²Â3sÂ#bÂ3"Â#"¤uT6WD6öâgV÷C´C¢b3#²b3C³"æ6ògV÷C²¢b33c´'WGFöãÒuT7G&Ä7&VFT'WGFöâgV÷CµÆvâgV÷C²ÂRÂÂsRÂ#R¢b33c´'WGFöã"ÒuT7G&Ä7&VFT'WGFöâgV÷Cµ6Æ÷rÖ÷FöâgV÷C²ÂRÂÂsRÂ#R¢b33c´'WGFöã2ÒuT7G&Ä7&VFT'WGFöâgV÷C´FFâb33·Bv÷&³ògV÷C²Â#ÂÂsRÂ#R¢b33c´Æ&VÃ"ÒuT7G&Ä7&VFTÆ&VÂgV÷C²gV÷C²ÂBÂÂBÂB¢b33c´'WGFöãBÒuT7G&Ä7&VFT'WGFöâgV÷Cµ7&ÂÖ÷FöâgV÷C²ÂÂÂsRÂ#R¢b33c´Æ&VÃÒuT7G&Ä7&VFTÆ&VÂgV÷CµÆV6R6VÆV7BöæRöbFRföÆ÷vær÷Föç3¢gV÷C²ÂÂ3"Â#Âr¤uT6WE7FFR ¥vÆR ¢b33c¶ä×6rÒuTvWD×6rb33c´f÷&Ò 7vF6b33c¶ä×6p 66Rb33c´uTôUdTåEô4Äõ4P ×6t&÷cBÂgV÷C´ö²âââgV÷C²ÂgV÷C´'RÒ'Rb333²b333²b333²gV÷C²fײ5$ÄbfײgV÷C²gV÷C²fײ5$ÄbfײgV÷C²&Vv&G2ÂgV÷C²fײ5$ÄbfײgV÷C²¶FgV÷C² vä¶ÆÂgV÷C´ÖæW7vVWW"gV÷C² 66Rb33c´'WGFöã ×6t&÷cBÂgV÷C´ö²FVâÂç7FçB7VVBgV÷C²ÂgV÷CµÆV6R6VÆV7BFRÆWfVÂvâgV÷C² vÆö&Âb33c¶Ò 66Rb33c´'WGFöã  ×6t&÷cBÂgV÷C´ö²FVâÂ6Æ÷rÖ÷FöâgV÷C²ÂgV÷CµÆV6R6VÆV7BFRÆWfVÂvâgV÷C²fײ5$ÄbfײgV÷CµF¢6VÆV7B&VvææW"f÷"&WGFW"WW&Væ6Rb333²gV÷C² vÆö&Âb33c¶Ò uT6WE7FFR5uõ4õr 66Rb33c´'WGFöã0 uTFVÆWFRb33c´f÷&Ò uT7&VFRgV÷Cµ6ÆFW"gV÷C²Â##Â# uT7G&Ä7&VFTÆ&VÂgV÷Cµ6VÆV7BFRFW6&VBÖ÷W6R7VVC¢gV÷C²Â uT7G&Ä7&VFTÆ&VÂgV÷C³gV÷C²ÂrÂc uT7G&Ä7&VFTÆ&VÂgV÷C³gV÷C²ÂBÂc uT6WD&´6öÆ÷"T4SC b33c·6ÆFW#ÒuT7G&Ä7&VFU6ÆFW"Â3RÂ#Â# uT7G&Å6WDÆÖBÓ b33c¶'WGFöâÒuT7G&Ä7&VFT'WGFöâgV÷CµfÇVSògV÷C²ÂsRÂÂsÂ# uT6WE7FFR uT7G&Å6WDFFb33c·6ÆFW# Fð b33c¶×6rÒuTvWD×6r  bb33c¶×6rÒb33c¶'WGFöâFVà ×6t&÷ÂgV÷C·6ÆFW#gV÷C²ÂuT7G&Å&VBb33c·6ÆFW#Â" VæD` VçFÂb33c¶×6rÒb33c´uTôUdTåEô4Äõ4P 66Rb33c´'WGFöã@  VæE7vF6¥tVæ@ ¤VæDgVæ2³ÓÒfwC´öå&W70 ¤gVæ2öäWB W@¤VæDgVæ2³ÓÒfwC´öäW

I've made this some weeks ago, I'll review it now and maybe I can fix it.

Share this post


Link to post
Share on other sites

From 15 lines, now it's 280! I've fianlly finished the last version ! This includes a very improved GUI and 4 run types: Instant speed, slow motion while avoiding already filled blocks (thanks to SmOke_N for this), spiral motion and custom speed. Tell me what you think ! Here it is:

#include <GUIConstants.au3>

Opt("MouseClickDelay", 0)
Opt("MouseClickDownDelay", 0)
Opt("GUIOnEventMode", 1)

Global $a = 0, $b = 0, $speed = 0

MsgBox(64, "Hello!", "This is a cool script which solves Minesweeper in only 1 second ! Do you want to run it?")
Run(@SystemDir & "\winmine.exe")
WinWaitActive("Minesweeper")
WinGetHandle("Minesweeper")
WinMove("Minesweeper", "", 229, 187)
Send("xyzzy{LSHIFT}{ENTER}")


$Form3 = GUICreate("Form3", 317, 95, 348, 261)
GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
$Slider1 = GUICtrlCreateSlider(27, 12, 270, 29)
GUICtrlSetLimit($Slider1, 5, 0)
$Label1 = GUICtrlCreateLabel("0", 37, 48, 10, 17)
$Label2 = GUICtrlCreateLabel("5", 280, 48, 16, 17)
$Button1 = GUICtrlCreateButton("Set current speed", 112, 54, 100, 25, 0)
GUICtrlSetOnEvent($Button1, "Form3Button1Click")



$Form2 = GUICreate("Wow !!! Did you saw that ? Just 1 second !", 382, 129, 337, 274)
GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
$Label1 = GUICtrlCreateLabel("Please select one of the folowing options:", 89, 24, 203, 17)
$Button1 = GUICtrlCreateButton("Instant speed", 16, 80, 75, 25)
GUICtrlSetOnEvent($Button1, "Form2Button1Click")
$Button2 = GUICtrlCreateButton("Avoid filled cells", 100, 80, 83, 25)
GUICtrlSetOnEvent($Button2, "Form2Button2Click")
$Button3 = GUICtrlCreateButton("Spiral motion", 192, 80, 75, 25)
GUICtrlSetOnEvent($Button3, "Form2Button3Click")
$Button4 = GUICtrlCreateButton("Adjust speed", 288, 80, 75, 25, 0)
GUICtrlSetOnEvent($Button4, "Form2Button4Click")
$Group1 = GUICtrlCreateGroup("Play again in:", 8, 56, 265, 57)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Doesn't work? ", 280, 56, 89, 57)
GUICtrlCreateGroup("", -99, -99, 1, 1)




$Form1 = GUICreate("Form1", 209, 209, 393, 208)
GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
$Label1 = GUICtrlCreateLabel("Please check the level you want to solve !", 3, 8, 204, 17)
$Radio1 = GUICtrlCreateRadio("Beginner", 16, 56, 113, 17)
GUICtrlSetState($Radio1, $GUI_CHECKED)
$Radio2 = GUICtrlCreateRadio("Intermediate", 16, 88, 113, 17)
$Radio3 = GUICtrlCreateRadio("Expert", 16, 120, 113, 17)
$Button1 = GUICtrlCreateButton("Start !", 64, 160, 75, 25, 0)
GUICtrlSetOnEvent($Button1, "Button1Click")
GUISetState(@SW_SHOW)


While 1
    Sleep(100)
WEnd

Func Button1Click()
    $msg = GUIGetMsg()
    Select
        Case BitAND(GUICtrlRead($Radio1), $GUI_CHECKED) = $GUI_CHECKED
            GUISetState(@SW_HIDE)
            WinActivate("Minesweeper")
            WinWaitActive("Minesweeper")
            MouseClick("primary", 252, 227, 1, 0)
            MouseClick("primary", 252, 271, 1, 0)
            Global $m = 8
            Global $n = 8
        Case BitAND(GUICtrlRead($Radio2), $GUI_CHECKED) = $GUI_CHECKED
            GUISetState(@SW_HIDE)
            WinActivate("Minesweeper")
            WinWaitActive("Minesweeper")
            MouseClick("primary", 252, 227, 1, 0)
            MouseClick("primary", 252, 293, 1, 0)
            Global $m = 15
            Global $n = 15
        Case BitAND(GUICtrlRead($Radio3), $GUI_CHECKED) = $GUI_CHECKED
            GUISetState(@SW_HIDE)
            WinActivate("Minesweeper")
            WinWaitActive("Minesweeper")
            MouseClick("primary", 252, 227, 1, 0)
            MouseClick("primary", 252, 304, 1, 0)
            Global $m = 15
            Global $n = 29
    EndSelect
    _solve()
EndFunc   ;==>Button1Click



Func _solve()
    MsgBox(64, "Everything's set", "Press ok when you're ready !")
    If $b = 0 Then
        $t = 1000
        ToolTip("Hey! Over here! Do you see me? Here comes the countdown:")
        Sleep(4000)
    Else
        $t = 500
        ToolTip("Here comes the countdown:")
        Sleep(1000)
    EndIf
    Global $b = 1
    ToolTip("3")
    Sleep($t)
    ToolTip("2")
    Sleep($t)
    ToolTip("1")
    Sleep($t)
    ToolTip("Go!")
    Sleep($t)
    ToolTip("")
    If $a = 0 Then
        For $i = 0 To $m
            MouseMove(251, 299 + $i * 16, $speed)
            For $k = 0 To $n
                MouseMove(251 + $k * 16, 299 + $i * 16, $speed)
                $x = PixelGetColor(0, 0)
                If $x = 16777215 Then
                    MouseClick("left")
                Else
                    MouseClick("right")
                EndIf
            Next
        Next
    ElseIf $a = 1 Then
        Opt("MouseCoordMode", 2)
        Opt("PixelCoordMode", 2)
        Local $hDesktop = WinGetHandle("[CLASS:WorkerW]")
        Local $hMineSweep = WinGetHandle("[CLASS:Minesweeper]")
        Local $aWPos = WinGetPos($hMineSweep)

        For $y = 0 To $m
            For $x = 0 To $n
                $xc = 14 + ($x * 16)
                $yc = 57 + ($y * 16)
                PixelSearch($xc - 1, $yc, $xc - 1, $yc, 0xFFFFFF, 0, 14, $hMineSweep)
                If Not @error Then
                    MouseMove($xc, $yc, 5)
                    If (PixelGetColor(0, 0, $hDesktop) == 0xFFFFFF) Then
                        MouseClick("primary", $xc, $yc, 1, 0)
                    Else
                        MouseClick("secondary", $xc, $yc, 1, 0)
                    EndIf
                EndIf
            Next
        Next
    ElseIf $a = 2 Then
        Global $sp = 1; speed
        For $a = 0 To 7
            MouseMove(259 + $a * 16, 306, $sp)
            _check()
        Next
        For $b = 0 To 7
            MouseMove(372, 306 + $b * 16, $sp)
            _check()
        Next
        For $c = 0 To 7
            MouseMove(372 - $c * 16, 419, $sp)
            _check()
        Next
        For $d = 0 To 6
            MouseMove(259, 419 - $d * 16, $sp)
            _check()
        Next
        For $e = 0 To 6
            MouseMove(259 + $e * 16, 322, $sp)
            _check()
        Next
        For $f = 0 To 5
            MouseMove(356, 322 + $f * 16, $sp)
            _check()
        Next
        For $g = 0 To 5
            MouseMove(356 - $g * 16, 403, $sp)
            _check()
        Next
        For $h = 0 To 4
            MouseMove(275, 403 - $h * 16, $sp)
            _check()
        Next
        For $i = 0 To 4
            MouseMove(275 + $i * 16, 338, $sp)
            _check()
        Next
        For $j = 0 To 3
            MouseMove(340, 338 + $j * 16, $sp)
            _check()
        Next
        For $k = 0 To 3
            MouseMove(340 - $k * 16, 387, $sp)
            _check()
        Next
        For $l = 0 To 2
            MouseMove(291, 387 - $l * 16, $sp)
            _check()
        Next
        For $m = 0 To 2
            MouseMove(291 + $m * 16, 354, $sp)
            _check()
        Next
        For $n = 0 To 1
            MouseMove(324, 354 + $n * 16, $sp)
            _check()
        Next
        For $o = 0 To 1
            MouseMove(324 - $o * 16, 371, $sp)
            _check()
        Next
        MouseMove(307, 371, $sp)
        _check()
        MouseMove(307, 370, $sp)
        _check()
        MouseMove(308, 370, $sp)
        _check()
    EndIf
    
    ToolTip("Hurray !!!")
    Sleep(2000)
    ToolTip("")
    GUISetState(@SW_SHOW, $Form2)
EndFunc   ;==>_solve


Func Form2Button1Click()
    Global $a = 0
    GUISetState(@SW_HIDE, $Form2)
    MsgBox(64, "Instant speed then", "Please select what level you want")
    GUISetState(@SW_SHOW, $Form1)

EndFunc   ;==>Form2Button1Click
Func Form2Button2Click()
    Global $a = 1
    GUISetState(@SW_HIDE, $Form2)
    MsgBox(64, "Slow motion then", "Please select what level you want" & @CRLF & "Tip: Select Beginner for better experience")
    GUISetState(@SW_SHOW, $Form1)
EndFunc   ;==>Form2Button2Click
Func Form2Button3Click()
    Global $a = 2
    GUISetState(@SW_HIDE, $Form2)
    MsgBox(64, "Spiral motion then", "For this mode, only Beginner level is avaible")
    WinActivate("Minesweeper")
    WinWaitActive("Minesweeper")
    MouseClick("primary", 252, 227, 1, 0)
    MouseClick("primary", 252, 271, 1, 0)
    Global $m = 8
    Global $n = 8
    _solve()
EndFunc   ;==>Form2Button3Click
Func Form2Button4Click()
    GUISetState(@SW_HIDE, $Form2)
    MsgBox(64, "Too fast CPU", "This is sometimes caused by Dual Core CPUs, beeing to fast and actually skiping clicks." & @LF & "Please select the desired speed ! Tip: In most cases, 1 milisecond will be fine.")
    GUISetState(@SW_SHOW, $Form3)
EndFunc   ;==>Form2Button4Click

Func Form3Button1Click()
    GUISetState(@SW_HIDE, $Form3)
    MsgBox(64, "Speed set", "Mouse speed is now set to " & GUICtrlRead($Slider1) & " miliseconds." & @CRLF & "Select the level you want to play using this speed !")
    $speed = GUICtrlRead($Slider1)
    GUISetState(@SW_SHOW, $Form1)
EndFunc   ;==>Form3Button1Click

Func _check()
    $x = PixelGetColor(0, 0)
    If $x = 16777215 Then
        MouseClick("left")
    EndIf
EndFunc   ;==>_check

Func Close()
    WinKill("Minesweeper")
    GUISetState(@SW_HIDE, $Form1)
    GUISetState(@SW_HIDE, $Form2)
    MsgBox(64, "Ok...", "Bye- Bye !!!" & @CRLF & "" & @CRLF & "               Regards," & @CRLF & "                        Kiti    ")
    Exit 0
EndFunc   ;==>Close

Share this post


Link to post
Share on other sites

hello again,

this boy use different approach to problem. (not Autoit)

sort af 'ProcessMemory' and give delphi source on request...

(maybe is possible to obtain same result, if autoit handle )

very brillant !

m.

Edited by JLogan3o13

Share this post


Link to post
Share on other sites

@randomguy21 One of the reasons we encourage people not to resurrect 9 year old threads is because both the language and the forum are constantly evolving and growing. One of those evolutions would be the forum rules, which no longer permit the discussion of game automation. As you seem to have missed them on your way into the forum, I would suggest you read the forum rules before posting again.


"Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball

How to get your question answered on this forum!

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...