コード例 #1
0
def main(window):
    """
	Main function
	"""
    # Adding widgets
    buttons = set()
    start_btn = button.Button(20, 525, BTN_WIDTH, BTN_HEIGHT, RED, "Start",
                              startBtnClicked)
    regenerate_btn = button.Button(140, 525, BTN_WIDTH2, BTN_HEIGHT, RED,
                                   "Regenerate", regenerateClicked)
    algo_select = spinner.Spinner(10, 10, SPINNER_WIDTH, SPINNER_HEIGHT, GREEN,
                                  "Select sorting algorithm", ALGORITHMS)
    sizeSlider = slider.Slider(0, 100, 480, 550, 'Size', 20)

    buttons.add(start_btn)
    buttons.add(regenerate_btn)
    buttons.add(algo_select)
    buttons.add(sizeSlider)

    size = sizeSlider.value
    bars = generateBars(size)

    run = True
    while run:
        pygame.display.set_caption("Sorting algorithms visualizator")
        draw(window, buttons, bars)
        algorithm = algo_select.text
        size = sizeSlider.value

        for event in pygame.event.get():

            # Quit
            if event.type == pygame.QUIT:
                run = False

            # Left mouse click
            if pygame.mouse.get_pressed()[0]:
                posX, posY = pygame.mouse.get_pos()

                # Check if any button was clicked
                for btn in buttons:

                    btn.onClick(posX, posY)

                newBar = regenerate_btn.onClick(posX, posY, size)
                start_btn.onClick(posX, posY, bars, window, algorithm)
                # When anything else is clicked returns None. Protective programming
                if newBar != None:
                    bars = newBar

        # Check wether slider's values were changed
        if sizeSlider.value != size:
            size = sizeSlider.value
            # Regenerate bars when size is changed
            bars = generateBars(size)

    pygame.quit()
コード例 #2
0
ファイル: first_page.py プロジェクト: omidziveh/pychess
def page(screen):

    # ----- "Start" button -----
    start_button_size = size.Size(600, 500, width=100, height=50)
    start_button = button.Button(screen, start_button_size, "play", border=13)

    # ----- Logo -----
    logo_size = size.Size(600, 250, 550, 550)
    logo = image.Image(screen, 'assets\pages\logo.png', logo_size)

    # ----- Main loop -----
    while True:
        screen.fill(colors.white)

        # ---- Events ----
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            start_button.onHover(event)
            if start_button.onTap(event):
                second_page.page(screen)

        start_button.draw()  # draw "start" button.
        logo.draw()  # draw the app logo image.

        # ---- Updates ----
        pygame.display.update()
        pygame.time.Clock().tick(60)
コード例 #3
0
ファイル: datas.py プロジェクト: omidziveh/pychess
 def init_undo_button(self):
     undo_button_size = size.Size(self.inside_table_size.left + 35,
                                  self.inside_table_size.top - 20,
                                  width=60,
                                  height=23)
     undo_button = button.Button(self.screen,
                                 undo_button_size,
                                 'UNDO',
                                 background_color=self.colors['dark'])
     return undo_button
コード例 #4
0
ファイル: second_page.py プロジェクト: omidziveh/pychess
def page(screen, users={1: 'player1', 2:'player2'}):

    # ----- TextField -----
    player1_name_text = text.Text(
        screen, 'Player 1 name:', 460, 250, 18, fg_color=colors.gray_dark)
    player1_name_texteditingcontroller = texteditingcontroller.TextEditingController()
    player1_name_size = size.Size(710, 250, 250, 50)
    player1_name_textfield = textfield.TextField(screen, player1_name_size,
                                                 player1_name_texteditingcontroller,
                                                 default_text=users[1]
                                                 )
    
    # ----- "next" button -----
    next_button_size = size.Size(600, 500, 100, 50)
    next_button = button.Button(screen, next_button_size, 'next', border=13)
    
    # ----- back button -----
    back_button_size = size.Size(50, 50, width=70, height=70)
    back_button = image.Image(screen, 'assets/icons/back.png', back_button_size)

    # ----- Main loop -----
    while True:
        screen.fill(colors.white)

        # ---- Events ----
        for event in pygame.event.get():
            if event.type == pygame.QUIT: # EXIT
                pygame.quit()
                sys.exit()

            player1_name_textfield.typing(event)

            if next_button.onTap(event): # NEXT
                player1_name = player1_name_texteditingcontroller.text
                users[1] = player1_name
                third_page.page(screen, users) # NAVIGATOR

            if back_button.onTap(event): # BACK
                first_page.page(screen)

            next_button.onHover(event) # NEXT(hover)

        # ---- TextField ----
        player1_name_text.draw()
        player1_name_textfield.draw()
        
        # ---- buttons ----
        next_button.draw()
        back_button.draw()

        # ---- Updates ----
        pygame.display.update()
        pygame.time.Clock().tick(60)
