0

What i'm trying to do here is detect the collision between a sprite called Paperboy, and a sprite called Indicator(23,24,25 etc...)

I am getting the error AttributeError: 'module' object has no attribute 'collide__rect'

not too sure what i'm doing wrong here.

> #Initialize import pygame import random pygame.init() #Display screen = pygame.display.set_mode((1180, 900)) class PaperBoy(pygame.sprite.Sprite): def __init__(self,startY): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("paperboy.gif") self.rect = self.image.get_rect() self.image = self.image.convert() self.rect.centery = startY self.dx= 300 self.dy= 300 def update(self): #adjust x/y to dx/dy self.rect.centerx = self.rect.centerx+self.dx self.rect.centery = self.rect.centery+self.dy #check Boundaries #Check right if self.rect.centerx >= 670: self.rect.centerx =670 #Check left elif self.rect.centerx <= 220: self.rect.centerx = 220 #Check Bottom if self.rect.centery >= 700: self.rect.centery = 700 #Check Top elif self.rect.centery <= 200: self.rect.centery = 200 def moveUp(self): self.dx=0 self.dy=-5 def moveDown(self): self.dx =0 self.dy =5 def moveLeft(self): self.dx =-5 self.dy = 0 def moveRight(self): self.dx =5 self.dy =0 class Parcel(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("parcel.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (120,600) """ ================================HUD====================================== """ #Green Y class ItemHUD(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("itemhud.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (1020,200) #Red A class WhereHUD(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("where.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (1020, 450) #Small Green class TimeHUD(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("timehud.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (915, 850) #Yellow class GoldHUD(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("gold.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (1020, 620) """ ==============================PARCEL OBJECTS============================== """ class Potion(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("potion.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (950, 200) class Book(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("book.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (950, 200) class Net(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("net.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (950, 200) class Pendant(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("pendant.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (950, 200) class Tunic(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("tunic.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (950, 200) """ ===================================Rupees================================== """ class GreenRupee(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("GreenRupee.png") self.rect = self.image.get_rect() self.image = self.image.convert() class BlueRupee(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("BlueRupee.png") self.rect = self.image.get_rect() self.image = self.image.convert() class RedRupee(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("RedRupee.png") self.rect = self.image.get_rect() self.image = self.image.convert() """ ------------------------------------HOUSES--------------------------------- """ class H23(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("23.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (920, 620) class Indicator23(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("indicator.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (370,274) class H24(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("24.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (920, 620) class Indicator24(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("indicator.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (224,406) class H25(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("25.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (920, 620) class Indicator25(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("indicator.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (655,480) class H26(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("26.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (920, 620) class Indicator26(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("indicator.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (310,695) class H28(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("28.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (920, 620) class Indicator28(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("indicator.png") self.rect = self.image.get_rect() self.image = self.image.convert() def update(self): self.rect.center = (655,680) """ ------------------------------------MAIN----------------------------------- """ def main(): pygame.display.set_caption("A Link to the Parcel") background = pygame.image.load('village.png').convert() allSprites=pygame.sprite.Group() #ITEMS potion = Potion() book = Book() net = Net() pendant = Pendant() tunic = Tunic() #HEADS UP DISPLAY itemHud = ItemHUD() timeHud = TimeHUD() goldHud = GoldHUD() whereHud = WhereHUD() indicator23 = Indicator23() indicator24 = Indicator24() indicator25 = Indicator25() indicator26 = Indicator26() indicator28 = Indicator28() goldSack = 0 #HOUSE NUMBERS h23 = H23() h24 = H24() h25 = H25() h26 = H26() h28 = H28() packages = [Potion, Book, Net, Pendant, Tunic] packagetype = random.choice(packages) #Player paperboy = PaperBoy(200) parcel = Parcel() package = packagetype() #Sprites added to AllSprites Group allSprites.add(paperboy) allSprites.add(parcel) allSprites.add(itemHud) allSprites.add(timeHud) allSprites.add(goldHud) allSprites.add(whereHud) font = pygame.font.Font(None, 25) clock = pygame.time.Clock() keepGoing = True while keepGoing: clock.tick(30) for event in pygame.event.get(): if event.type == pygame.QUIT: keepGoing = False elif event.type == pygame.KEYUP: if event.key==pygame.K_UP: paperboy.moveUp() elif event.key==pygame.K_DOWN: paperboy.moveDown() elif event.key==pygame.K_LEFT: paperboy.moveLeft() elif event.key==pygame.K_RIGHT: paperboy.moveRight() if pygame.sprite.collide_rect(paperboy, parcel): allSprites.add(package) if packagetype == packages[0]: allSprites.add(potion) allSprites.add(h23) allSprites.add(indicator23) allSprites.remove(parcel) elif packagetype == packages[1]: allSprites.add(book) allSprites.add(h24) allSprites.add(indicator24) allSprites.remove(parcel) elif packagetype == packages[2]: allSprites.add(net) allSprites.add(h25) allSprites.add(indicator25) allSprites.remove(parcel) elif packagetype == packages[3]: allSprites.add(pendant) allSprites.add(h26) allSprites.add(indicator26) allSprites.remove(parcel) elif packagetype == packages[4]: allSprites.add(tunic) allSprites.add(h28) allSprites.add(indicator28) allSprites.remove(parcel) 

this is where my code runs into an error

 if pygame.sprite.collide__rect(paperboy, indicator23) == True: 

if pygame.sprite.collide__rect(paperboy, indicator23) == True:

AttributeError: 'module' object has no attribute 'collide__rect'

 allSprites.remove(potion) allSprites.remove(h23) allSprites.remove(indicator23) allSprites.add(parcel) elif pygame.sprite.collide_rect(paperboy, indicator24) == True: allSprites.remove(book) allSprites.remove(h24) allSprites.remove(indicator24) allSprites.add(parcel) elif pygame.sprite.collide_rect(paperboy, indicator25) == True: allSprites.remove(net) allSprites.remove(h25) allSprites.remove(indicator25) allSprites.add(parcel) elif pygame.sprite.collide_rect(paperboy, indicator26) == True: allSprites.remove(pendant) allSprites.remove(h26) allSprites.remove(indicator26) allSprites.add(parcel) elif pygame.sprite.collide_rect(paperboy, indicator28) == True: allSprites.remove(tunic) allSprites.remove(h28) allSprites.remove(indicator28) allSprites.add(parcel) fontTitle = font.render("A Link to the Parcel", True, (255,255,255,)) screen.blit(background, (0, 0)) screen.blit(fontTitle, [925,25]) allSprites.clear(screen, background,) allSprites.update() allSprites.draw(screen) pygame.display.flip() pygame.quit() if __name__ == "__main__": main() 

1 Answer 1

2

You have a typo. The function that you want to call is collide_rect with 1 underscore.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.