2016-01-23 43 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

相關問題