예제 #1
0
파일: cli.py 프로젝트: majackson/wordsmush
def solve_from_letters(letters):
    from wordsmush import game_utils
    from wordsmush.ai import WordsmushAIPlayer

    ai = WordsmushAIPlayer()
    board = game_utils.get_board(letters)
    words = ai.solve_board(board)
    words_by_len = groupby(words, key=len)
    for length, words in words_by_len:
        if length > 2:
            print "%d letter words: " % length
            print (", ".join(words)).upper()
예제 #2
0
    def test_solve_board(self):
        game = game_utils.get_board(
            'espro'
            'lishm'
            'tabdi'
            'entsi'
            'xfgmn')

        solved_game = self.ai.solve_board(game)
        words = ['establish', 'sadism', 'establishment', 'disestablishment',
                 'stab', 'stand', 'spasm', 'stream', 'espresso']

        for word in words:
            self.assertTrue(word in solved_game) 
예제 #3
0
    def test_calculate_protected(self):
        self.game = game_utils.get_board(['f', 'r', 'a', 'b', 'c',
                                          'n', 'a', 'h', 'i', 'j',
                                          't', 'i', 'm', 'n', 'o',
                                          'c', 's', 'g', 'x', 'q',
                                          'u', 'v', 'w', 'y', 'z'])
        word = WordsmushTurn(self.game)
        word.add_tile(self.game.get_tile(0,0))
        word.add_tile(self.game.get_tile(1,0))
        word.add_tile(self.game.get_tile(1,1))
        word.add_tile(self.game.get_tile(0,1))
        word.add_tile(self.game.get_tile(0,2))
        word.add_tile(self.game.get_tile(1,2))
        word.add_tile(self.game.get_tile(0,3))

        self.assertTrue([tile.letter for tile in word.tiles] == list('frantic'))

        self.game.play(self.game.player1, word)

        self.assertTrue(all(tile.owner == self.game.player1 for tile in word.tiles))

        protected_tile1 = self.game.get_tile(0,0)
        protected_tile2 = self.game.get_tile(0,1)
        self.assertTrue(protected_tile1.status == WordsmushTile.PROTECTED)
        self.assertTrue(protected_tile2.status == WordsmushTile.PROTECTED)

        # now test that a second play will not capture a protected tile
        word2 = WordsmushTurn(self.game)
        word2.add_tile(self.game.get_tile(0,0))
        word2.add_tile(self.game.get_tile(1,1))
        word2.add_tile(self.game.get_tile(0,1))
        word2.add_tile(self.game.get_tile(2,0))
        word2.add_tile(self.game.get_tile(0,2))
        word2.add_tile(self.game.get_tile(1,2))
        word2.add_tile(self.game.get_tile(0,3))

        self.assertTrue([tile.letter for tile in word2.tiles] == list('fanatic'))

        self.game.play(self.game.player2, word2)

        self.assertTrue(protected_tile1.owner == self.game.player1)
        self.assertTrue(protected_tile2.owner == self.game.player1)