我写了一段代码,我试图让我的图像出现在中心,但是当我运行它时,图像根本没有出现,知道我哪里出错了吗?
(顺便说一句,我测试了不同的代码并且图像加载正常,所以 python 或 pygame 本身没有任何问题)
from __future__ import division
import math
import sys
import pygame
class MyGame(object):
def __init__(self):
pygame.mixer.init()
pygame.mixer.pre_init(44100, -16, 2, 2048)
pygame.init()
self.width = 800
self.height = 600
self.screen = pygame.display.set_mode((self.width, self.height))
self.bg_color = 0, 0, 0
self.alien_img = pygame.image.load('alien.png')
self.alien_pos = ((self.width-rect.width)//4,
(self.height-rect.height)//4)
self.FPS = 30
self.REFRESH = pygame.USEREVENT+1
pygame.time.set_timer(self.REFRESH, 1000//self.FPS)
def run(self):
running = True
while running:
event = pygame.event.wait()
if event.type == pygame.QUIT:
running = False
elif event.type == self.REFRESH:
self.draw()
else:
pass # an event type we don't handle
def draw(self):
self.screen.fill(self.bg_color)
rect = self.alien_img.get_rect()
rect = rect.move(self.alien_pos)
self.screen.blit(self.alien_img, rect)
pygame.display.flip()
MyGame().run()
pygame.quit()
sys.exit()
请您参考如下方法:
你需要移动:
rect = self.alien_img.get_rect()
到以下行之前的初始化:
self.alien_pos = ((self.width-rect.width)//4,
(self.height-rect.height)//4)
之后:
self.alien_img = pygame.image.load('alien.png')
以下是您的代码,其中包含将图片放入框架中的更改:
from __future__ import division
import math
import sys
import pygame
class MyGame(object):
def __init__(self):
pygame.mixer.init()
pygame.mixer.pre_init(44100, -16, 2, 2048)
pygame.init()
self.width = 800
self.height = 600
self.screen = pygame.display.set_mode((self.width, self.height))
self.bg_color = 0, 0, 0
self.alien_img = pygame.image.load('alien.png')
rect = self.alien_img.get_rect()
self.alien_pos = ((self.width-rect.width)//4,
(self.height-rect.height)//4)
self.FPS = 30
self.REFRESH = pygame.USEREVENT+1
pygame.time.set_timer(self.REFRESH, 1000//self.FPS)
def run(self):
running = True
while running:
event = pygame.event.wait()
if event.type == pygame.QUIT:
running = False
elif event.type == self.REFRESH:
self.draw()
else:
pass # an event type we don't handle
def draw(self):
self.screen.fill(self.bg_color)
rect = self.alien_img.get_rect()
rect = rect.move(self.alien_pos)
self.screen.blit(self.alien_img, rect)
pygame.display.flip()
MyGame().run()
pygame.quit()
sys.exit()
在你尝试访问 rect 之前,它还没有被定义。我添加了下面创建的窗口的图片:
将指出您将这张照片放在中间的计划无法实现,您需要更改:
self.alien_pos = ((self.width-rect.width)//4,
(self.height-rect.height)//4)
收件人:
self.alien_pos = (self.width//2 - rect.width//2,
self.height//2 - rect.height//2)
它给出了所需的结果:
