コード例 #1
0
ファイル: play.py プロジェクト: alfinoc/minesweeper
class Simulation:
   def __init__(self):
      mines = 3
      self.player = Player(game=Minesweeper(mines=mines, width=5, height=5))
      self.score = 0
      self.undiscovered = mines

   def minesLeft(self):
      return self.undiscovered - self.score - len(filter(identity, self.player.marked))

   def sweep(self):
      while self.player.sweep(): pass

   def guess(self):
      self.score += int(self.player.guess())

   def dump(self):
      self.player.dump()
      print 'mines hit:', str(self.score)

   def prompt(self):
      response = raw_input('')
      if 's' in response:
         self.sweep()
      elif 'g' in response:
         self.guess()
      elif 'e' in response:
         self.player.eliminate()
      elif 'b' in response:  # 'b' for both
         self.sweep()
         self.guess()
      return 'stop' not in response and not self.player.complete()

   def auto(self, interval=0, verbose=False):
      while not self.player.complete():
         progress = True
         while progress:
            progress = False
            if verbose: print 'Sweeping...'
            progress = progress or self.sweep()
            if verbose: print 'Eliminating...'
            progress = progress or self.player.eliminate()
         if verbose: print 'Guessing...'
         self.guess()
      print 'final score:', str(self.score)

   def manual(self):
      while self.prompt():
         self.dump()

   def probabilities(self):
      prob = Problem(self.player.game.board, self.player.state())
      return prob.probabilities(self.minesLeft())

   def s(self):
      self.guess()
      self.dump()