2012-10-21 122 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!