Python 在我的pygame项目中不断出现属性错误,我不';我不明白为什么 导入pygame,随机,时间 #我们调用所有其他函数的主函数,启动游戏循环,退出pygame并清理窗口。在内部,我们创建一个游戏对象,显示表面,并通过调用游戏对象上的play方法启动游戏循环。还有一个带有游戏标题的标题。 def main(): pygame.init() 大小=(500400) surface=pygame.display.set_模式(大小) pygame.display.set_标题('pongv2') 游戏=游戏(表面) 游戏 pygame.quit() #这就是我们定义课堂游戏的地方 类游戏(): #此类中的对象表示一个完整的游戏 #这里我们初始化一个游戏。self是初始化的游戏,surface是显示窗口surface对象,我们还为继续游戏和关闭窗口设置了默认值。我们还定义了我们运行游戏的fps,并定义了球的速度、颜色、位置和半径 def u u初始(自,表面): #定义曲面、fps、背景色 自表面=表面 自整角速度=120 self.bg_color=pygame.color('black')) 屏幕宽度=曲面。获取宽度() 屏幕高度=曲面。获取高度() #定义球属性 球头半径=10 ball_pos=[random.randint(球半径,屏幕宽度-球半径), random.randint(球半径、屏幕高度-球半径)] ball\u color=pygame.color('white')) 球的速度=[2,1] 球=球(球位置、球半径、球颜色、球速度、表面) #定义桨属性 rect_left=[50450] 矩形顶部=225 矩形高度=60 矩形宽度=10 self.rect=rect(rect_left[0],rect_top,rect_width,rect_height,surface) self.game\u Clock=pygame.time.Clock() self.close\u clicked=False self.continue\u game=True 自我评分=0 自帧计数器=0 def播放(自我): #游戏一直玩到玩家点击关闭 当未单击self.close时,单击: self.handle_事件() self.draw() #如果没有设置为false,游戏将继续更新 如果self.continue\u游戏: self.update() self.game_Clock.tick(self.FPS) #分数被绘制到屏幕上(不重要,这只是在下一个版本中使用一个功能),我们定义分数消息的彩色字体背景等,并在分数被打分时更新分数 def draw_分数(自我): font\u color=pygame.color(“白色”) font\u bg=pygame.Color(“黑色”) font=pygame.font.SysFont(“arial”,72) text\u img=font.render(“分数:+str(self.Score),真,字体颜色,字体背景) 文本位置=(0,0) self.surface.blit(text\u img,text\u pos) #球,表面,分数,和两个桨被绘制,pygame也会每帧更新一次这个绘制 def牵引(自): self.surface.fill(self.bg_颜色) self.draw_score() #pygame.draw.rect(self.surface,pygame.Color('blue'),(50225,10,50)) #pygame.draw.rect(self.surface,pygame.Color('red'),(450225,10,50)) self.rect.draw() self.ball.draw() pygame.display.update() #分数值设置为默认值0,我们告诉球移动,并在每次更新时向帧计数器添加1。为下一帧更新游戏对象 def更新(自我): self.ball.move() 自我评分=0 自帧计数器+=自帧计数器+1 #在这里,我们设置一个事件循环,并确定结束游戏的操作是否已完成 def处理_事件(自): events=pygame.event.get() 对于事件中的事件: 如果event.type==pygame.QUIT: self.close\u clicked=True #用户定义的类球 班级舞会: #自我是要初始化的球。为初始化的球定义颜色/中心/半径 定义初始(自身、中心、半径、颜色、速度、表面): 自我中心=中心 自半径=半径 self.color=color 自身速度=速度 自表面=表面 #确定屏幕尺寸,并检查球的边缘是否未接触边缘。如果它接触到边缘,它会反弹并反转速度 def移动(自我): screen\u width=self.surface.get\u width() screen\u height=self.surface.get\u height() 屏幕大小=(屏幕宽度、屏幕高度) 对于范围(0,len(自中心))中的i: 自中心[i]+=自速度[i] 如果(自中心[i]=屏幕尺寸[i]-自半径): 自速度[i]=-自速度[i] #球被抽出来了 def牵引(自): pygame.draw.circle(self.surface,self.color,self.center,self.radius) 类矩形: 定义初始(自、左、顶、宽度、高度、表面): self.left=左 self.top=top 自身宽度=宽度 自我高度=高度 自表面=表面 def牵引(自): pygame.draw.rect(self.surface,pygame.Color('blue'),self.rect) main()

