summaryrefslogtreecommitdiff
path: root/src/miinaharava/bots/simple.py
blob: 07ed9549bd59805ddfa0fbe35dcd778dd2602662 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
""" bots/simple.py - yksinkertainen botti joka etsii vain yhdeltä laatalta """
from random import sample

from .bot import Bot

class SimpleBot(Bot):
    """ SimpleBot - perustyhmä botti """

    def search(self):
        """ Etsitään laattoja jotka tietyllä laatalla olevan numeron sekä
        sitä ympäröivien tuntemattomien laattojen määrän johdosta täytyy olla
        joko miinoja tai vapaita. Yhdistetään ne kyseisiin joukkoihin. """
        tiles = self.get_interesting_tiles()
        for tile in tiles:
            c = self.get_value(tile)
            nbrs = self.get_neighbours(tile)
            self.remove_known_safe_tiles(nbrs)
            c -= self.remove_mine_tiles(nbrs)
            if c == 0:
                self.safe_tiles |= nbrs
            if c == len(nbrs):
                self.mine_tiles |= nbrs
        return self.saved_hints()

    def lucky_guess(self):
        """ Arvotaan laatta tuntemattomista ja lisätään vapaiden joukkoon """
        tiles = list(self.get_unknown_tiles())
        if tiles:
            self.safe_tiles.add(sample(tiles,1)[0])
            return True
        return False