コード例 #5
0
ファイル: black_win.py プロジェクト: omidziveh/pychess
def page(screen, users):
    x, y = screen.get_size()

    winner_name = users[2].upper()
    winner_text = text.Text(screen,
                            f'{winner_name} WINS!',
                            x // 2,
                            250,
                            80,
                            fg_color=colors.gray_dark)

    quit_button_size = size.Size(480, 500, 130, 50)
    quit_button = button.Button(screen, quit_button_size, 'QUIT')

    rematch_button_size = size.Size(720, 500, 130, 50)
    rematch_button = button.Button(screen, rematch_button_size, 'REMATCH')

    while True:
        screen.fill(colors.white)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

            if quit_button.onTap(event):
                pygame.quit()
                sys.exit()
            if rematch_button.onTap(event):
                second_page.page(screen, users)

            quit_button.onHover(event)
            rematch_button.onHover(event)

        winner_text.draw()
        quit_button.draw()
        rematch_button.draw()

        pygame.display.update()
コード例 #6
0
def page(screen, users):

    # ---- init -----
    check = init_check(screen)

    # ---- chess -----
    chess_board = chess.Board()

    # ----- table -----
    table_size = size.Size(300, 300, width=480, height=480)
    table = board.Board(screen, table_size, 'w', 60, chess_board)

    # ----- DataTable -----
    data_table_size = size.Size(1000, 300, width=350, height=500)
    data_table = datas.DataTable(screen, (100, 50), data_table_size)

    # ----- "Quit" button -----
    quit_button_size = size.Size(600, 270, width=250, height=50)
    quit_button = button.Button(screen, quit_button_size, 'QUIT')

    # ----- "Rematch" button -----
    rematch_button_size = size.Size(600, 350, width=250, height=50)
    rematch_button = button.Button(screen, rematch_button_size, 'REMATCH')

    # ----- menu -----
    my_menu = menu.Menu(screen, [quit_button, rematch_button])

    # ----- Main loop -----
    while True:
        screen.fill(colors.white)

        # ---- Events ----
        table.dict_to_list(table.generate_fen())

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

            if my_menu.enabled:  # if the menu is enabled
                if my_menu.onTap_close_button(event):  # close button
                    my_menu.enabled = False

                if my_menu.onTap_button(event, 0):  # QUIT button
                    pygame.quit()
                    sys.exit()

                if my_menu.onTap_button(event, 1):  # REAMTCH button
                    second_page.page(screen, users)

            if not my_menu.enabled:  # if the menu is NOT enabled
                if data_table.menu_button_tapped(event):
                    my_menu.enabled = True
                if data_table.undo_button_tapped(event):
                    try:
                        chess_board.pop()
                    except:
                        pass

                if event.type == pygame.MOUSEBUTTONUP:
                    table.tap_move(event.pos)
                    table.onTap_pieces(event.pos)

        # ---- Draw ----
        table.draw()
        data_table.draw()
        table.draw_pieces()
        table.draw_legal_moves()
        if chess_board.is_check():
            draw_check(screen, check)

        if chess_board.is_checkmate():
            if chess_board.turn:
                black_win.page(screen, users)
            else:
                white_win.page(screen, users)

        if my_menu.enabled:  # if menu is enabled
            my_menu.draw(event)

        # ---- Updates ----
        pygame.display.update()
        pygame.time.Clock().tick(60)