我正在尝试为我的游戏显示背景图像,但是当我快照它时,它只在屏幕上以黑色背景显示我的主要可玩角色。任何人都可以帮我解决这个问题。
以下是代码:
import sys, pygame, os
pygame.init()
size = width, height = 320, 240
xREVERSEspeed = [-2, 0]
xspeed = [2, 0]
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Game")
os.environ['SDL_VIDEO_WINDOW_POS'] = 'center'
ball = pygame.image.load("turret.png").convert_alpha()
background = pygame.image.load("scoreframe.png").convert()
ballrect = ball.get_rect(center=(160, 231))
BACKGROUNDrect = background.get_rect()
clock = pygame.time.Clock()
while True:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
print "I've pressed the LEFT arrow button."
ballrect = ballrect.move(xspeed)
print ballrect
if event.key == pygame.K_RIGHT:
print "I've pressed the RIGHT arrow button."
ballrect = ballrect.move(xREVERSEspeed)
print ballrect
screen.blit(ball, ballrect, background, BACKGROUNDrect)
pygame.display.flip()
答案 0 :(得分:1)
首先,你的缩进是错误的,但我认为这是一个错字。你的事件部分与你的游戏在循环时处于同一级别,它应该在里面。 bl bl也是昙花一现。 我也看到你正在使用错误的blitting函数。来自pygame文档:
Surface.blit(source, dest, area=None, special_flags = 0): return Rect
将表面source
点击到由Surface
指定的目的地的dest
上,可选地area
是一个矩形,用于定义源表面的地下被搞砸了。
你必须分别对角色和背景图像进行blit。所以你应该这样做:
screen.blit(background,(0,0))
screen.blit(ball,ballrect)
答案 1 :(得分:1)
我不知道你粘贴在这里时是否搞砸了,但你的“if event.type”不是“1:”中的
无论如何试试这个:
while 1:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
print "I've pressed the LEFT arrow button."
ballrect = ballrect.move(xspeed)
print ballrect
if event.key == pygame.K_RIGHT:
print "I've pressed the RIGHT arrow button."
ballrect = ballrect.move(xREVERSEspeed)
print ballrect
screen.blit(background,(BACKGROUNDrect))
screen.blit(ball,(ballrect))
pygame.display.flip()