def move_pyramid_conversion_init(self, bt=BoardType.MayanAscendancy): bt = BoardType(bt) self.board = Board(bt) self.board.clear() self.delete_all_marks() get_arrow_colors = SH.get_func_get_colors(*self.get_arrow_colors(bt)) get_text_position = SH.get_func_get_text_position(left=0.05, top=1.0, right=0.75, bottom=0.05) get_font_definition = SH.get_func_get_font_definition() get_text_colors = SH.get_func_get_colors(*self.get_text_colors(bt), font=get_font_definition(bt.get_size())) self.board.set_piece(3, 1, PieceType(PieceType.Pyramid)) self.board.set_piece(6, 1, PieceType(-PieceType.Rook)) self.board.set_piece(7, 5, PieceType(PieceType.Bishop)) self.arrows.append( SH.get_new_arrow(4, 2, 3, 1, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(5, 3, 4, 2, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(6, 4, 5, 3, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(7, 5, 6, 4, **get_arrow_colors(True)) ) self.texts.append( SH.get_new_text("1", *get_text_position(6, 4, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("2", *get_text_position(5, 3, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("3", *get_text_position(4, 2, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("4", *get_text_position(3, 1, SH.Corner.UpperLeft), **get_text_colors(True)) ) return self.format_return_values("move_pyramid_conversion_init")
def intro_castling(self, bt): bt = BoardType(bt) self.board = Board(bt, bt.get_size(), 1) self.board.clear() self.delete_all_marks() pos_king_h = bt.get_size() // 2 offset = 1 if bt.does_contain(PieceType.Star) else 0 pos_rook_r = bt.get_size() - 1 - offset self.board.set_piece(pos_king_h, 0, PieceType.King) self.board.set_piece(offset, 0, PieceType.Rook) self.board.set_piece(pos_rook_r, 0, PieceType.Rook) if bt.does_contain(PieceType.Star): self.board.set_piece(0, 0, PieceType.Star) self.board.set_piece(bt.get_size() - 1, 0, -PieceType.Star) get_text_position = SH.get_func_get_text_position(left=0.05, top=1.0, right=0.75, bottom=0.05) get_font_definition = SH.get_func_get_font_definition() get_text_colors = SH.get_func_get_colors(*self.get_text_colors(bt), font=get_font_definition(bt.get_size())) diff = pos_rook_r - pos_king_h for i in xrange(2, diff): pos_l = pos_king_h - i pos_r = pos_king_h + i self.texts.append( SH.get_new_text(str(i-1), *get_text_position(pos_l, 0, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text(str(i-1), *get_text_position(pos_r, 0, SH.Corner.UpperLeft), **get_text_colors(True)) ) return bt
def move_pyramid_promo_init(self, bt=BoardType.MayanAscendancy): bt = BoardType(bt) self.board = Board(bt) self.board.clear() self.delete_all_marks() get_arrow_colors = SH.get_func_get_colors(*self.get_arrow_colors(bt)) get_text_position = SH.get_func_get_text_position(left=0.05, top=1.0, right=0.75, bottom=0.05) get_font_definition = SH.get_func_get_font_definition() get_text_colors = SH.get_func_get_colors(*self.get_text_colors(bt), font=get_font_definition(bt.get_size())) self.board.set_piece(3, 7, PieceType(PieceType.Pyramid)) self.board.set_piece(6, 7, PieceType(PieceType.Pawn)) self.board.set_piece(11, 3, PieceType(PieceType.Pegasus)) self.arrows.append( SH.get_new_arrow(11, 3, 9, 4, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(9, 4, 7, 5, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(7, 5, 5, 6, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(5, 6, 3, 7, **get_arrow_colors(True)) ) self.texts.append( SH.get_new_text("1", *get_text_position(9, 4, SH.Corner.UpperRight), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("2", *get_text_position(7, 5, SH.Corner.UpperRight), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("3", *get_text_position(5, 6, SH.Corner.UpperRight), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("4", *get_text_position(3, 7, SH.Corner.UpperRight), **get_text_colors(True)) ) return self.format_return_values("move_pyramid_promo_init")
def castling_short_right(self, bt): bt = BoardType(bt) self.board = Board(bt, bt.get_size(), 1) self.board.clear() self.delete_all_marks() pos_king_init = bt.get_size() // 2 offset = 1 if bt.does_contain(PieceType.Star) else 0 # pos_init_rook_r = bt.get_size() - 1 - offset # diff = pos_rook_r - pos_king_init pos_king_h = pos_king_init + 2 pos_rook_r = pos_king_h - 1 self.board.set_piece(pos_king_h, 0, PieceType.King) self.board.set_piece(offset, 0, PieceType.Rook) self.board.set_piece(pos_rook_r, 0, PieceType.Rook) if bt.does_contain(PieceType.Star): self.board.set_piece(0, 0, PieceType.Star) self.board.set_piece(bt.get_size() - 1, 0, -PieceType.Star) get_text_position = SH.get_func_get_text_position(left=0.05, top=1.0, right=0.75, bottom=0.05) get_font_definition = SH.get_func_get_font_definition() get_text_colors = SH.get_func_get_colors(*self.get_text_colors(bt), font=get_font_definition(bt.get_size())) self.texts.append( SH.get_new_text("K", *get_text_position(pos_king_init, 0, SH.Corner.UpperLeft), **get_text_colors(False)) ) return bt
def move_wave_init(self, bt=BoardType.MirandasVeil): bt = BoardType(bt) self.board = Board(bt) self.board.clear() self.delete_all_marks() start_wave = (3, 4) self.board.set_piece(*start_wave, piece=PieceType(PieceType.Wave)) start_pegasus = (13, 9) self.board.set_piece(*start_pegasus, piece=PieceType(PieceType.Pegasus)) get_arrow_colors = SH.get_func_get_colors(*self.get_arrow_colors(bt)) get_text_position = SH.get_func_get_text_position(left=0.05, top=1.0, right=0.75, bottom=0.05) get_font_definition = SH.get_func_get_font_definition() get_text_colors = SH.get_func_get_colors(*self.get_text_colors(bt), font=get_font_definition(bt.get_size())) # get_field_marker_colors = SH.get_func_get_colors(*self.get_field_marker_colors(bt)) get_arrow_action_colors = SH.get_func_get_colors(*self.get_arrow_action_colors(bt)) get_text_action_colors = SH.get_func_get_colors(*self.get_text_action_colors(bt), font=get_font_definition(bt.get_size())) gen_rel = MG.get_gen_move((-2, -1)) gen_abs_pos = MG.get_gen_abs_pos(gen_rel, start=start_pegasus, pos_limits=self.board.get_position_limits()) i = 1 start_arrow = start_pegasus steps_to_wave = 5 for pos in gen_abs_pos(): arrow = (start_arrow[0], start_arrow[1], pos[0], pos[1]) before_wave = bool(i < (steps_to_wave+1)) if i <> steps_to_wave: self.arrows.append( SH.get_new_arrow(*arrow, **get_arrow_colors(before_wave)) ) self.texts.append( SH.get_new_text(str(i), *get_text_position(*pos, corner=SH.Corner.UpperLeft), **get_text_colors(before_wave)) ) # self.field_markers.append( SH.get_new_field_marker(*pos, **get_field_marker_colors(before_wave)) ) else: self.arrows.append( SH.get_new_arrow(*arrow, **get_arrow_action_colors(before_wave)) ) self.texts.append( SH.get_new_text(str(i), *get_text_position(*pos, corner=SH.Corner.UpperLeft), **get_text_action_colors(before_wave)) ) # self.field_markers.append( SH.get_new_field_marker(*pos, **get_field_marker_colors(before_wave)) ) i += 1 start_arrow = pos return self.format_return_values("move_wave_init")
def move_unicorn_opposite_color(self, bt=BoardType.AgeOfAquarius): bt = BoardType(bt) self.board = Board(bt) self.board.clear() self.delete_all_marks() start = (7, 6) self.board.set_piece(*start, piece=PieceType(-PieceType.Unicorn)) get_arrow_colors = SH.get_func_get_colors(*self.get_arrow_colors(bt)) get_text_position = SH.get_func_get_text_position(left=0.15, top=1.0, right=0.75, bottom=0.05) get_font_definition = SH.get_func_get_font_definition() get_text_colors = SH.get_func_get_colors(*self.get_text_colors(bt), font=get_font_definition(bt.get_size())) get_field_marker_colors = SH.get_func_get_colors(*self.get_field_marker_colors(bt)) gen_abs_pos = MG.get_gen_abs_pos(MG.gen_unicorn_rel_long_moves, start=start, pos_limits=((3, 11), (2, 10))) i = 1 for pos in gen_abs_pos(): self.field_markers.append( SH.get_new_field_marker(*pos, **get_field_marker_colors(True)) ) self.texts.append( SH.get_new_text(str(i), *get_text_position(*pos, corner=SH.Corner.UpperLeft), **get_text_colors(True)) ) i += 1 return self.format_return_values("move_unicorn_opposite_color")
def move_pegasus_initial(self, bt=BoardType.CroatianTies): bt = BoardType(bt) self.board = Board(bt, 5, 5) self.board.clear() self.delete_all_marks() start = (2, 2) self.board.set_piece(*start, piece=PieceType(PieceType.Pegasus)) get_arrow_colors = SH.get_func_get_colors(*self.get_arrow_colors(bt)) get_text_position = SH.get_func_get_text_position(left=0.20, top=1.0, right=0.75, bottom=0.05) get_font_definition = SH.get_func_get_font_definition() get_text_colors = SH.get_func_get_colors(*self.get_text_colors(bt), font=get_font_definition(bt.get_size())) get_field_marker_colors = SH.get_func_get_colors(*self.get_field_marker_colors(bt)) gen_abs_pos = MG.get_gen_abs_pos(MG.gen_knight_rel_moves, start=start, pos_limits=self.board.get_position_limits()) i = 1 for pos in gen_abs_pos(): self.field_markers.append( SH.get_new_field_marker(*pos, **get_field_marker_colors(True)) ) self.texts.append( SH.get_new_text(str(i), *get_text_position(*pos, corner=SH.Corner.UpperLeft), **get_text_colors(True)) ) i += 1 return self.format_return_values("move_pegasus_initial", size_x=0.5, size_y=0.5)
def intro_en_passant(self, bt): bt = BoardType(bt) size = (bt.get_size() + 1) // 2 self.board = Board(bt, 3, size) self.board.clear() self.delete_all_marks() get_arrow_colors = SH.get_func_get_colors(*self.get_arrow_colors(bt)) get_text_position = SH.get_func_get_text_position(left=0.05, top=1.0, right=0.5, bottom=0.05) get_font_definition = SH.get_func_get_font_definition() get_text_colors = SH.get_func_get_colors(*self.get_text_colors(bt), font=get_font_definition(bt.get_size())) self.board.set_piece(1, 0, PieceType(PieceType.Knight)) self.board.set_piece(1, 1, PieceType(PieceType.Pawn)) for i in xrange(3, size): loc = 0 if i % 2 == 0 else 2 self.board.set_piece(loc, i, PieceType(-PieceType.Pawn)) self.arrows.append( SH.get_new_arrow(loc, i, 1, i-1, **get_arrow_colors(True)) ) self.texts.append( SH.get_new_text(str(i-2), *get_text_position(1, i, SH.Corner.UpperRight), **get_text_colors(True)) ) return bt
def move_pyramid_conversion_activated(self, bt=BoardType.MayanAscendancy): bt = BoardType(bt) self.board = Board(bt) self.board.clear() self.delete_all_marks() get_arrow_colors = SH.get_func_get_colors(*self.get_arrow_colors(bt)) get_text_position = SH.get_func_get_text_position(left=0.05, top=1.0, right=0.75, bottom=0.05) get_font_definition = SH.get_func_get_font_definition() get_text_colors = SH.get_func_get_colors(*self.get_text_colors(bt), font=get_font_definition(bt.get_size())) get_arrow_colors_alt = SH.get_func_get_colors("#303030", "#FF0000", "#101010", "#303030") get_text_colors_alt = SH.get_func_get_colors("#FF0000", "#303030", "#303030", "#808080", font=get_font_definition(bt.get_size())) self.board.set_piece(3, 1, PieceType(PieceType.Bishop)) self.board.set_piece(6, 1, PieceType(-PieceType.Rook)) # direction <1, 0> self.arrows.append( SH.get_new_arrow(3, 1, 4, 1, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(4, 1, 5, 1, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(5, 1, 6, 1, **get_arrow_colors_alt(True)) ) self.arrows.append( SH.get_new_arrow(6, 1, 7, 1, **get_arrow_colors(False)) ) self.texts.append( SH.get_new_text("1", *get_text_position(4, 1, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("2", *get_text_position(5, 1, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("3", *get_text_position(6, 1, SH.Corner.UpperLeft), **get_text_colors_alt(True)) ) self.texts.append( SH.get_new_text("4", *get_text_position(7, 1, SH.Corner.UpperLeft), **get_text_colors(False)) ) # direction <0, 1> self.arrows.append( SH.get_new_arrow(3, 1, 3, 2, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(3, 2, 3, 3, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(3, 3, 3, 4, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(3, 4, 3, 5, **get_arrow_colors(True)) ) self.texts.append( SH.get_new_text("1", *get_text_position(3, 2, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("2", *get_text_position(3, 3, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("3", *get_text_position(3, 4, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("4", *get_text_position(3, 5, SH.Corner.UpperLeft), **get_text_colors(True)) ) # direction <-1, 0> self.arrows.append( SH.get_new_arrow(3, 1, 2, 1, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(2, 1, 1, 1, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(1, 1, 0, 1, **get_arrow_colors(True)) ) self.texts.append( SH.get_new_text("1", *get_text_position(2, 1, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("2", *get_text_position(1, 1, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("3", *get_text_position(0, 1, SH.Corner.UpperLeft), **get_text_colors(True)) ) # direction <0, -1> self.arrows.append( SH.get_new_arrow(3, 1, 3, 0, **get_arrow_colors(True)) ) self.texts.append( SH.get_new_text("1", *get_text_position(3, 0, SH.Corner.UpperLeft), **get_text_colors(True)) ) return self.format_return_values("move_pyramid_conversion_activated")
def move_pegasus(self, bt=BoardType.CroatianTies): bt = BoardType(bt) self.board = Board(bt) self.board.clear() self.delete_all_marks() self.board.set_piece(2, 1, PieceType(PieceType.Pegasus)) self.board.set_piece(5, 7, PieceType(PieceType.Pawn)) self.board.set_piece(6, 3, PieceType(-PieceType.Pawn)) self.board.set_piece(3, 4, PieceType(-PieceType.Rook)) self.board.set_piece(4, 4, PieceType(-PieceType.Rook)) self.board.set_piece(5, 2, PieceType(PieceType.Rook)) self.board.set_piece(5, 3, PieceType(PieceType.Rook)) get_arrow_colors = SH.get_func_get_colors(*self.get_arrow_colors(bt)) get_text_position = SH.get_func_get_text_position(left=0.05, top=1.0, right=0.75, bottom=0.05) get_font_definition = SH.get_func_get_font_definition() get_text_colors = SH.get_func_get_colors(*self.get_text_colors(bt), font=get_font_definition(bt.get_size())) # direction 1, i.e. <2, 1> self.arrows.append( SH.get_new_arrow(2, 1, 4, 2, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(4, 2, 6, 3, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(6, 3, 8, 4, **get_arrow_colors(False)) ) self.texts.append( SH.get_new_text("1", *get_text_position(4, 2, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("1", *get_text_position(6, 3, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("1", *get_text_position(8, 4, SH.Corner.UpperLeft), **get_text_colors(False)) ) # direction 2, i.e. <1, 2> self.arrows.append( SH.get_new_arrow(2, 1, 3, 3, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(3, 3, 4, 5, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(4, 5, 5, 7, **get_arrow_colors(False)) ) self.arrows.append( SH.get_new_arrow(5, 7, 6, 9, **get_arrow_colors(False)) ) self.texts.append( SH.get_new_text("2", *get_text_position(3, 3, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("2", *get_text_position(4, 5, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("2", *get_text_position(5, 7, SH.Corner.UpperLeft), **get_text_colors(False)) ) self.texts.append( SH.get_new_text("2", *get_text_position(6, 9, SH.Corner.UpperLeft), **get_text_colors(False)) ) # direction 3, i.e. <-1, 2> self.arrows.append( SH.get_new_arrow(2, 1, 1, 3, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(1, 3, 0, 5, **get_arrow_colors(True)) ) self.texts.append( SH.get_new_text("3", *get_text_position(1, 3, SH.Corner.UpperRight), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("3", *get_text_position(0, 5, SH.Corner.UpperRight), **get_text_colors(True)) ) # direction 4, i.e. <-2, 1> self.arrows.append( SH.get_new_arrow(2, 1, 0, 2, **get_arrow_colors(True)) ) self.texts.append( SH.get_new_text("4", *get_text_position(0, 2, SH.Corner.UpperRight), **get_text_colors(True)) ) # direction 5, i.e. <-2, -1> self.arrows.append( SH.get_new_arrow(2, 1, 0, 0, **get_arrow_colors(True)) ) self.texts.append( SH.get_new_text("5", *get_text_position(0, 0, SH.Corner.UpperLeft), **get_text_colors(True)) ) # direction 6, i.e. <2, -1> self.arrows.append( SH.get_new_arrow(2, 1, 4, 0, **get_arrow_colors(True)) ) self.texts.append( SH.get_new_text("6", *get_text_position(4, 0, SH.Corner.UpperRight), **get_text_colors(True)) ) return self.format_return_values("move_pegasus")
def move_pegasus_direction(self, bt=BoardType.CroatianTies): bt = BoardType(bt) self.board = Board(bt, 10, 10) self.board.clear() self.delete_all_marks() self.board.set_piece(2, 1, PieceType(PieceType.Pegasus)) get_arrow_colors = SH.get_func_get_colors(*self.get_arrow_colors(bt)) get_text_position = SH.get_func_get_text_position(left=0.05, top=1.0, right=0.75, bottom=0.05) get_text_position_2 = SH.get_func_get_text_position(left=0.05, top=1.0, right=0.5, bottom=0.05) get_font_definition = SH.get_func_get_font_definition() get_text_colors = SH.get_func_get_colors(*self.get_text_colors(bt), font=get_font_definition(bt.get_size())) # main direction, i.e. <1, 2> self.arrows.append( SH.get_new_arrow(2, 1, 3, 3, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(3, 3, 4, 5, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(4, 5, 5, 7, **get_arrow_colors(True)) ) self.arrows.append( SH.get_new_arrow(5, 7, 6, 9, **get_arrow_colors(True)) ) self.texts.append( SH.get_new_text("1", *get_text_position(3, 3, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("2", *get_text_position(4, 5, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("3", *get_text_position(5, 7, SH.Corner.UpperLeft), **get_text_colors(True)) ) self.texts.append( SH.get_new_text("4", *get_text_position(6, 9, SH.Corner.UpperLeft), **get_text_colors(True)) ) # direction 2a, i.e. <2, 1> self.arrows.append( SH.get_new_arrow(4, 5, 6, 6, **get_arrow_colors(False)) ) self.texts.append( SH.get_new_text("2a", *get_text_position_2(6, 6, SH.Corner.UpperRight), **get_text_colors(False)) ) # direction 2b, i.e. <2, -1> self.arrows.append( SH.get_new_arrow(4, 5, 6, 4, **get_arrow_colors(False)) ) self.texts.append( SH.get_new_text("2b", *get_text_position_2(6, 4, SH.Corner.UpperRight), **get_text_colors(False)) ) # direction 2c, i.e. <1, -2> self.arrows.append( SH.get_new_arrow(4, 5, 5, 3, **get_arrow_colors(False)) ) self.texts.append( SH.get_new_text("2c", *get_text_position_2(5, 3, SH.Corner.UpperRight), **get_text_colors(False)) ) # direction 2d, i.e. <-2, -1> self.arrows.append( SH.get_new_arrow(4, 5, 2, 4, **get_arrow_colors(False)) ) self.texts.append( SH.get_new_text("2d", *get_text_position(2, 4, SH.Corner.UpperLeft), **get_text_colors(False)) ) # direction 2e, i.e. <-2, 1> self.arrows.append( SH.get_new_arrow(4, 5, 2, 6, **get_arrow_colors(False)) ) self.texts.append( SH.get_new_text("2e", *get_text_position(2, 6, SH.Corner.UpperLeft), **get_text_colors(False)) ) # direction 2f, i.e. <-1, 2> self.arrows.append( SH.get_new_arrow(4, 5, 3, 7, **get_arrow_colors(False)) ) self.texts.append( SH.get_new_text("2f", *get_text_position_2(3, 7, SH.Corner.UpperRight), **get_text_colors(False)) ) return self.format_return_values("move_pegasus_direction")