示例#1
0
文件: board.py 项目: gurgenXD/chess
    def fill_board(self):
        for key in self.__letter_mapping:
            self[key + '7'] = Pawn(BLACK, self)
            self[key + '2'] = Pawn(WHITE, self)

        self['A1'] = Rook(WHITE, self)
        self['H1'] = Rook(WHITE, self)
        self['A8'] = Rook(BLACK, self)
        self['H8'] = Rook(BLACK, self)

        self['B1'] = Knight(WHITE, self)
        self['G1'] = Knight(WHITE, self)
        self['B8'] = Knight(BLACK, self)
        self['G8'] = Knight(BLACK, self)

        self['C1'] = Bishop(WHITE, self)
        self['F1'] = Bishop(WHITE, self)
        self['C8'] = Bishop(BLACK, self)
        self['F8'] = Bishop(BLACK, self)

        self['D1'] = Queen(WHITE, self)
        self['D8'] = Queen(BLACK, self)

        self['E1'] = King(WHITE, self)
        self['E8'] = King(BLACK, self)
示例#2
0
    def add_pieces(self):
        """ Appends the proper pieces and locations to each team list.
        
        Team lists are used to get the possible moves and easily
        check the capture status of a piece.
        """

        self.wp.append(King(4, 7, True))
        self.wp.append(Queen(3, 7, True))
        self.wp.append(Rook(0, 7, True))
        self.wp.append(Rook(7, 7, True))
        self.wp.append(Knight(1, 7, True))
        self.wp.append(Knight(6, 7, True))
        self.wp.append(Bishop(2, 7, True))
        self.wp.append(Bishop(5, 7, True))
        for i in range(8):
            self.wp.append(Pawn(i, 6, True))

        self.bp.append(King(4, 0, False))
        self.bp.append(Queen(3, 0, False))
        self.bp.append(Rook(0, 0, False))
        self.bp.append(Rook(7, 0, False))
        self.bp.append(Knight(1, 0, False))
        self.bp.append(Knight(6, 0, False))
        self.bp.append(Bishop(2, 0, False))
        self.bp.append(Bishop(5, 0, False))
        for i in range(8):
            self.bp.append(Pawn(i, 1, False))
    def processAndSend(self, char, pos):
        position = []
        if char == 'white:soldier' or char == 'black:soldier':
            sold = Soldier(char, pos)
            position = sold.getPositions()

        elif char == 'white:eleph' or char == 'black:eleph':
            elephant = Elephant(char, pos)
            position = elephant.getPositions()

        elif char == 'white:camel' or char == 'black:camel':
            cam = Camel(char, pos)
            position = cam.getPositions()

        elif char == 'white:horse' or char == 'black:horse':
            hors = Horse(char, pos)
            position = hors.getPositions()

        elif char == 'white:queen' or char == 'black:queen':
            qun = Queen(char, pos)
            position = qun.getPositions()

        elif char == 'white:king' or char == 'black:king':
            kin = King(char, pos)
            position = kin.getPositions()
        dataString = pickle.dumps(position)
        self.client.send(dataString)
示例#4
0
    def __init__(self):
        self.board = [[None for j in range(8)] for i in range(8)]
        self.pieces = []
        
        # set white board
        pieces = []
        for i in range(8):
            pieces.append(Pawn(i, 1, COLOR.WHITE))
        pieces.append(Rook(0, 0, COLOR.WHITE))
        pieces.append(Rook(7 ,0, COLOR.WHITE))
        pieces.append(Knight(1, 0, COLOR.WHITE))
        pieces.append(Knight(6, 0, COLOR.WHITE))
        pieces.append(Bishop(2, 0, COLOR.WHITE))
        pieces.append(Bishop(5, 0, COLOR.WHITE))
        pieces.append(King(3, 0, COLOR.WHITE))
        pieces.append(Queen(4, 0, COLOR.WHITE))

        #set black peices
        for i in range(8):
            pieces.append(Pawn(i, 6, COLOR.BLACK))
        pieces.append(Rook(0, 7, COLOR.BLACK))
        pieces.append(Rook(7 ,7, COLOR.BLACK))
        pieces.append(Knight(1, 7, COLOR.BLACK))
        pieces.append(Knight(6, 7, COLOR.BLACK))
        pieces.append(Bishop(2, 7, COLOR.BLACK))
        pieces.append(Bishop(5, 7, COLOR.BLACK))
        pieces.append(King(3, 7, COLOR.BLACK))
        pieces.append(Queen(4, 7, COLOR.BLACK))

        for _piece in pieces:
            self.pieces.append(_piece)
            self.board[_piece._x][_piece._y] = _piece
