← Back to team overview

sikuli-driver team mailing list archive

[Question #268861]: Optimize Sikuli Minesweeper Solver

 

New question #268861 on Sikuli:
https://answers.launchpad.net/sikuli/+question/268861

I wrote a Minesweeper class which I'm using to import into the Sikuli IDE to solve a Minesweeper app I have on my Mac. Currently the program is working, but the method which searches through the game for different squares is very wasteful.

I have an array which holds a value for each individual square based on what it is. (1 for "One", 2 for "Two" ect.) Each time the search method runs, after a series of clicks have been made, it zeros the array and searches the entire game region to "refill" the array again. 

Example:

def parse_game(self):

     #Search for '1' Squares
     if self.game_reg.exists(Pattern(self.num_sq_list[0]).similar(.8)):  #num_sq_list holds the images of different squares.
            current_ones = self.game_reg.findAll(Pattern(self.num_sq_list[0]).similar(.8))
            for one in current_ones:
                #sq_location() takes the targets location in pixels and returns an X, Y array loc
                grid_location = self.sq_location(one.getTarget()) 
                self.update_array(grid_location[0], grid_location[1], 1)

   #Search for '2' Squares
  if self.game_reg.exists(Pattern(self.num_sq_list[1]).similar(.8)):  
            current_twos = self.game_reg.findAll(Pattern(self.num_sq_list[1]).similar(.8))
            for two in current_twos:
                grid_location = self.sq_location(two.getTarget())
                self.update_array(grid_location[0], grid_location[1], 2)

# This same series of code runs for each different possible square image. 

We do know that once an 'unknown' square is revealed it never changes. I have tried to loop through the 'sq_array' and find the unknown square locations one at a time, then capture() the square region and find if it matches one of the squares in the 'num_sq_list,' but this does not seem to make the program faster. 

Any suggestions for optimizing the search method? 

-- 
You received this question notification because you are a member of
Sikuli Drivers, which is an answer contact for Sikuli.