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)
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)
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
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
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
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
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)
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))
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)]))
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)
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
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)
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)]))
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
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)
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")
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()
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)
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)
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")
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)
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
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)
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)
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
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)
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))
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())
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"