2016-04-08 3 views
-1

Используя Python (и Pygame), я создаю короткую одноэкранную игру, и я кодирую каждую часть в другом окне. На моем главном экране, когда я нажимаю кнопку воспроизведения на экране, она не появляется. Я новичок в Python и Pygame. Это мой код:Почему изображение не появляется на экране, когда я его заливаю?

import pygame, sys 
from pygame.locals import * 

pygame.init() 

screen = pygame.display.set_mode((1352,638)) 
pygame.display.set_caption("Termination: Part 1") 
bg = True 
playButton = pygame.image.load("Play Button.png") 
mouse = pygame.mouse.get_pos() 

def playButtonFunction(): 
    if background == pygame.image.load("Home Screen.png"): 
     background.blit(playButton(533.5,278)) 

while True: 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 

     if event.type == KEYDOWN and event.key == K_SPACE: 
      bg = False 

    screen.blit(background,(0,0)) 
    if bg: 
     background = pygame.image.load("Intro Screen.png") 
    else: 
     background = pygame.image.load("Home Screen.png") 
    playButtonFunction() 

    pygame.display.update() 
+0

'if background == pygame.image.load (" Home Screen.png ")'. Я уверен, что вы не можете сравнивать изображения таким образом. –

ответ

2

Как Frédéric Хамиди уже сказал в комментарии, линия

if background == pygame.image.load("Home Screen.png") 

не будет работать, как вы, вероятно, ожидать.

Вам не следует передавать флаг этому методу или вообще не вызывать эту функцию, если вы не хотите показывать это изображение playButton.


Кроме того, линия

background.blit(playButton(533.5,278)) 

сгенерирует исключение, он должен выглядеть

background.blit(playButton, (533, 278)) 

Таким образом, измените код на

... 

if bg: 
    background = pygame.image.load("Intro Screen.png") 
else: 
    background = pygame.image.load("Home Screen.png") 

screen.blit(background,(0,0))  
if !bg: 
    background.blit(playButton, (533, 278)) 

... 

Другая проблема, связанная с загрузкой изображений с диска на каждую итерацию игрового цикла (с pygame.image.load). Достаточно загрузить каждое изображение один раз.

+0

Спасибо, но я не совсем понимаю, так что вы можете набрать весь код? Еще раз спасибо. – Jetter126

Смежные вопросы