示例#5
0
    def promotion(self, board_obj):
        """ Checks if a Pawn has reached the opponents side of the board.

        The promotion for a Pawn will result in a Queen object taking the
        the Pawn's spot in the game.
        
        Parameters
        ----------
        board_obj : board.Board
            the board object that was created
        """

        x, y = self.location

        #Where, in which list, is this Pawn object stored
        in_list = self.wp if self.white else self.bp
        for idx in len(in_list):
            if in_list[idx] is self:
                p_idx = idx
                break

        if y == 0 and self.white:
            queen_prom = Queen(x, y, True)
            #self.captured = True
            board_obj.board[y][x] = queen_prom
            board_obj.wp[idx] = queen_prom

        if y == 7 and not self.white:
            queen_prom = Queen(x, y, False)
            #self.captured = True
            board_obj.board[y][x] = queen_prom
            board_obj.bp[idx] = queen_prom
示例#6
0
def parse(fin):
    white_pieces = []
    black_pieces = []
    with open(fin, "r") as file_in:
        lines = file_in.read().splitlines()
        for line in lines:
            if int(line[-1:]) > 0:
                for idx in range(0, int(line[-1:])):
                    if (line[-7:-2] == 'WHITE'):
                        temp = line[:-8]
                        if (temp == 'BISHOP'):
                            white_pieces.append(Bishop(Position(), True))
                        elif (temp == 'KNIGHT'):
                            white_pieces.append(Knight(Position(), True))
                        elif (temp == 'QUEEN'):
                            white_pieces.append(Queen(Position(), True))
                        elif (temp == 'ROOK'):
                            white_pieces.append(Rook(Position(), True))

                    elif (line[-7:-2] == 'BLACK'):
                        temp = line[:-8]
                        if (temp == 'BISHOP'):
                            black_pieces.append(Bishop(Position(), False))
                        elif (temp == 'KNIGHT'):
                            black_pieces.append(Knight(Position(), False))
                        elif (temp == 'QUEEN'):
                            black_pieces.append(Queen(Position(), False))
                        elif (temp == 'ROOK'):
                            black_pieces.append(Rook(Position(), False))

    file_in.close()
    return white_pieces, black_pieces
示例#7
0
    def init_board(self):
        new_b = []
        for i in range(64):
            # white
            if i == 0 or i == 7:
                new_b.append(Tile(Rook('W')))
            elif i == 1 or i == 6:
                new_b.append(Tile(Knight('W')))
            elif i == 2 or i == 5:
                new_b.append(Tile(Bishop('W')))
            elif i == 3:
                new_b.append(Tile(Queen('W')))
            elif i == 4:
                new_b.append(Tile(King('W')))
            elif i >= 8 and i <= 15:
                new_b.append(Tile(Pawn('W')))
            # black
            elif i == 56 or i == 63:
                new_b.append(Tile(Rook('B')))
            elif i == 57 or i == 62:
                new_b.append(Tile(Knight('B')))
            elif i == 58 or i == 61:
                new_b.append(Tile(Bishop('B')))
            elif i == 59:
                new_b.append(Tile(Queen('B')))
            elif i == 60:
                new_b.append(Tile(King('B')))
            elif i >= 48 and i <= 55:
                new_b.append(Tile(Pawn('B')))
            # empty
            else:
                new_b.append(Tile())

        return new_b
示例#8
0
文件: tests.py 项目: ruohola/pychess
def test_piece_eq_and_hash():
    king1 = King(Color.WHITE)
    king2 = King(Color.WHITE)
    king3 = King(Color.BLACK)
    queen1 = Queen(Color.WHITE)
    queen2 = Queen(Color.WHITE)
    queen3 = Queen(Color.BLACK)
    assert king1 == king2 and hash(king1) == hash(king2)
    assert queen1 == queen2 and hash(queen1) == hash(queen2)
    assert king1 != king3 and hash(king1) != hash(king3)
    assert queen1 != queen3 and hash(queen1) != hash(queen3)
示例#9
0
    def run(self):
        # x and y of playing field
        width = input('enter the width of the board')
        width = int(width)
        height = input('enter the height of the board')
        height = int(height)
        board = Board(width, height)
        curr_play = 0
        init_pos_player_1 = input('enter the inital position of player 1 as a tuple (x, y)')
        init_pos_player_2 = input('enter the inital position of player 2 as a tuple (x, y)')
        p1_split = init_pos_player_1.split(',')
        p2_split = init_pos_player_2.split(',')
        player_1 = Queen()
        player_1.set_position(int(p1_split[0]), int(p1_split[1]))
        board.set_tile(1, player_1.get_position()[0], player_1.get_position()[1])
        player_2 = Queen()
        player_2.set_position(int(p2_split[0]), int(p2_split[1]))
        board.set_tile(2, player_2.get_position()[0], player_2.get_position()[1])


        # inital position of player 1
        # inital pos of player 2
        players = [player_1, player_2]
        while len(players[curr_play].valid_moves(board)) != 0:
            #print board
            board.print_board()
            print('valid moves')
            avail_moves = players[curr_play].valid_moves(board)
            print(avail_moves)
            #player to pick a move
            in_pos_player = input('enter the move of player {0} as a tuple (x, y)'.format(curr_play+1))
            split = in_pos_player.split(',')

            move = (int(split[0]), int(split[1]))
            #if move is valid
            if move in avail_moves:
                #update board
                current_pos = players[curr_play].get_position()
                board.set_tile(-1, current_pos[0], current_pos[1])
                players[curr_play].set_position(move[0], move[1])
                #new position
                current_pos = players[curr_play].get_position()
                board.set_tile(curr_play+1, current_pos[0], current_pos[1])
            else:
                raise ValueError('not in move set')
               

            #update turn
            curr_play += 1
            curr_play %= 2 
            
        #end of loop
        print('player {0} lost! player {1} won!'.format(curr_play+1, (curr_play+2)%3))
