コード例 #1
0
 def test_group_by_x_3_dots_in_line_horizontally(self):
     player = occupier = Player(-1)
     c1 = Cell.Cell(0, 0, player, occupier)
     c2 = Cell.Cell(1, 0, player, occupier)
     c3 = Cell.Cell(2, 0, player, occupier)
     cells = {c1, c2, c3}
     expected = {1: {c2}}
     self.assertEqual(expected, Cell.group_by_x(cells))
コード例 #2
0
ファイル: Cycles.py プロジェクト: SergeyPishchulov/PythonDots
def mark_as_occupied(occupied_cells, cycle_dots, occupier):
    if occupied_cells:
        Cell.mark_each_cell_as_occupied(occupied_cells, occupier)
        if Cell.contains_enemy(occupied_cells, occupier):
            for c in occupied_cells:
                c.drenched = True
            for c in cycle_dots:
                c.drenched = True
コード例 #3
0
 def test_group_by_x_3_dots_in_line_vertically(self):
     player = occupier = Player(-1)
     c1 = Cell.Cell(0, 0, player, occupier)
     c2 = Cell.Cell(0, 1, player, occupier)
     c3 = Cell.Cell(0, 2, player, occupier)
     cells = {c1, c2, c3}
     expected = {}
     self.assertEqual(expected, Cell.group_by_x(cells))
コード例 #4
0
def get_occupied_cells(cycle_dots, field):
    """returns set of occupied cells"""
    occupied_dots = set()
    dots_on_vertical = Cell.group_by_x(cycle_dots)
    for vertical in dots_on_vertical.keys():  # dict[x_coord]==set of cells
        is_inner = False
        upper, lower = Cell.bounds(dots_on_vertical[vertical])
        for y in range(lower, upper + 1):
            if Cell.contains_by_y(dots_on_vertical[vertical], y):
                is_inner = not is_inner
            elif is_inner:
                occupied_dots.add(field.field_array[vertical][y])
    return occupied_dots
コード例 #5
0
ファイル: Field.py プロジェクト: SergeyPishchulov/PythonDots
 def __init__(self, w, h, drawing=None, parent_field=None):
     if parent_field is None:
         self.drawing = drawing
         self.width = w
         self.height = h
         self.field_array = []
         for x in range(self.width):
             c = [Cell.Cell(x, y) for y in range(self.height)]
             self.field_array.append(c)
     else:
         self.width = parent_field.width
         self.height = parent_field.height
         self.field_array = copy.deepcopy(parent_field.field_array)
コード例 #6
0
 def test_raises_exception_if_owner_is_int_but_not_player_obj(self):
     player = Player(1)
     cell = Cell.Cell(0, 0, player)
     self.assertRaises(TypeError, cell.belongs, player=1)
コード例 #7
0
 def test_nobodys_cell_is_not_enemys_cell(self):
     player = Player(1)
     cells = {Cell.Cell(0, 0, owner=None)}
     self.assertFalse(Cell.contains_enemy(cells, player))
コード例 #8
0
 def test_others_cell_is_enemy_cell(self):
     player = Player(1)
     other = Player(2)
     cells = {Cell.Cell(0, 0, player)}
     self.assertTrue(Cell.contains_enemy(cells, other))
コード例 #9
0
 def test_players_cell_is_not_enemy_cell(self):
     player = Player(1)
     cells = {Cell.Cell(0, 0, player)}
     self.assertFalse(Cell.contains_enemy(cells, player))
コード例 #10
0
 def test_doesnt_belongs_to_others_owner(self):
     player = Player(1)
     other = Player(2)
     cell = Cell.Cell(0, 0, player)
     self.assertFalse(cell.belongs(other))
コード例 #11
0
 def test_belongs_to_its_owner(self):
     player = Player(-1)
     cell = Cell.Cell(0, 0, player)
     self.assertTrue(cell.belongs(player))
コード例 #12
0
 def test_3_cells_with_gap_vertically_middle(self):
     player = occupier = Player(-1)
     cell = Cell.Cell(0, 1, player, occupier)
     cells = {Cell.Cell(0, 0, player, occupier), cell, Cell.Cell(0, 2, player, occupier)}
     self.assertFalse(Cell.is_between_cells(cell, cells))
コード例 #13
0
 def test_3_cells_in_line_horizontally_right(self):
     player = occupier = Player(-1)
     cell = Cell.Cell(2, 0, player, occupier)
     cells = {Cell.Cell(1, 0, player, occupier), cell, Cell.Cell(0, 0, player, occupier)}
     self.assertFalse(Cell.is_between_cells(cell, cells))