コード例 #1
0
 def test_getValue(self):
     x = Board()
     x.data = np.array([['B'] * 8] * 8)
     r = np.random.choice(64, 5, replace=False)
     for i in r:
         x.data[i // 8, i % 8] = 'W'
     for i, a in enumerate(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']):
         for j, b in enumerate(['1', '2', '3', '4', '5', '6', '7', '8']):
             if i + 8 * j in r:
                 self.assertEqual(x.getValue(a + b), 'W')
             else:
                 self.assertEqual(x.getValue(a + b), 'B')
コード例 #2
0
    def test_getResult(self):
        x = Board()

        x.data = np.array([['E', 'W', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'B', 'W', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'B', 'B', 'W', 'E', 'E', 'E', 'E'],
                           ['E', 'E', 'B', 'W', 'E', 'E', 'E', 'E'],
                           ['E', 'B', 'E', 'W', 'E', 'E', 'E', 'E'],
                           ['E', 'B', 'E', 'B', 'W', 'E', 'E', 'E'],
                           ['E', 'B', 'B', 'B', 'B', 'B', 'B', 'W'],
                           ['E', 'B', 'B', 'B', 'B', 'B', 'B', 'B']])
        self.assertEqual(x.getResult(), (20, 7))
コード例 #3
0
    def test_place(self):
        x = Board()
        y = Board()

        x.data = np.array([['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['B', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'B', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'E', 'B', 'E', 'B', 'E', 'E', 'E'],
                           ['W', 'B', 'B', 'E', 'W', 'E', 'E', 'E'],
                           ['E', 'E', 'E', 'B', 'B', 'E', 'E', 'E'],
                           ['E', 'B', 'E', 'E', 'E', 'W', 'E', 'E'],
                           ['W', 'E', 'E', 'W', 'E', 'E', 'E', 'E']])
        y.data = np.array([['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['B', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'B', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'E', 'B', 'E', 'B', 'E', 'E', 'E'],
                           ['W', 'W', 'W', 'W', 'W', 'E', 'E', 'E'],
                           ['E', 'E', 'E', 'B', 'W', 'E', 'E', 'E'],
                           ['E', 'B', 'E', 'E', 'E', 'W', 'E', 'E'],
                           ['W', 'E', 'E', 'W', 'E', 'E', 'E', 'E']])
        x.place("d5", 'W')
        self.assertTrue(np.array_equal(x.data, y.data))
コード例 #4
0
 def test_getColumn(self):
     x = Board()
     y = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
     x.data = np.array([['B'] * 8] * 8)
     r = np.random.permutation(8)
     for i in range(8):
         x.data[r[i], i] = 'W'
     for i in range(8):
         z = x.getColumn(y[i])
         for j in range(8):
             if j == r[i]:
                 self.assertEqual(z[j], 'W')
             else:
                 self.assertEqual(z[j], 'B')
コード例 #5
0
 def test_getRow(self):
     x = Board()
     y = ['1', '2', '3', '4', '5', '6', '7', '8']
     x.data = np.array([['B'] * 8] * 8)
     r = np.random.permutation(8)
     for i in range(8):
         x.data[i, r[i]] = 'W'
     for i in range(8):
         z = x.getRow(y[i])
         for j in range(8):
             if j == r[i]:
                 self.assertEqual(z[j], 'W')
             else:
                 self.assertEqual(z[j], 'B')
コード例 #6
0
    def test_isDirectionPlaceable(self):
        x = Board()

        x.data = np.array([['E', 'W', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'B', 'W', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'B', 'B', 'W', 'E', 'E', 'E', 'E'],
                           ['E', 'E', 'B', 'W', 'E', 'E', 'E', 'E'],
                           ['E', 'B', 'E', 'W', 'E', 'E', 'E', 'E'],
                           ['E', 'B', 'E', 'B', 'W', 'E', 'E', 'E'],
                           ['E', 'B', 'B', 'B', 'B', 'B', 'B', 'W'],
                           ['E', 'B', 'B', 'B', 'B', 'B', 'B', 'B']])
        for (r, c) in itertools.product(list('12345678'), list('abcdefgh')):
            position = c + r
            if position in ["a2", "a3", "b4", "c6", "a7"]:
                self.assertTrue(x.isDirectionPlaceable(position, (0, 1), 'W'))
            else:
                self.assertFalse(x.isDirectionPlaceable(position, (0, 1), 'W'))
コード例 #7
0
    def test_update(self):
        x = Board()
        y = Board()

        x.update([
            "E E E E E E E E", "B E E E E E E E", "E B E E E E E E",
            "E E B E B E E E", "W B B E W E E E", "E E E B B E E E",
            "E B E E E W E E", "W E E W E E E E"
        ])
        y.data = np.array([['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['B', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'B', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'E', 'B', 'E', 'B', 'E', 'E', 'E'],
                           ['W', 'B', 'B', 'E', 'W', 'E', 'E', 'E'],
                           ['E', 'E', 'E', 'B', 'B', 'E', 'E', 'E'],
                           ['E', 'B', 'E', 'E', 'E', 'W', 'E', 'E'],
                           ['W', 'E', 'E', 'W', 'E', 'E', 'E', 'E']])
        self.assertTrue(np.array_equal(x.data, y.data))
コード例 #8
0
    def test_getFlips(self):
        x = Board()

        x.data = np.array([['E', 'W', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'B', 'W', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'B', 'B', 'W', 'E', 'E', 'E', 'E'],
                           ['E', 'E', 'B', 'W', 'E', 'E', 'E', 'E'],
                           ['E', 'B', 'E', 'W', 'E', 'E', 'E', 'E'],
                           ['E', 'B', 'E', 'B', 'W', 'E', 'E', 'E'],
                           ['E', 'B', 'B', 'B', 'B', 'B', 'B', 'W'],
                           ['E', 'B', 'B', 'B', 'B', 'B', 'B', 'B']])
        for (r, c) in itertools.product(list('12345678'), list('abcdefgh')):
            position = c + r
            if position == "a1":
                self.assertEqual(set(x.getFlips(position, 'W')),
                                 set([(1, 1), (2, 2)]))
            elif position == "a2":
                self.assertEqual(set(x.getFlips(position, 'W')),
                                 set([(1, 1), (2, 1), (3, 2)]))
            elif position == "a3":
                self.assertEqual(set(x.getFlips(position, 'W')),
                                 set([(2, 1), (2, 2)]))
            elif position == "a4":
                self.assertEqual(set(x.getFlips(position, 'W')), set([(2, 1)]))
            elif position == "b4":
                self.assertEqual(set(x.getFlips(position, 'W')),
                                 set([(3, 2), (1, 1), (2, 1)]))
            elif position == "c5":
                self.assertEqual(set(x.getFlips(position, 'W')),
                                 set([(2, 2), (3, 2)]))
            elif position == "a6":
                self.assertEqual(set(x.getFlips(position, 'W')),
                                 set([(4, 1), (3, 2)]))
            elif position == "c6":
                self.assertEqual(set(x.getFlips(position, 'W')), set([(5, 3)]))
            elif position == "a7":
                self.assertEqual(
                    set(x.getFlips(position, 'W')),
                    set([(6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6)]))
            else:
                self.assertEqual(x.getFlips(position, 'W'), [])
コード例 #9
0
    def test_setNextTurn(self):
        x = Game()
        y = Board()

        x.winner = "DRAW"
        self.assertFalse(x.setNextTurn("d3"))
        x.winner = None
        self.assertTrue(x.setNextTurn("d3"))
        y.data = np.array([['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'E', 'E', 'B', 'E', 'E', 'E', 'E'],
                           ['E', 'E', 'E', 'B', 'B', 'E', 'E', 'E'],
                           ['E', 'E', 'E', 'B', 'W', 'E', 'E', 'E'],
                           ['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'],
                           ['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E']])
        self.assertTrue(np.array_equal(x.board.data, y.data))
        self.assertEqual(x.history, ["d3"])
        self.assertFalse(x.setNextTurn("e6"))
        self.assertTrue(x.setNextTurn("NULL"))
        self.assertEqual(x.getWinner(), "BLACK")