示例#10
0
 def test_queen_attacks(self):
     queen1 = Queen(Colour.WHITE, (3, 3))
     pawns = [
         Pawn(Colour.WHITE, (1, 1)),
         Pawn(Colour.BLACK, (5, 5)),
         Pawn(Colour.WHITE, (1, 5)),
         Pawn(Colour.BLACK, (5, 1)),
         Pawn(Colour.WHITE, (3, 1)),
         Pawn(Colour.WHITE, (3, 5)),
         Pawn(Colour.BLACK, (1, 3)),
         Pawn(Colour.WHITE, (5, 3))
     ]
     self.assertEquals(set(queen1.list_attacks(pawns)),
                       set([(5, 5), (5, 1), (1, 3)]))
示例#11
0
def mainThread():
    
    table = Table()
    table.addpiece(1, 0, Pawn(1, 0, pawn_color, table.table_map))
    table.addpiece(1, 1, Pawn(1, 1, pawn_color, table.table_map))
    table.addpiece(1, 2, Pawn(1, 2, pawn_color, table.table_map))
    table.addpiece(1, 3, Pawn(1, 3, pawn_color, table.table_map))
    table.addpiece(1, 4, Pawn(1, 4, pawn_color, table.table_map))
    table.addpiece(1, 5, Pawn(1, 5, pawn_color, table.table_map))
    table.addpiece(1, 6, Pawn(1, 6, pawn_color, table.table_map))
    table.addpiece(1, 7, Pawn(1, 7, pawn_color, table.table_map))
    
    table.addpiece(0, 0, Tower(0, 0, tower_color, table.table_map))
    table.addpiece(0, 1, Horse(0, 1, horse_color, table.table_map))
    table.addpiece(0, 2, Bishop(0, 2, bishop_color, table.table_map))
    table.addpiece(0, 3, King(0, 3, king_color, table.table_map))
    table.addpiece(0, 4, Queen(0, 4, quin_color, table.table_map))
    table.addpiece(0, 5, Bishop(0, 5, bishop_color, table.table_map))
    table.addpiece(0, 6, Horse(0, 6, horse_color, table.table_map))
    table.addpiece(0, 7, Tower(0, 7, tower_color, table.table_map))
    
    
    table.addpiece(6, 0, Pawn(6, 0, pawn_color, table.table_map, True))
    table.addpiece(6, 1, Pawn(6, 1, pawn_color, table.table_map, True))
    table.addpiece(6, 2, Pawn(6, 2, pawn_color, table.table_map, True))
    table.addpiece(6, 3, Pawn(6, 3, pawn_color, table.table_map, True))
    table.addpiece(6, 4, Pawn(6, 4, pawn_color, table.table_map, True))
    table.addpiece(6, 5, Pawn(6, 5, pawn_color, table.table_map, True))
    table.addpiece(6, 6, Pawn(6, 6, pawn_color, table.table_map, True))
    table.addpiece(6, 7, Pawn(6, 7, pawn_color, table.table_map, True))
    
    table.addpiece(7, 0, Tower(7, 0, tower_color, table.table_map))
    table.addpiece(7, 1, Horse(7, 1, horse_color, table.table_map))
    table.addpiece(7, 2, Bishop(7, 2, bishop_color, table.table_map))
    table.addpiece(7, 3, King(7, 3, king_color, table.table_map))
    table.addpiece(7, 4, Queen(7, 4, quin_color, table.table_map))
    table.addpiece(7, 5, Bishop(7, 5, bishop_color, table.table_map))
    table.addpiece(7, 6, Horse(7, 6, horse_color, table.table_map))
    table.addpiece(7, 7, Tower(7, 7, tower_color, table.table_map))
    
    while True: 
        for evento in py.event.get():
            if evento.type == py.QUIT:
                py.quit()
                
        display.fill((255,255,255))
        table.render(display, py, font)
        py.display.flip()
        time.tick(64)
