В основном у меня есть кнопка (Rect), которую я пытался добавить поверх нее, чтобы кнопку можно было использовать в качестве кнопки запуска. Но когда я перемещаю свой текст и устанавливаю его над кнопкой, текст идет под кнопкой, а не поверх нее. Это мой текущий код:

import pygame

pygame.init()

width = 800
height = 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Blackjack")
icon = pygame.image.load('jack.jpg')
pygame.display.set_icon(icon)
over_font = pygame.font.Font('GOODDP__.TTF', 64)
jack = pygame.image.load('rsz_jack.png')
jackX = 295
jackY = 100
running = True

def jack_title():
    screen.blit(jack, (jackX, jackY))

def display_title_text():
    over_text = over_font.render("Blackjack", True, (0, 0, 0))
    screen.blit(over_text, (292, 300))

def start_button():
    button = pygame.Rect(50, 100, 100, 50)
    pygame.draw.rect(screen, [0, 255, 0], button)
    button.move(0, 0)
    over_text = over_font.render("START!", True, (0, 0, 0))
    screen.blit(over_text, (0, 75))
    clicked = pygame.mouse.get_pressed()
    if clicked[0] == 1:
        print('Clicked left button!')
    elif clicked[1] == 1:
        print('Clicked middle button!')
    elif clicked[-1] == 1:
        print('Clicked right button!')
    else:
        pass


def quit_button():
    button = pygame.Rect(50, 100, 100, 50)
    pygame.draw.rect(screen, [255, 0 ,0], button)

def display_gameover_message():
    over_text = over_font.render("GAME OVER", True, (0, 0, 0))
    screen.blit(over_text, (292, 300))

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    screen.fill((150, 173, 252))
    jack_title()
    display_title_text()
    start_button()
    quit_button()
    pygame.display.update()

1
Jack Jones 15 Апр 2020 в 15:41

1 ответ

Лучший ответ

Текст "СТАРТ!" покрывается красным прямоугольником кнопки, нарисованной в quit_button. Нарисуйте start_button() после quit_button():

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    screen.fill((150, 173, 252))
    jack_title()

    quit_button()
    start_button()

В любом случае, я рекомендую рисовать кнопки в разных местах и ​​центрировать текст по кнопке. например:

start_button_rect = pygame.Rect(50, 100, 100, 50)
quit_button_rect = pygame.Rect(50, 200, 100, 50)

def start_button():
    pygame.draw.rect(screen, [0, 255, 0], start_button_rect)
    start_button_rect.move(0, 0)

    over_text = over_font.render("START!", True, (0, 0, 0))
    over_text_rect = over_text.get_rect(center = start_button_rect.center)
    screen.blit(over_text, over_text_rect)

    clicked = pygame.mouse.get_pressed()
    if clicked[0] == 1:
        print('Clicked left button!')
    elif clicked[1] == 1:
        print('Clicked middle button!')
    elif clicked[-1] == 1:
        print('Clicked right button!')
    else:
        pass

def quit_button():
    pygame.draw.rect(screen, [255, 0 ,0], quit_button_rect)
0
Rabbid76 15 Апр 2020 в 12:51