2016-01-23 71 views
0

我一直在创建一个简单的游戏,你移动一个角色,但即使没有错误消息,我的播放器的图像不会加载。请帮我看看我的代码。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中使用类,所以错误可能在那里。任何帮助表示赞赏!

+1

你缩进关闭。尝试缩进最后3行。 – DJMcMayhem

+0

你为什么认为图像不会加载?也许你不会画画或画错了地方。 – furas

+0

谢谢你告诉我这个错误 - 我现在改变了它。弗拉斯,我想我把它画在了错误的地方 - 谢谢! –

回答

0

您以错误的玩法吸引玩家。

您必须在绘制背景后执行此操作。

# 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 templateother examples