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