refacetor
This commit is contained in:
parent
72ae67adb9
commit
0d2955f90a
123
main.py
123
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],
|
||||
|
Loading…
Reference in New Issue
Block a user