Как нарисовать кнопку в окне в pygame - PullRequest
2 голосов
/ 19 июня 2020

У меня есть этот код в моей программе, если я нажму на выбранную область, сервер начнет новую игру. Как сделать, чтобы на этом месте была кнопка или квадрат с надписью «новая игра»?

with socket.create_connection((SERVER, PORT)) as sock:
    with context.wrap_socket(sock, server_hostname="localhost") as client:
        session_id = None
        while True:
            #command = str(input("Podaj komendę"))
            #command = translate_pos_to_number(pos[0] // 200, pos[1] // 200)
            czy_wyjsc = True
            while czy_wyjsc:
                for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                        running = False
                    if event.type == pygame.MOUSEBUTTONDOWN:
                        if pygame.mouse.get_pressed()[0]:  # [0] Jeśli lewy przycisk myszki jest kliknięty
                            pos = pygame.mouse.get_pos()
                            print(pos[0] // 200, pos[1] // 200)
                            czy_wyjsc = False
                            break
                surface.fill((20, 189, 172))

                grid.draw(surface)

                pygame.display.flip()

            if (pos[0] // 200 == 1, pos[1] // 200 == 3):
                command = "start"
                if command == "start":
                    login = np.random.randint(100, 999)
                    msg_start = f'To:SER\r\nLogin:{login}\r\nContent-length:5\r\nMessage:START\r\n\r\n'
                    client.sendall(msg_start.encode())

1 Ответ

1 голос
/ 19 июня 2020


Чтобы создать кнопку в pygame, вам сначала нужно добавить шрифт в вашу программу python, а затем создать метку для отображения текста на этой кнопке:

font = pygame.font.SysFont("monospace", 30)
label = font.render("SomeText", 1, [COLOR])

После вам нужно создать прямоугольник на вашем экране:

pygame.draw.rect(YOUR_SCREEN, YOUR_COLOR ,(X_POS,Y_POS,X_SIZE,Y_SIZE),1)
YOUR_SCREEN.blit(label,(X_POS,Y_POS))

И после этого вам нужно только добавить столкновение в свои события pygame:

for events in pygame.event.get():
        if events.type == pygame.QUIT:
            pygame.quit()
        if events.type == pygame.MOUSEBUTTONDOWN:
                if pygame.Rect(X_POS,Y_POS,X_SIZE,Y_SIZE).collidepoint(pygame.mouse.get_pos()):
                    Your_Function() #Your_Function is the function you want to execute when clicking the button.

Надеюсь, я помог ты ! (а если возникнут вопросы, не стесняйтесь спрашивать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...