示例#12
0
 def setBoard(self, fen):
     row, column = 0, 0
     for character in fen:
         if character == 'R':
             self.addPiece(Rook(column, row, 'w', self.board.board))
             column += 1
         elif character == 'r':
             self.addPiece(Rook(column, row, 'b', self.board.board))
             column += 1
         elif character == 'N':
             self.addPiece(Knight(column, row, 'w', self.board.board))
             column += 1
         elif character == 'n':
             self.addPiece(Knight(column, row, 'b', self.board.board))
             column += 1
         elif character == 'B':
             self.addPiece(Bishop(column, row, 'w', self.board.board))
             column += 1
         elif character == 'b':
             self.addPiece(Bishop(column, row, 'b', self.board.board))
             column += 1
         elif character == 'P':
             self.addPiece(Pawn(column, row, 'w', self.board.board))
             column += 1
         elif character == 'p':
             self.addPiece(Pawn(column, row, 'b', self.board.board))
             column += 1
         elif character == 'K':
             self.addPiece(King(column, row, 'w', self.board.board))
             column += 1
         elif character == 'k':
             self.addPiece(King(column, row, 'b', self.board.board))
             column += 1
         elif character == 'Q':
             self.addPiece(Queen(column, row, 'w', self.board.board))
             column += 1
         elif character == 'q':
             self.addPiece(Queen(column, row, 'b', self.board.board))
             column += 1
         elif character == '/':
             column = 0
             row += 1
         else:
             if character >= '1' and character <= '9':
                 column += int(character)
             elif character == ' ':
                 i = fen.index(character) + 1
                 self.whitesTurn = True if fen[i] == 'w' else False
                 return
示例#13
0
    def test_correct(self):
        """test_correct: Test generated values from solver and make sure that they
        are in the 'known_correct_values' list"""
        known_correct_values = [[0, 4, 7, 5, 2, 6, 1, 3],
                                [1, 3, 5, 7, 2, 0, 6, 4],
                                [2, 0, 6, 4, 7, 1, 3, 5],
                                [3, 0, 4, 7, 1, 6, 2, 5],
                                [4, 0, 3, 5, 7, 1, 6, 2],
                                [5, 0, 4, 1, 7, 2, 6, 3],
                                [6, 0, 2, 7, 5, 3, 1, 4],
                                [7, 1, 3, 0, 6, 4, 2, 5]]

        for i in range(8):
            solver = Queen(8)
            self.assertTrue(solver.place_queen(i) in known_correct_values)
示例#14
0
 def test_queen_moves(self):
     queen1 = Queen(Colour.WHITE, (3, 3))
     pawns = [
         Pawn(Colour.WHITE, (1, 1)),
         Pawn(Colour.WHITE, (5, 5)),
         Pawn(Colour.WHITE, (1, 5)),
         Pawn(Colour.WHITE, (5, 1)),
         Pawn(Colour.WHITE, (3, 1)),
         Pawn(Colour.WHITE, (3, 5)),
         Pawn(Colour.WHITE, (1, 3)),
         Pawn(Colour.WHITE, (5, 3))
     ]
     self.assertEquals(
         set(queen1.list_moves(pawns)),
         set([(2, 2), (4, 4), (2, 4), (4, 2), (3, 2), (3, 4), (2, 3),
              (4, 3)]))
示例#15
0
    def _init_pieces(self):
        if not self._positions:
            king = King(color=self._color)
            self._positions.update({str(king.position): king})

            queen = Queen(color=self._color)
            self._positions.update({str(queen.position): queen})

            for i in range(1, 9):
                pawn = Pawn(self._color, col=i)
                self._positions.update({str(pawn.position): pawn})

            knight = Knight(self._color, col=2)
            self._positions.update({str(knight.position): knight})

            knight = Knight(self._color, col=7)
            self._positions.update({str(knight.position): knight})

            rook = Rook(self._color, col=1)
            self._positions.update({str(rook.position): rook})

            rook = Rook(self._color, col=8)
            self._positions.update({str(rook.position): rook})

            bishop = Bishop(self._color, col=3)
            self._positions.update({str(bishop.position): bishop})

            bishop = Bishop(self._color, col=6)
            self._positions.update({str(bishop.position): bishop})
 def stringToTablero(self, chain):
     mesa = [[0 for x in range(8)] for _ in range(8)]  #Mesa
     piezas = ""
     equipo = ""
     tipo = 0
     for i in range(len(chain)):
         if i < 64:
             piezas = piezas + chain[i]
         else:
             equipo = equipo + chain[i]
     for i in range(len(mesa)):
         for j in range(len(mesa[i])):
             if piezas[tipo] == "P":
                 mesa[i][j] = Peon(i, j, equipo[tipo])
             elif piezas[tipo] == "A":
                 mesa[i][j] = Alfil(i, j, equipo[tipo])
             elif piezas[tipo] == "C":
                 mesa[i][j] = Caballo(i, j, equipo[tipo])
             elif piezas[tipo] == "T":
                 mesa[i][j] = Torre(i, j, equipo[tipo])
             elif piezas[tipo] == "K":
                 mesa[i][j] = King(i, j, equipo[tipo])
             elif piezas[tipo] == "Q":
                 mesa[i][j] = Queen(i, j, equipo[tipo])
             else:
                 mesa[i][j] = 0
             tipo = tipo + 1
     return mesa
示例#17
0
 def change_type_heros(self):
     for hero in self.heros:
         coord = hero.get_coord()
         if self.color_hero == hero.get_color_hero():
             if (self.num_player == 1 and hero.get_coord()[1] == 7) or (self.num_player == 2 and hero.get_coord()[1] == 0):
                 hero.destroy()
                 new_hero = Queen(coord, self.color_hero, self.num_player, (self.margin), self.number_divide)
                 self.heros.add(new_hero)
