Python Pygame AttributeError:class用户没有属性';rect';
我正在克隆一个太空入侵者,我遇到了一些麻烦。所以现在我有一个用户控制的飞船(目前是一个鼠标,因为这是我以前游戏中python文件夹中的东西,但我最终会改变它)在屏幕底部来回移动,这是我想要的,但当我按下空格键时,我很难让它拍摄。我可以启动游戏,但当我按下空格键时,会出现以下错误: AttributeError:类用户\u Ship没有属性“rect” 我也不知道如何修复它。而且,我认为一旦修复了,我的飞船仍然无法发射,因为我很难把代码写下来,所以可能会有一些错误。如果你能给我一些提示和提示,让我的飞船拍摄,那就太好了。谢谢Python Pygame AttributeError:class用户没有属性';rect';,python,pygame,2d-games,Python,Pygame,2d Games,我正在克隆一个太空入侵者,我遇到了一些麻烦。所以现在我有一个用户控制的飞船(目前是一个鼠标,因为这是我以前游戏中python文件夹中的东西,但我最终会改变它)在屏幕底部来回移动,这是我想要的,但当我按下空格键时,我很难让它拍摄。我可以启动游戏,但当我按下空格键时,会出现以下错误: AttributeError:类用户\u Ship没有属性“rect” 我也不知道如何修复它。而且,我认为一旦修复了,我的飞船仍然无法发射,因为我很难把代码写下来,所以可能会有一些错误。如果你能给我一些提示和提示,让我
from pygame import *
import pygame
size_x = 900
size_y = 650
class Object:
def disp(self, screen):
screen.blit(self.sprite, self.rect)
class User_Ship(Object):
def __init__(self):
self.sprite = image.load("mouse.bmp")
self.rect = self.sprite.get_rect()
self.rect.centerx = size_x/2
self.rect.centery = size_y - 40
self.count = 0
self.move_x = 0
self.move_y = 0
def checkwith(self, otherrect):
if self.rect.colliderect(otherrect):
exit()
def cycle(self):
self.rect.centerx += self.move_x
if self.rect.centerx < 0:
self.rect.centerx = 0
if self.rect.centerx > size_x:
self.rect.centerx = size_x
self.rect.centery += self.move_y
if self.rect.centery < 0:
self.rect.centery = 800
def right(self):
self.move_x += 10
def left(self):
self.move_x -= 10
def stop_x(self):
self.move_x = 0
def stop_y(self):
self.move_y = 0
class Missile(Object):
def __init__(self):
self.sprite = image.load("missile.png")
self.rect = self.sprite.get_rect()
def update(self):
self.rect.move_ip(self.speed)
if self.rect.left < 0 or self.rect.right > size_x or self.rect.top < 0 or self.rect.bottom > size_y:
self.kill()
missiles = pygame.sprite.RenderUpdates()
init()
screen = display.set_mode((size_x, size_y))
m = User_Ship()
#b = Missile()
clock = time.Clock()
while True:
for e in event.get():
if e.type == QUIT:
quit()
if e.type == KEYDOWN:
if e.key == K_RIGHT:
m.right()
elif e.key == K_LEFT:
m.left()
if (e.key == K_SPACE):
missiles.add(Missile("missile.png",(User_Ship.rect.centerx)))
if e.type == KEYUP:
if e.key == K_RIGHT or e.key == K_LEFT:
m.stop_x()
missiles.draw(screen)
m.cycle()
screen.fill((255,255,255))
m.disp(screen)
# b.disp(screen)
display.flip()
从pygame导入*
导入pygame
尺寸x=900
尺寸y=650
类对象:
def显示(自身,屏幕):
screen.blit(self.sprite、self.rect)
类别用户(对象):
定义初始化(自):
self.sprite=image.load(“mouse.bmp”)
self.rect=self.sprite.get_rect()
self.rect.centerx=大小x/2
self.rect.centery=尺寸_y-40
self.count=0
self.move_x=0
self.move_y=0
def checkwith(self,otherrect):
如果self.rect.collide rect(otherrect):
退出()
def循环(自):
self.rect.centerx+=self.move\u x
如果self.rect.centerx<0:
self.rect.centerx=0
如果self.rect.centerx>大小x:
self.rect.centerx=大小x
self.rect.centery+=self.move\u y
如果self.rect.centery<0:
self.rect.centery=800
定义权限(自我):
自移动_x+=10
def左(自身):
self.move_x-=10
def stop_x(自):
self.move_x=0
def停止(自):
self.move_y=0
类导弹(对象):
定义初始化(自):
self.sprite=image.load(“导弹.png”)
self.rect=self.sprite.get_rect()
def更新(自我):
自校正移动ip(自校正速度)
如果self.rect.left<0或self.rect.right>size_x或self.rect.top<0或self.rect.bottom>size_y:
self.kill()
导弹=pygame.sprite.RenderUpdates()
init()
屏幕=显示。设置模式((大小x,大小y))
m=用户(船舶)
#b=导弹()
时钟=时间。时钟()
尽管如此:
对于事件中的e.get():
如果e.type==退出:
退出
如果e.type==KEYDOWN:
如果e.key==K_RIGHT:
m、 右()
elif e.key==K_左:
m、 左()
如果(e.key==K_空间):
添加(导弹(“导弹.png”,(用户_Ship.rect.centerx)))
如果e.type==KEYUP:
如果e.key==K_RIGHT或e.key==K_LEFT:
m、 停止
导弹。绘制(屏幕)
m、 循环()
屏幕填充((255255))
m、 显示(屏幕)
#b.disp(屏幕)
display.flip()
rect
不是类属性,而是实例属性。所以,您可能希望像这样访问它
missiles.add(Missile("missile.png",(m.rect.centerx)))
rect
不是类属性,而是实例属性。所以,您可能希望像这样访问它
missiles.add(Missile("missile.png",(m.rect.centerx)))
rect
不是类属性,而是实例属性。所以,您可能希望像这样访问它
missiles.add(Missile("missile.png",(m.rect.centerx)))
rect
不是类属性,而是实例属性。所以,您可能希望像这样访问它
missiles.add(Missile("missile.png",(m.rect.centerx)))
这很尴尬。。。删除我的答案,你打败了我。这很尴尬。。。删除我的答案,你打败了我。这很尴尬。。。删除我的答案,你打败了我。这很尴尬。。。除去我的答案,你比我强。