2012-10-21 45 views
3

我是Python和Pygame的新手,我開始製作一個簡單的遊戲,在敵人之上飛行的玩家身上拍攝,以測試我學到的東西。當它運行時,我只是得到錯誤,說它不需要字符串。它如下:Pygame第一次遊戲問題

bgi="bg.png"  #BACKGROUND IMAGE 
pi="man.png"  #PLAYER IMAGE 
proji="proj.png" #PROJECTILE IMAGE 

import pygame, sys   #Import 
from pygame.locals import * #Import 

pygame.init() #Initialize 

screen=pygame.display.set_mode((1000,600),0,32) #Display 

background=pygame.image.load(bgi).convert() #Background 
player=pygame.image.load(pi).convert_alpha() #Player 

proji2=pygame.transform.rotate(proji, 180) #Rotate 

x=0  #variables 
y=0 
mx=0 
mv=0 
projiy=0 
player.pos=(x,y) 

while True:         #Loop 
    for event in pygame.event.get(): 
     if event.type==QUIT: #X Clicked 
      pygame.quit() 
      sys.exit() 

     if event.type==KEYDOWN: #Key Press 
      if event.key==K_a: 
       mx=-1 
      elif event.key==K_d: 
       mx=+1 
      elif event.key==K_s: 
       screen.blit(proji2, player.pos) 
       my=+1 

     if event.type==KEYUP: #Key Release 
      if event.key==K_a: 
       mx=0 
      elif event.key==K_d: 
       mx=0 
      elif event.key==K_s: 
       my=0 


    x+=mx 
    projiy+=mv 

    screen.blit(background, (0,0)) #Display 
    screen.blit(player, (x,y)) 

    pygame.display.update() #Update 

任何人都可以幫我找到錯誤,並向我解釋他們爲什麼錯了嗎? 謝謝!

+2

你可以更具體和發佈stacktrace? – Lorenzo

回答

2

看起來像忘了將「proj.png」轉換爲曲面。它仍然是你從未真正打開的文件的字符串名稱。

0

的前三行的代碼替換爲以下:

bgi=pygame.image.load("bg.png").convert_alpha() 
pi=pygame.image.load("man.png").convert_alpha() 
proji=pygame.image.load("proj.png").convert_alpha() 

不能顯示的字符串在屏幕上,僅表面。您需要使用pygame.image.load將其轉化爲曲面。將.convert_alpha()添加到最後會極大地提高幀率,但並不是絕對必需的,儘管強烈建議使用它。

玩得開心Pygaming!