示例#18
0
    def _try_promote_pawns(self):
        logging.debug("Trying to promote pawns ...")

        logging.debug("Iterating %s ...", self._positions)
        for position, piece in self._positions.items():
            logging.debug("Checking %s ...", piece)
            logging.debug("isinstance(%s, Pawn)=%s", piece,
                          isinstance(piece, Pawn))
            logging.debug("_is_last_rank(self, %s)=%s", piece.position,
                          self._is_last_rank(piece.position))

            if isinstance(piece, Pawn) and self._is_last_rank(piece.position):
                queen = Queen(color=self._color)
                queen.position = piece.position
                self._positions.update({str(queen.position): queen})
                logging.debug("Promoting %s to %s", piece, queen)

        logging.debug("Trying to promote pawns ... done")
示例#19
0
 def moving(self, x, y, piece):
     self.whitesTurn = not self.whitesTurn
     self.counter += 1
     xx, yy = piece.x, piece.y
     if piece.type == "pawn":
         if piece.isWhite and y == 0:
             self.canvas.deleteImage(x, y)
             self.canvas.deleteImage(xx, yy)
             self.whitePieces.remove(piece)
             self.addPiece(Queen(xx, yy, 'w', self.board.board))
         if not piece.isWhite and y == 7:
             self.canvas.deleteImage(x, y)
             self.canvas.deleteImage(xx, yy)
             self.blackPieces.remove(piece)
             self.addPiece(Queen(xx, yy, 'b', self.board.board))
         piece = self.board.board[xx][yy]
     a, b = piece.changePosition(x, y, self.counter)
     self.canvas.move((xx, yy), (piece.x, piece.y), (a, b))
     self.canvas.canvas.update()
示例#20
0
    def create_standard_game(self):
        from bishop import Bishop
        from king import King
        from knight import Knight
        from pawn import Pawn
        from queen import Queen
        from rook import Rook
        self.set_piece(Rook(0, Alliance.WHITE))
        self.set_piece(Knight(1, Alliance.WHITE))
        self.set_piece(Bishop(2, Alliance.WHITE))
        self.set_piece(Queen(3, Alliance.WHITE))
        self.set_piece(King(4, Alliance.WHITE))
        self.set_piece(Bishop(5, Alliance.WHITE))
        self.set_piece(Knight(6, Alliance.WHITE))
        self.set_piece(Rook(7, Alliance.WHITE))
        self.set_piece(Pawn(8, Alliance.WHITE))
        self.set_piece(Pawn(9, Alliance.WHITE))
        self.set_piece(Pawn(10, Alliance.WHITE))
        self.set_piece(Pawn(11, Alliance.WHITE))
        self.set_piece(Pawn(12, Alliance.WHITE))
        self.set_piece(Pawn(13, Alliance.WHITE))
        self.set_piece(Pawn(14, Alliance.WHITE))
        self.set_piece(Pawn(15, Alliance.WHITE))

        self.set_piece(Pawn(48, Alliance.BLACK))
        self.set_piece(Pawn(49, Alliance.BLACK))
        self.set_piece(Pawn(50, Alliance.BLACK))
        self.set_piece(Pawn(51, Alliance.BLACK))
        self.set_piece(Pawn(52, Alliance.BLACK))
        self.set_piece(Pawn(53, Alliance.BLACK))
        self.set_piece(Pawn(54, Alliance.BLACK))
        self.set_piece(Pawn(55, Alliance.BLACK))
        self.set_piece(Rook(56, Alliance.BLACK))
        self.set_piece(Knight(57, Alliance.BLACK))
        self.set_piece(Bishop(58, Alliance.BLACK))
        self.set_piece(Queen(59, Alliance.BLACK))
        self.set_piece(King(60, Alliance.BLACK))
        self.set_piece(Bishop(61, Alliance.BLACK))
        self.set_piece(Knight(62, Alliance.BLACK))
        self.set_piece(Rook(63, Alliance.BLACK))

        self.set_move_alliance(Alliance.WHITE)