Python 在我的pygame项目中不断出现属性错误,我不';我不明白为什么 导入pygame,随机,时间 #我们调用所有其他函数的主函数,启动游戏循环,退出pygame并清理窗口。在内部,我们创建一个游戏对象,显示表面,并通过调用游戏对象上的play方法启动游戏循环。还有一个带有游戏标题的标题。 def main(): pygame.init() 大小=(500400) surface=pygame.display.set_模式(大小) pygame.display.set_标题('pongv2') 游戏=游戏(表面) 游戏 pygame.quit() #这就是我们定义课堂游戏的地方 类游戏(): #此类中的对象表示一个完整的游戏 #这里我们初始化一个游戏。self是初始化的游戏,surface是显示窗口surface对象,我们还为继续游戏和关闭窗口设置了默认值。我们还定义了我们运行游戏的fps,并定义了球的速度、颜色、位置和半径 def u u初始(自,表面): #定义曲面、fps、背景色 自表面=表面 自整角速度=120 self.bg_color=pygame.color('black')) 屏幕宽度=曲面。获取宽度() 屏幕高度=曲面。获取高度() #定义球属性 球头半径=10 ball_pos=[random.randint(球半径,屏幕宽度-球半径), random.randint(球半径、屏幕高度-球半径)] ball\u color=pygame.color('white')) 球的速度=[2,1] 球=球(球位置、球半径、球颜色、球速度、表面) #定义桨属性 rect_left=[50450] 矩形顶部=225 矩形高度=60 矩形宽度=10 self.rect=rect(rect_left[0],rect_top,rect_width,rect_height,surface) self.game\u Clock=pygame.time.Clock() self.close\u clicked=False self.continue\u game=True 自我评分=0 自帧计数器=0 def播放(自我): #游戏一直玩到玩家点击关闭 当未单击self.close时,单击: self.handle_事件() self.draw() #如果没有设置为false,游戏将继续更新 如果self.continue\u游戏: self.update() self.game_Clock.tick(self.FPS) #分数被绘制到屏幕上(不重要,这只是在下一个版本中使用一个功能),我们定义分数消息的彩色字体背景等,并在分数被打分时更新分数 def draw_分数(自我): font\u color=pygame.color(“白色”) font\u bg=pygame.Color(“黑色”) font=pygame.font.SysFont(“arial”,72) text\u img=font.render(“分数:+str(self.Score),真,字体颜色,字体背景) 文本位置=(0,0) self.surface.blit(text\u img,text\u pos) #球,表面,分数,和两个桨被绘制,pygame也会每帧更新一次这个绘制 def牵引(自): self.surface.fill(self.bg_颜色) self.draw_score() #pygame.draw.rect(self.surface,pygame.Color('blue'),(50225,10,50)) #pygame.draw.rect(self.surface,pygame.Color('red'),(450225,10,50)) self.rect.draw() self.ball.draw() pygame.display.update() #分数值设置为默认值0,我们告诉球移动,并在每次更新时向帧计数器添加1。为下一帧更新游戏对象 def更新(自我): self.ball.move() 自我评分=0 自帧计数器+=自帧计数器+1 #在这里,我们设置一个事件循环,并确定结束游戏的操作是否已完成 def处理_事件(自): events=pygame.event.get() 对于事件中的事件: 如果event.type==pygame.QUIT: self.close\u clicked=True #用户定义的类球 班级舞会: #自我是要初始化的球。为初始化的球定义颜色/中心/半径 定义初始(自身、中心、半径、颜色、速度、表面): 自我中心=中心 自半径=半径 self.color=color 自身速度=速度 自表面=表面 #确定屏幕尺寸,并检查球的边缘是否未接触边缘。如果它接触到边缘,它会反弹并反转速度 def移动(自我): screen\u width=self.surface.get\u width() screen\u height=self.surface.get\u height() 屏幕大小=(屏幕宽度、屏幕高度) 对于范围(0,len(自中心))中的i: 自中心[i]+=自速度[i] 如果(自中心[i]=屏幕尺寸[i]-自半径): 自速度[i]=-自速度[i] #球被抽出来了 def牵引(自): pygame.draw.circle(self.surface,self.color,self.center,self.radius) 类矩形: 定义初始(自、左、顶、宽度、高度、表面): self.left=左 self.top=top 自身宽度=宽度 自我高度=高度 自表面=表面 def牵引(自): pygame.draw.rect(self.surface,pygame.Color('blue'),self.rect) main(),python,pygame,Python,Pygame,好吧,问题是我一直得到一个属性错误,它说我的Rect对象没有属性Rect,但我不知道为什么会发生这种情况?我正在尝试在窗口的两侧绘制一个矩形(应该是一个桨),用于一个名为pong的游戏,因此我需要将矩形作为一个类包含进来,以便进行碰撞检测,最终我希望使桨移动。我阅读了文档,但仍然不明白为什么这不起作用 文件“/home/user/pong2.py”,第129行,在 pygame.draw.rect(self.surface,pygame.Color('blue'),self.rect) buil

好吧,问题是我一直得到一个属性错误,它说我的
Rect
对象没有属性
Rect
,但我不知道为什么会发生这种情况?我正在尝试在窗口的两侧绘制一个矩形(应该是一个桨),用于一个名为pong的游戏,因此我需要将矩形作为一个类包含进来,以便进行碰撞检测,最终我希望使桨移动。我阅读了文档,但仍然不明白为什么这不起作用

文件“/home/user/pong2.py”,第129行,在
pygame.draw.rect(self.surface,pygame.Color('blue'),self.rect)
builtins.AttributeError:“Rect”对象没有属性“Rect”

您必须在类的构造函数
rect
中设置属性
self.rect
。使用参数创建的实例
File "/home/user/pong2.py", line 129, in <module>
    pygame.draw.rect(self.surface,pygame.Color('blue'),self.rect)
builtins.AttributeError: 'Rect' object has no attribute 'rect'