예제 #1
0
def init_ui(event_callback):
    global scr, EVENT_CALLBACK
    global UI_BOARD, UI_RECT_ID, UI_PIECE

    EVENT_CALLBACK = event_callback

    scr = Tkinter.Canvas(width=map_to_ui_x(boards.BOARD_WIDTH), height=map_to_ui_y(boards.BOARD_HEIGHT), bg=BACKGROUND_COLOR)
    scr.bind_all("<Key>", EVENT_CALLBACK)
    scr.pack()

    UI_BOARD = boards.create_board_lines(boards.BOARD_HEIGHT, pieces.EMPTY)
    UI_PIECE = [pieces.EMPTY, pieces.PIECE_INIT_X, pieces.PIECE_INIT_Y, pieces.PIECE_INIT_DIRECTION]

    UI_RECT_ID = []
    for j in range(boards.BOARD_HEIGHT):
        id_list = []
        for i in range(boards.BOARD_WIDTH):
            rect_id = ui_create_rect(i, j, BACKGROUND_COLOR)
            id_list.append(rect_id)
        UI_RECT_ID.append(id_list)
예제 #2
0
    def test_board_codec(self):
        """
        board = [['_', '_', '_', '_', ...],
                 ...,
                 ['_', '_', '_', '_', ...],
                 ['_', 'S', '_', '_', ...],
                 ['_', 'S', 'S', '_', ...],
                 ['_', 'T', 'S', '_', ...],
                 ['T', 'T', 'T', '_', ...]]
        """
        board = boards.create_board_lines(boards.BOARD_HEIGHT, '_')
        board[-1][0] = board[-1][1] = board[-1][2] = board[-2][1] = 'T'
        board[-2][2] = board[-3][1] = board[-3][2] = board[-4][1] = 'S'

        expect = codec.BOARD_HEADER, board

        code_str = codec.encode_board(board)
        result = codec.decode(code_str)

        self.assertEqual(result, expect)
예제 #3
0
 def strip_board_lines(self, line_idx_list):
     line_idx_set = set(line_idx_list)
     nb = [line for (idx, line) in enumerate(self.status) if idx not in line_idx_set]  # 不要被消除的
     add_num = boards.BOARD_HEIGHT - len(nb)
     self.status = boards.create_board_lines(add_num, pieces.EMPTY) + nb
     self.commit_status()
예제 #4
0
 def __init__(self):
     self.status = boards.create_board_lines(boards.BOARD_HEIGHT, pieces.EMPTY)