示例#21
0
    def __init__(self) -> None:
        """Setup the board with all the pieces on the starting positions."""
        self._squares: Dict[str, Square] = {
            coord: Square(coord)
            for coord in map("".join,
                             itertools.product(self._FILES, self._RANKS))
        }

        self["a8"].piece = Rook(Color.BLACK)
        self["b8"].piece = Knight(Color.BLACK)
        self["c8"].piece = Bishop(Color.BLACK)
        self["d8"].piece = Queen(Color.BLACK)
        self["e8"].piece = King(Color.BLACK)
        self["f8"].piece = Bishop(Color.BLACK)
        self["g8"].piece = Knight(Color.BLACK)
        self["h8"].piece = Rook(Color.BLACK)
        self["a1"].piece = Rook(Color.WHITE)
        self["b1"].piece = Knight(Color.WHITE)
        self["c1"].piece = Bishop(Color.WHITE)
        self["d1"].piece = Queen(Color.WHITE)
        self["e1"].piece = King(Color.WHITE)
        self["f1"].piece = Bishop(Color.WHITE)
        self["g1"].piece = Knight(Color.WHITE)
        self["h1"].piece = Rook(Color.WHITE)

        for file in self._FILES:
            self[f"{file}7"].piece = Pawn(Color.BLACK)
            self[f"{file}2"].piece = Pawn(Color.WHITE)

        # Set the adjacent Square nodes for each Square.
        for i in range(8):
            for j in range(8):
                sq = self._get(i, j)
                sq["n"] = self._get(i, j + 1)
                sq["e"] = self._get(i + 1, j)
                sq["s"] = self._get(i, j - 1)
                sq["w"] = self._get(i - 1, j)
                sq["ne"] = self._get(i + 1, j + 1)
                sq["se"] = self._get(i + 1, j - 1)
                sq["sw"] = self._get(i - 1, j - 1)
                sq["nw"] = self._get(i - 1, j + 1)
示例#22
0
    def initializePieces(self):
        self.board[4][0] = King(self.window, False, 4, 0, self.pieces_image[0])
        self.black_king = self.board[4][0]

        self.board[3][0] = Queen(self.window, False, 3, 0, self.pieces_image[1])
        self.board[0][0] = Rook(self.window, False, 0, 0, self.pieces_image[4])
        self.board[7][0] = Rook(self.window, False, 7, 0, self.pieces_image[4])
        self.board[6][0] = Knight(self.window, False, 6, 0, self.pieces_image[3])
        self.board[1][0] = Knight(self.window, False, 1, 0, self.pieces_image[3])
        self.board[2][0] = Bishop(self.window, False, 2, 0, self.pieces_image[2])
        self.board[5][0] = Bishop(self.window, False, 5, 0, self.pieces_image[2])

        self.board[4][7] = King(self.window, True, 4, 7, self.pieces_image[0 + 6])
        self.white_king = self.board[4][7]

        self.board[3][7] = Queen(self.window, True, 3, 7, self.pieces_image[1 + 6])
        self.board[0][7] = Rook(self.window, True, 0, 7, self.pieces_image[4 + 6])
        self.board[7][7] = Rook(self.window, True, 7, 7, self.pieces_image[4 + 6])
        self.board[6][7] = Knight(self.window, True, 6, 7, self.pieces_image[3 + 6])
        self.board[1][7] = Knight(self.window, True, 1, 7, self.pieces_image[3 + 6])
        self.board[2][7] = Bishop(self.window, True, 2, 7, self.pieces_image[2 + 6])
        self.board[5][7] = Bishop(self.window, True, 5, 7, self.pieces_image[2 + 6])

        white = False
        for y in [1, 6]:
            for x in range(8):
                if y == 6:
                    white = True

                if white:
                    image = self.pieces_image[5 + 6]
                else:
                    image = self.pieces_image[5]

                self.board[x][y] = Pawn(self.window, white, x, y, image)

                if white:
                    self.white_pawns.append(self.board[x][y])
                else:
                    self.black_pawns.append(self.board[x][y])
    def __init__(self):
        self.M = [[0 for x in range(8)] for _ in range(8)]  #Mesa
        self.jugando = True
        self.jugador = 1  #Jugador 1 azules, jugador 0 rojas

        self.M[0][0] = Torre(0, 0, "R")
        self.M[0][1] = Caballo(0, 1, "R")
        self.M[0][2] = Alfil(0, 2, "R")
        self.M[0][3] = Queen(0, 3, "R")
        self.M[0][4] = King(0, 4, "R")
        self.M[0][5] = Alfil(0, 5, "R")
        self.M[0][6] = Caballo(0, 6, "R")
        self.M[0][7] = Torre(0, 7, "R")

        self.M[1][0] = Peon(1, 0, "R")
        self.M[1][1] = Peon(1, 1, "R")
        self.M[1][2] = Peon(1, 2, "R")
        self.M[1][3] = Peon(1, 3, "R")
        self.M[1][4] = Peon(1, 4, "R")
        self.M[1][5] = Peon(1, 5, "R")
        self.M[1][6] = Peon(1, 6, "R")
        self.M[1][7] = Peon(1, 7, "R")

        self.M[6][0] = Peon(6, 0, "A")
        self.M[6][1] = Peon(6, 1, "A")
        self.M[6][2] = Peon(6, 2, "A")
        self.M[6][3] = Peon(6, 3, "A")
        self.M[6][4] = Peon(6, 4, "A")
        self.M[6][5] = Peon(6, 5, "A")
        self.M[6][6] = Peon(6, 6, "A")
        self.M[6][7] = Peon(6, 7, "A")

        self.M[7][0] = Torre(7, 0, "A")
        self.M[7][1] = Caballo(7, 1, "A")
        self.M[7][2] = Alfil(7, 2, "A")
        self.M[7][3] = Queen(7, 3, "A")
        self.M[7][4] = King(7, 4, "A")
        self.M[7][5] = Alfil(7, 5, "A")
        self.M[7][6] = Caballo(7, 6, "A")
        self.M[7][7] = Torre(7, 7, "A")
