2015-12-11 2 views
0

Итак, я делаю игру, которая выбирает случайное число, и вы должны угадать, что это такое, но когда когда-либо он говорит, что вы побеждаете или теряете текст, он остается там, и я не могу выяснить, как удалить старый текст. Я попытался сделать screen.blit (background, (0, 0)), но это ничего не меняет. (Да, я сделал pygame.display.flip()) Я смотрел по всему Интернету (сначала я проверял переполнение стека), но не имел успеха. ПОМОГИТЕ!Текст Pygame перекрывается

import random, pygame, pygbutton 
from pygame.locals import * 

pygame.init() 
dice = random.randint(1, 6) 

def window(): 
    width = 600 
    height = 600 
    # background_color = (0, 0, 0) 
    WH = (width, height) 
    screen = pygame.display.set_mode(WH) 
    background = pygame.image.load("wood.jpg").convert() 
    background=pygame.transform.scale(background,(600, 600)) 
    pygame.display.set_caption("Dice Game!") 
    screen.blit(background, (600, 600)) 
    num1_button = pygbutton.PygButton((0, 0, 100,50), '1') 
    num2_button = pygbutton.PygButton((0, 50, 100, 50), '2') 
    # screen.fill(background_color) 
    font = pygame.font.Font(None, 100) 

    running = True 
    while running == True: 
     dice = random.randint(1, 6) 
     screen.blit(background, (0, 0)) 

     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       running = False 
      if event.type == KEYDOWN: 
       if event.key == pygame.K_ESCAPE: 
        quit() 
      if 'click' in num1_button.handleEvent(event): 
       if dice == 1: 
        text = font.render("You Win!", 1, (0, 0, 0)) 
        background.blit(text, (155, 255)) 
        screen.blit(background, (0, 0)) 
       else: 
        Text = font.render("You Lose!", 1, (0, 0, 0)) 
        background.blit(Text, (155, 255)) 
        screen.blit(background, (0, 0)) 
       cliq = True 
      if 'click' in num2_button.handleEvent(event): 
       if dice == 2: 
        text = font.render("You Win!", 1, (0, 0, 0)) 
        background.blit(text, (155, 255)) 
        screen.blit(background, (0, 0)) 
       else: 
        Text = font.render("You Lose!", 1, (0, 0, 0)) 
        background.blit(Text, (155, 255)) 
        screen.blit(background, (0, 0)) 
       cliq=True 

     num1_button.draw(screen) 
     num2_button.draw(screen) 
     pygame.display.flip() 


window() 

Мне также понравилось бы, если бы вы сказали мне, где внести изменения. Заранее спасибо!

ответ

0

Ваша проблема в том, что вы смешаете текст с фоновой поверхностью. Этот текст приклеивается, пока вы не перезагрузите поверхность. Перезагрузка поверхности - плохая идея. Это потребует большой мощности процессора, которую вам не нужно тратить. Вместо этого просто нажмите текст прямо на экран.

 if 'click' in num1_button.handleEvent(event): 
      if dice == 1: 
       text = font.render("You Win!", 1, (0, 0, 0)) 
       screen.blit(text, (155, 255)) 
Смежные вопросы