我创建了一个名为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()
答案 0 :(得分: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()
你的gameLoop()函数不知道“屏幕”是什么。您需要在某处指定它。例如,在你的while循环开始之前就可以了。
screen = pygame.display.get_surface()
while True:
screen.blit....
你肯定想重组一些东西。如果我有一段时间后,我会在这个答案中添加我对如何重组的建议。但是现在,这两个调整应该让你的程序运行。