From 0d2955f90a559b6d0ca1927d092248e44ceb14a5 Mon Sep 17 00:00:00 2001 From: Tomek Sidoruk Date: Tue, 4 May 2021 21:40:18 +0200 Subject: [PATCH] refacetor --- main.py | 123 +++++++++----------------------------------------------- 1 file changed, 20 insertions(+), 103 deletions(-) diff --git a/main.py b/main.py index c644a23..9ea5ced 100644 --- a/main.py +++ b/main.py @@ -10,8 +10,9 @@ import project_constants as const import minefield as mf import searching_algorithms.bfs as bfs from display_assets import blit_graphics - - +from ui.input_box import * +from ui.button import * +from ui.text_box import * def main(): pygame.init() @@ -33,115 +34,31 @@ def main(): running = False # basic font for user typed - base_font = pygame.font.Font(None, 32) - user_text1 = '' - user_text2 = '' - # create rectangle - input_rect1 = pygame.Rect(200, 200, 140, 32) - input_rect2 = pygame.Rect(200, 250, 140, 32) - - randomb = pygame.Rect(200, 300, 140, 32) - ok = pygame.Rect(200, 350, 140, 32) - x = pygame.Rect(180, 200, 140, 32) - y = pygame.Rect(180, 250, 140, 32) - okt = pygame.Rect(240, 305, 140, 32) - randtext = pygame.Rect(220, 355, 140, 32) - # color_active stores color(lightskyblue3) which - # gets active when input box is clicked by user - color_active = pygame.Color('lightskyblue3') - - # color_passive store color(chartreuse4) which is - # color of input box. - color_passive = pygame.Color('chartreuse4') - color1 = color_passive - color2 = color_passive + input1=InputBox(position=(200,200),dimensions=(140,32),label="x") + input2 = InputBox(position=(200, 250), dimensions=(140, 32),label="y") + randombutton = Button(position=(200,350),dimensions=(140,32),text="random") + okbutton = Button(position=(200,300),dimensions=(140,32),text="ok") while True: - active1 = False - active2 = False while running== False: - for event in pygame.event.get(): - - # if user types QUIT then the screen will close - if event.type == pygame.QUIT: - pygame.quit() - sys.exit() - - if event.type == pygame.MOUSEBUTTONDOWN: - if input_rect1.collidepoint(event.pos): - active1 = True - else: - active1 = False - if input_rect2.collidepoint(event.pos): - active2 = True - else: - active2 = False - if randomb.collidepoint(event.pos): - running = True - if ok.collidepoint(event.pos): - user_text1 = str(random.randint(0, 9)) - user_text2 =str(random.randint(0, 9)) - - if event.type == pygame.KEYDOWN: - if active2 == True: - if event.key == pygame.K_BACKSPACE: - user_text2 = user_text2[:-1] - else: - user_text2 += event.unicode - - if active1 == True: - if event.key == pygame.K_BACKSPACE: - user_text1 = user_text1[:-1] - else: - user_text1 += event.unicode - - - # it will set background color of screen const.SCREEN.fill((255, 255, 255)) + events= pygame.event.get() + input1.run(const.SCREEN,pygame.mouse.get_pos(),events) + input2.run(const.SCREEN, pygame.mouse.get_pos(), events) - if active1: - color1 = color_active - else: - color1 = color_passive + okbutton.draw(const.SCREEN, pygame.mouse.get_pos()) + randombutton.draw(const.SCREEN, pygame.mouse.get_pos()) - if active2: - color2 = color_active - else: - color2 = color_passive - - # draw rectangle and argument passed which should - # be on screen - pygame.draw.rect(const.SCREEN, color1, input_rect1) - pygame.draw.rect(const.SCREEN, color2, input_rect2) - pygame.draw.rect(const.SCREEN, color_passive, ok) - pygame.draw.rect(const.SCREEN, color_passive, randomb) - text_surface1 = base_font.render(user_text1, True, (255, 255, 255)) - text_surface2 = base_font.render(user_text2, True, (255, 255, 255)) - xd = base_font.render("x", True, (0, 0, 0)) - yd = base_font.render("y", True, (0, 0, 0)) - okd = base_font.render("ok", True, (0, 0, 0)) - randd = base_font.render("random", True, (0, 0, 0)) - # render at position stated in arguments - const.SCREEN.blit(xd, (x.x, x.y)) - const.SCREEN.blit(yd, (y.x, y.y)) - const.SCREEN.blit(okd, (okt.x, okt.y)) - const.SCREEN.blit(randd, (randtext.x, randtext.y)) - const.SCREEN.blit(text_surface1, (input_rect1.x + 5, input_rect1.y + 5)) - const.SCREEN.blit(text_surface2, (input_rect2.x + 5, input_rect2.y + 5)) - # set width of textfield so that text cannot get - # outside of user's text input - input_rect1.w = max(100, text_surface1.get_width() + 10) - input_rect2.w = max(100, text_surface2.get_width() + 10) - - # display.flip() will update only a portion of the - # screen to updated, not full area + if okbutton.is_clicked(pygame.mouse.get_pos(),events): + running = True + if randombutton.is_clicked(pygame.mouse.get_pos(), events): + input1.set_texts(user_input=str(random.randint(0, 9))) + input2.set_texts(user_input=str(random.randint(0, 9))) pygame.display.flip() - # clock.tick(60) means that for every second at most - # 60 frames should be passed. - clock.tick(60) - toy=int(user_text1) - tox = int(user_text2) + clock.tick(const.V_FPS) + toy=int(input1.get_input()) + tox = int(input2.get_input()) action_sequence = bfs.graphsearch( initial_state=bfs.State( row=minefield.agent.position[0],