Pygame - 一切似乎正在工作,但图像不加载
问题描述:
我一直在创建一个简单的游戏,你移动一个角色,但即使没有错误消息,我的播放器的图像不会加载。请帮我看看我的代码。Pygame - 一切似乎正在工作,但图像不加载
import pygame, sys
from pygame.locals import *
pygame.init()
class player:
def __init__(self):
self.x = 100
self.y = 100
self.image = pygame.image.load('Data/chracter.png')
self.update(0)
def update(self,pos):
if pos != 0:
self.x += pos
display.blit(self.image,(self.x,self.y))
clock = pygame.time.Clock()
background_img = pygame.image.load('Data/background.jpg')
size = background_img.get_size()
pygame.mixer.init()
pygame.mixer.music.load('Data/song.wav')
pygame.mixer.music.set_volume(0.7)
pygame.mixer.music.play(-1)
display = pygame.display.set_mode(size)
pygame.display.set_caption('Game')
player1 = player()
while 1:
player1.update(0)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player1.update(-10)
elif event.key == pygame.K_RIGHT:
player1.update(10)
elif event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
player1.update(0)
elif event.key == pygame.K_UP or event.key == pygame.K_DOWN:
player1.update(0)
display.blit(background_img,(0,0))
pygame.display.update()
clock.tick(60)
我刚开始在pygame中使用类,所以错误可能在那里。任何帮助表示赞赏!
答
您以错误的玩法吸引玩家。
您必须在绘制背景后执行此操作。
# clear buffer
display.blit(background_img,(0,0))
# draw all objects
#player1.draw(display)
display.blit(player1.image, (player1.x, player1.y))
# send buffer to video card (and video card draw it on monitor)
pygame.display.update()
-
BTW:建议:
- 使用首字母大写的名字班 -
class Player
- 不
player.update()
- 绘制创建
player.draw(surface)
方法 - 使用
pygame.Rect
到保持玩家/对象的位置ition和大小,并用它来绘制图像,检测碰撞。
。
# draw
blit(self.image, self.rect)
# check collision
self.rect.colliderect(enemy.rect)
而且更好地组织代码 - 把类pygame.init()
之前 - 例如simple template和other examples
你缩进关闭。尝试缩进最后3行。 – DJMcMayhem
你为什么认为图像不会加载?也许你不会画画或画错了地方。 – furas
谢谢你告诉我这个错误 - 我现在改变了它。弗拉斯,我想我把它画在了错误的地方 - 谢谢! –