为什么这个精灵没有显示在屏幕上?

时间:2015-04-08 22:44:00

标签: python pygame

我创建了一个名为Player的类,其中包含一个名为 player.img 的图像,该图像未显示在屏幕上。当我运行代码时,它只显示一个黑屏,上面没有任何内容。我正在努力学习如何让课程如此抱歉,如果这真的搞砸了。

import pygame
import sys
from pygame.locals import *

#starts the program
pygame.init()

white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
blue = (0, 0, 255)
green = (0, 255, 0)
yellow = (255, 255, 153)

#creates a window of 800x600
setDisplay = pygame.display.set_mode((800, 600))
pygame.display.set_caption('Menu')

img = pygame.image.load('C:\\Users\\Ben\\Documents\\sprite.png')

class Player(pygame.sprite.Sprite):
        def __init__(self):
                pygame.sprite.Sprite.__init__(self)
                self.img = pygame.image.load('C:\\Users\\Ben\\Documents\\sprite.png').convert()
                self.imgx = 10
                self.imgy = 10
                self.screen = pygame.display.get_surface()
        def draw(self):
                self.screen.blit(self.img)

        def load(self, filename):
                self.img = pygame.image.load('C:\\Users\\Ben\\Documents\\sprite.png').convert_alpha()


player = Player()              

def gameLoop():
    imgx = 10
    imgy = 10
    lead_x_change = 0
    lead_y_change = 0
    move_variable = 5

    while True:
        screen.blit(player.img, [player.imgx,player.imgy])

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

gameLoop()

1 个答案:

答案 0 :(得分:1)

我可以看到您当前代码的两个问题。

  1. 你永远不会翻转你的显示器。这通常在给定帧的所有blitting完成之后执行。例如,你的while循环看起来像这样:

    while True:
        screen.blit(player.img, [player.imgx,player.imgy])
        pygame.display.flip()
    
        for event in pygame.event.get():
            #print (event)
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
    
  2. 你的gameLoop()函数不知道“屏幕”是什么。您需要在某处指定它。例如,在你的while循环开始之前就可以了。

    screen = pygame.display.get_surface()
    while True:
        screen.blit....
    
  3. 你肯定想重组一些东西。如果我有一段时间后,我会在这个答案中添加我对如何重组的建议。但是现在,这两个调整应该让你的程序运行。