Python 2.7 使用Pygame的脚本出现问题
我在业余时间写一个小游戏。这就是我到目前为止所做的:Python 2.7 使用Pygame的脚本出现问题,python-2.7,class,pygame,Python 2.7,Class,Pygame,我在业余时间写一个小游戏。这就是我到目前为止所做的: from pygame import * #import relevant modules from PIL import Image import os, sys init() #initialise class sprite: def __init__(self, object, x = 0, y = 0, w = 0, h = 0): self.image = image.load(object).conv
from pygame import * #import relevant modules
from PIL import Image
import os, sys
init() #initialise
class sprite:
def __init__(self, object, x = 0, y = 0, w = 0, h = 0):
self.image = image.load(object).convert()
self.posx = x
self.posy = y
self.position = ((x, y, w, h))
def resize(self, sh, sw):
self.image = transform.scale(self.image, (sh, sw))
return self.image
def move(self, window, background, right, down):
self.posx = x + right
self.posy = y + down
window.blit(background, self.position, self.position)
self.position.move(right, down)
window.blit(self, self.position)
window.update()
os.chdir('C:\\Users\\alesi\\Documents\\Pygame\\Project\\') #current folder change
win = display.set_mode((736, 552))#load window
Clock = time.Clock() #handy clock
background = image.load('background.jpg').convert()#load images
player = sprite('ball.png', 350, 275, 20, 20)
player = player.resize(20, 20)
win.blit(background, (0, 0))
win.blit(player, (350, 275))
display.update()
while True:
event.pump()
keys = key.get_pressed()
if keys[K_ESCAPE]:
sys.exit()
elif keys[K_RIGHT]:
player.move(win, background, 20, 0)
elif keys[K_LEFT]:
player.move(win, background, -20, 0)
elif keys[K_DOWN]:
player.move(win, background,0, 20)
elif keys[K_UP]:
player.move(win, background, 0, -20)
简而言之,它应该在背景上创建一个对象,并允许您使用箭头键移动该对象。但是,我得到了一个错误:
C:\Users\alesi\Documents\Pygame\Project>python2 game2.py
Traceback (most recent call last):
File "game2.py", line 51, in <module>
player.move(win, background, -20, 0)
AttributeError: 'pygame.Surface' object has no attribute 'move'
C:\Users\alesi\Documents\Pygame\Project>python2 game2.py
回溯(最近一次呼叫最后一次):
文件“game2.py”,第51行,在
玩家移动(赢,背景,-20,0)
AttributeError:“pygame.Surface”对象没有属性“move”
我很难理解为什么我的精灵类玩家实例无法识别move方法。另外,我还不明白为什么在win.blit()函数中,我必须给出参数player而不是player.image,这是我存储图像的属性
如有任何建议,将不胜感激 在代码中
def resize(self, sh, sw):
self.image = transform.scale(self.image, (sh, sw))
return self.image
您返回的图像是Surface
instance-so-in-line
player = player.resize(20, 20)
将sprite
实例替换为Surface
实例
但您不必再次将其分配给player
做:
之后,player.move(…)
将再次工作。同样,您必须在
blit()中使用player.image
def resize(self, sh, sw):
self.image = transform.scale(self.image, (sh, sw))
# without return
# without player =
player.resize(20, 20)