示例#24
0
    def __init__(self):

        self.board = [[Empty(x='',y='',sl='.',team='')]*9 for _ in range(9)]
        self.board[0][0] = Rook(x=0,y=0,sl='r',team='black')
        self.board[0][1] = Knight(x=0,y=1,sl='n',team='black')
        self.board[0][2] = Bishop(x=0,y=2,sl='b',team='black')
        self.board[0][3] = Queen(x=0,y=3,sl='q',team='black')
        self.board[0][4] = King(x=0,y=4,sl='k',team='black')
        self.board[0][5] = Bishop(x=0,y=5,sl='b',team='black')
        self.board[0][6] = Knight(x=0,y=6,sl='n',team='black')
        self.board[0][7] = Rook(x=0,y=7,sl='r',team='black')
        self.board[1][0] = Pawn(x=1,y=0,sl='p',team='black')
        self.board[1][1] = Pawn(x=1,y=1,sl='p',team='black')
        self.board[1][2] = Pawn(x=1,y=2,sl='p',team='black')
        self.board[1][3] = Pawn(x=1,y=3,sl='p',team='black')
        self.board[1][4] = Pawn(x=1,y=4,sl='p',team='black')
        self.board[1][5] = Pawn(x=1,y=5,sl='p',team='black')
        self.board[1][6] = Pawn(x=1,y=6,sl='p',team='black')
        self.board[1][7] = Pawn(x=1,y=7,sl='p',team='black')
        self.board[7][0] = Rook(x=7,y=0,sl='R',team='white')
        self.board[7][1] = Knight(x=7,y=1,sl='N',team='white')
        self.board[7][2] = Bishop(x=7,y=2,sl='B',team='white')
        self.board[7][3] = Queen(x=7,y=3,sl='Q',team='white')
        self.board[7][4] = King(x=7,y=4,sl='K',team='white')
        self.board[7][5] = Bishop(x=7,y=5,sl='B',team='white')
        self.board[7][6] = Knight(x=7,y=6,sl='N',team='white')
        self.board[7][7] = Rook(x=7,y=7,sl='R',team='white')
        self.board[6][0] = Pawn(x=3,y=0,sl='P',team='white')
        self.board[6][1] = Pawn(x=6,y=1,sl='P',team='white')
        self.board[6][2] = Pawn(x=6,y=2,sl='P',team='white')
        self.board[6][3] = Pawn(x=6,y=3,sl='P',team='white')
        self.board[6][4] = Pawn(x=6,y=4,sl='P',team='white')
        self.board[6][5] = Pawn(x=6,y=5,sl='P',team='white')
        self.board[6][6] = Pawn(x=6,y=6,sl='P',team='white')
        self.board[6][7] = Pawn(x=6,y=7,sl='P',team='white')

        for i in range(9):
            self.board[i][8 ]= Number(sl=i)
        for j in range(9):
            self.board[8][j] = Number(sl=j)
示例#25
0
    def test_init(self):
        # test valido
        xs = [chr(ord('a') + i) for i in range(0, 8)]
        ys = [i for i in range(1, 9)]

        for x, y in product(xs, ys):
            q = Queen(x, y)

            verifica = []
            for element_x in xs:
                if q.pos_in_x != element_x:
                    verifica.append((element_x, q.pos_in_y))
                elif q.pos_in_x == element_x:
                    for element_y in ys:
                        if element_y != q.pos_in_y:
                            verifica.append((q.pos_in_x, element_y))

            try:
                self.assertTrue(sorted(verifica) == sorted(q.possible_poss()))
            except:
                print('Something is wrong')
                break
示例#26
0
 def pawn_promotion(self, pawn, end):
     options = ("q", "r", "b", "k")
     new_piece = "None"
     while new_piece.lower()[0] not in options:
         new_piece = input("What piece would you like to promote your pawn to? Your options are:\n[Q]ueen\n[R]ook\n[B]ishop\n[K]night ")
     if new_piece.lower()[0] == "q":
         self.board[end[0]][end[1]].piece = Queen(color=pawn.color)
     if new_piece.lower()[0] == "r":
         self.board[end[0]][end[1]].piece = Rook(color=pawn.color)
     if new_piece.lower()[0] == "b":
         self.board[end[0]][end[1]].piece = Bishop(color=pawn.color)
     if new_piece.lower()[0] == "k":
         self.board[end[0]][end[1]].piece = Knight(color=pawn.color)
示例#27
0
 def set_promoted_piece(self, piece_type, piece_position, piece_alliance):
     if piece_type == Type.QUEEN:
         from queen import Queen
         self.promoted_piece = Queen(piece_position, piece_alliance)
     elif piece_type == Type.BISHOP:
         from bishop import Bishop
         self.promoted_piece = Bishop(piece_position, piece_alliance)
     elif piece_type == Type.KNIGHT:
         from knight import Knight
         self.promoted_piece = Knight(piece_position, piece_alliance)
     elif piece_type == Type.ROOK:
         from rook import Rook
         self.promoted_piece = Rook(piece_position, piece_alliance)
