AttributeError: 'int' object has no attrib

2019-08-17 14:14发布

I am trying to make a game where you have to avoid objects falling from the sky. I am a beginner programmer (14yrs old) so I make a lot of mistakes. I solve all of them(for this program) but i dont know how to fix this one. The error is in title. Thank you. Full code:

from livewires import games, color
import random

games.init(screen_width = 1280, screen_height = 720, fps = 150)

class Covjek(games.Sprite):
    def update(self):
        if self.overlapping_sprites:
            self.destroy()
            games.screen.quit()
        self.x = games.mouse.x
        if self.left < 0:
            self.left = 0
        if self.right > games.screen.width:
            self.right = games.screen.width

class Budala(games.Sprite):
    odds_change = 200
    def __init__(self, y = 50, speed = 2, odds_change = 200):
        super(Budala, self).__init__(image = games.load_image("nigga.jpg"),
                                 x = games.screen.width/2,
                                 y = y,
                                 dx = speed)
        self.odds_change = odds_change
        self.time = 200
        self.score = 0
        games.screen.add(self.score)
        self.text = games.Text(size = 50, x = games.screen.width - 20,
                               y = games.screen.height - 20, value = self.score,
                               color = color.red)    

    def update(self):
        if self.right > games.screen.width:
            self.dx = -self.dx
        if self.left < 0:
            self.dx = -self.dx
        odd = random.randrange(Budala.odds_change + 1)
        if odd == Budala.odds_change:
            self.dx = -self.dx
        self.time -= 1
        if self.time == 0:
            games.screen.add(Meteor(image = games.load_image("smeg.jpg"),
                                     x = self.x,
                                     y = self.y,
                                     dy = 2))
            self.time = 200



class Meteor (games.Sprite):

def __init__(self, chef, x = 640, y = 670,image = games.load_image("kamijonhehe.jpg")):
    super(Meteor, self).__init__(x = x,
                                  image = image,
                                  y = y,
                                  chef = budala)
    self.chef = chef
def update(self):
    if self.bottom > games.screen.height:
        self.destroy()
        self.chef.score += 1

games.screen.background = games.load_image("boaj.jpg")
budala = Budala()
games.screen.add(budala)                                      
games.screen.add(Covjek(image = games.load_image("kamijonhehe.jpg"),
                        x = games.screen.width/2,
                        bottom = 720))
games.screen.event_grab = True
games.mouse.is_visible = False
games.music.load("smukwed.mp3")
games.music.play()
games.music.play()
games.screen.mainloop()

Full error code:

Traceback (most recent call last):
  File "C:\Users\nikol\Desktop\Python\prugrami limun\izbegavalje.py", line 
75, in <module>
    games.screen.mainloop()
  File "C:\Python31\lib\site-packages\livewires\games.py", line 303, in 
mainloop
    object._erase()
AttributeError: 'int' object has no attribute '_erase'

P.S. some of the words are in Serbian so they could be hard to remember. Working in Python 3.1, pygame 1.9.1 and livewires. Line games.screen.mainloop() is throwing the error.

0条回答
登录 后发表回答