示例#28
0
    def _climb_step(self):
        nextBoard = Board(self.n)
        tempBoard = Board(self.n)
        nextBoard.copy_queens(self.board)
        tempBoard.copy_queens(self.board)
        curHeuristic = self.board.get_heuristic()  # heuristic value of current board
        bestHeuristic = curHeuristic

        # Loop along each queen
        for i in range(self.n):
            tempBoard.queens[i] = Queen(0, tempBoard.queens[i].get_column())
            if i > 0:
                tempBoard.queens[i-1] = Queen(self.board.queens[i-1].get_row(), self.board.queens[i-1].get_column())

            # Loop to make the queen move along the coloumn
            for j in range(self.n):
                tempHeuristic = tempBoard.get_heuristic()

                # if tempHeuristic is less than the bestHeuristic,
                # then replace it as best and copy the tempBoard to nextBoard
                if tempHeuristic < bestHeuristic:
                    bestHeuristic = tempHeuristic
                    nextBoard.copy_queens(tempBoard)

                # move a step down the row
                if tempBoard.queens[i].get_row() < self.n-1:
                    tempBoard.queens[i].step()

        self.stepsClimbed += 1
        self.stepsClimbedRestart += 1

        if bestHeuristic == curHeuristic:  # no change in heuristic from last heuristic
            nextBoard.gen_random_board()  # generate a random configuration
            self.restarts += 1
            self.stepsClimbedRestart = 0
            bestHeuristic = nextBoard.get_heuristic()

        self.board.copy_queens(nextBoard)  # copy nextBoard to current board
        return bestHeuristic
示例#29
0
    def board_setup(self):
        w = "White"
        b = "Black"

        for space in self.board[1]:
            self.board[space.position[0]][space.position[1]].piece = Pawn(color=b)
        for space in self.board[6]:
            self.board[space.position[0]][space.position[1]].piece = Pawn(color=w)
        self.board[0][0].piece = Rook(color=b)
        self.board[0][1].piece = Knight(color=b)
        self.board[0][2].piece = Bishop(color=b)
        self.board[0][3].piece = Queen(color=b)
        self.board[0][4].piece = King(color=b)
        self.board[0][5].piece = Bishop(color=b)
        self.board[0][6].piece = Knight(color=b)
        self.board[0][7].piece = Rook(color=b)
        self.board[7][0].piece = Rook(color=w)
        self.board[7][1].piece = Knight(color=w)
        self.board[7][2].piece = Bishop(color=w)
        self.board[7][3].piece = Queen(color=w)
        self.board[7][4].piece = King(color=w)
        self.board[7][5].piece = Bishop(color=w)
        self.board[7][6].piece = Knight(color=w)
        self.board[7][7].piece = Rook(color=w)
示例#30
0
 def test_is_safe(self):
     """test_is_safe: Test to make sure that is_safe function works
     """
     solver = Queen(8)
     solver.board_state = [0]
     self.assertFalse(solver.is_safe(0, 1))
     self.assertFalse(solver.is_safe(1, 0))
     self.assertFalse(solver.is_safe(1, 1))
     self.assertTrue(solver.is_safe(2, 1))
     self.assertTrue(solver.is_safe(1, 2))
示例#31
0
 def create_new_piece(piece, position):
     if piece.get_piece_type() == Type.PAWN:
         from pawn import Pawn
         return Pawn(position, piece.get_piece_alliance())
     elif piece.get_piece_type() == Type.QUEEN:
         from queen import Queen
         return Queen(position, piece.get_piece_alliance())
     elif piece.get_piece_type() == Type.BISHOP:
         from bishop import Bishop
         return Bishop(position, piece.get_piece_alliance())
     elif piece.get_piece_type() == Type.KNIGHT:
         from knight import Knight
         return Knight(position, piece.get_piece_alliance())
     elif piece.get_piece_type() == Type.ROOK:
         from rook import Rook
         return Rook(position, piece.get_piece_alliance())
     elif piece.get_piece_type() == Type.KING:
         from king import King
         return King(position, piece.get_piece_alliance())
示例#32
0
        return msvcrt.getch()

screen=set_screen()

player = Player(28,1)
player.arr = screen.arr
fireballs = Fireball()
fireballs.arr = player.arr
fireballs.pposx = player.posx
fireballs.pposy = player.posy
fireballs.life = player.life

don = Donkey()
don.arr = player.arr
don.set_pos(7,1)
quen = Queen()
quen.arr = player.arr
quen.set_pos(2,17)
for i in range(30):
	for j in range(45):
		sys.stdout.write(screen.arr[i][j])
	print ''	

getch =_Getch()
while(1):
	player.m = getch()
	if player.m=='Q':
		print "You Quit!!"	
		break
	if fireballs.life==0:
		print "You Lose"