python - __init__() takes exactly 3 arguments (1 given)? -


it asking 3 arguments , have given one. how give 2 more , explain how well? thanks

import pygame, random, collisionobjects pygame.init()  screen = pygame.display.set_mode((640,480))  class pirate(pygame.sprite.sprite):      east = 0      def __init__(self, screen, dx):         self.screen = screen         pygame.sprite.sprite.__init__(self)         self.image = pygame.image.load("king_pirate/running e0000.bmp")         self.image = self.image.convert()         trancolor = self.image.get_at((1, 1))         self.image.set_colorkey(trancolor)         self.rect = self.image.get_rect()         self.rect.inflate_ip(-50, -30)         self.rect.center = (0, random.randrange(30,450))         self.img = []          self.loadpics()         self.frame = 0         self.delay = 4         self.pause = self.delay         self.dx = dx       def update(self):         #set delay         self.pause -= 1         if self.pause <= 0:             self.pause = self.delay              self.frame += 1             if self.frame > 7:                 self.frame = 0              self.image = self.img[self.frame]              self.rect.centerx += self.dx             if self.rect.centerx > self.screen.get_width():                 self.rect.centerx = 0                 self.rect.centery = random.randrange(30,450)      #load pictures     def loadpics(self):         in range(8):             imgname = "king_pirate/running e000%d.bmp" %             tmpimg = pygame.image.load(imgname)             tmpimg.convert()             trancolor = tmpimg.get_at((0, 0))             tmpimg.set_colorkey(trancolor)             self.img.append(tmpimg)  class pirate2(pygame.sprite.sprite):      west = 0      def __init__(self, screen, dx):         self.screen = screen         pygame.sprite.sprite.__init__(self)         self.image = pygame.image.load("pirate/running w0000.bmp")         self.image = self.image.convert()         trancolor = self.image.get_at((1, 1))         self.image.set_colorkey(trancolor)         self.rect = self.image.get_rect()         self.rect.inflate_ip(-50, -30)         self.rect.center = (640, random.randrange(20,460))         self.img = []          self.loadpics()         self.frame = 0         self.delay = 4         self.pause = self.delay         self.dx = dx              def update(self):         #set delay         self.pause -= 1         if self.pause <= 0:             self.pause = self.delay              self.frame += 1             if self.frame > 7:                 self.frame = 0              self.image = self.img[self.frame]              self.rect.centerx -= self.dx             if self.rect.centerx < 0:                 self.rect.centerx = self.screen.get_width()                 self.rect.centery = random.randrange(20,460)      #load pictures     def loadpics(self):         in range(8):             imgname = "pirate/running w000%d.bmp" %             tmpimg = pygame.image.load(imgname)             tmpimg.convert()             trancolor = tmpimg.get_at((0, 0))             tmpimg.set_colorkey(trancolor)             self.img.append(tmpimg)  #set class gold object, class gold(pygame.sprite.sprite):               def __init__(self, screen, imagefile):         pygame.sprite.sprite.__init__(self)         self.image = pygame.image.load(imagefile)         self.image = self.image.convert()         self.rect = self.image.get_rect()         self.rect.centerx = random.randrange(0, screen.get_width())         self.rect.centery = random.randrange(0, screen.get_height())  #main character class class thief(pygame.sprite.sprite):     def __init__(self):         pygame.sprite.sprite.__init__(self)         self.image = pygame.image.load("thief2.gif")         self.image = self.image.convert()         trancolor = self.image.get_at((1, 1))         self.image.set_colorkey(trancolor)         self.rect = self.image.get_rect()         self.rect.inflate_ip(-15, -10)         self.rect.center = (30, (screen.get_height()-40))         self.dx = 30         self.dy = 30          if not pygame.mixer:             print("problem sound")         else:             pygame.mixer.init()             self.collectcoin = pygame.mixer.sound("collectcoin.wav")             self.hit = pygame.mixer.sound("hit.ogg")       def update(self):         if self.rect.bottom > screen.get_height():             self.rect.centery = (screen.get_height()-40)                  elif self.rect.top < 0:             self.rect.centery = 40         elif self.rect.right > screen.get_width():             self.rect.centerx = (screen.get_width()-30)                  elif self.rect.left < 0:             self.rect.centerx = 30      #define movements     def moveup(self):         self.rect.centery -= self.dy      def movedown(self):         self.rect.centery += self.dy      def moveleft(self):         self.rect.centerx -= self.dx      def moveright(self):         self.rect.centerx += self.dx      def reset(self):         self.rect.center = (30, (screen.get_height()-40))  #set scoreboard         class scoreboard(pygame.sprite.sprite):     def __init__(self):         pygame.sprite.sprite.__init__(self)         self.lives = 0         self.score = 0         self.font = pygame.font.sysfont("none", 40)         self.number = 0      #with self updating label     def update(self):         self.text = "damage: %d %%  gold taken: %d" % (self.lives, self.score)         self.image = self.font.render(self.text, 1, (199,237,241))         self.rect = self.image.get_rect()  #define game function def game():     #set background     background = pygame.surface(screen.get_size())     background = pygame.image.load("sand.jpg")     background = pygame.transform.scale(background, screen.get_size())     screen.blit(background, (0, 0))      #initialize pirates & scoreboard sprites     pirate = pirate()     scoreboard = scoreboard()      #create 2 arrays multiple gold object occurances     #two arrays used better distribution on screen     gold1 = []     numberofgold = 16     in range(numberofgolds):         onegold = golds(screen,"gold1.png")         golds1.append(onegold)     gold in golds1:         gold.rect.centerx = random.randrange(20,620)         gold.rect.centery = random.randrange(20,240)         gold.rect.inflate_ip(-5, -5)     gold2 = []     in range(numberofgolds):         onegold = golds(screen,"gold1.png")         golds2.append(onegold)     gold in golds2:         gold.rect.centerx = random.randrange(20,620)         gold.rect.centery = random.randrange(250,460)         gold.rect.inflate_ip(-5, -5)     totalgolds = ((len(golds1)-1)+(len(golds2)-1))     #initialize gold sprites     goldsprites = pygame.sprite.group(golds1,      #initialize pirate sprites & instances     pirate1 = pirate1(screen,13)     pirate2 = pirate2(screen,13)     pirate3 = pirate1(screen,11)     pirate4 = pirate2(screen,11)     pirate5 = pirate1(screen,13)     piratesprites = pygame.sprite.group(pirate1, pirate2, pirate3, pirate4, pirate5)      #use ordered updates keep clean appearance     allsprites =  pygame.sprite.orderedupdates(goldsprites, thief, piratesprites, scoreboard)      #set clock & loop     clock = pygame.time.clock()     keepgoing = true     while keepgoing:         clock.tick(30)         event in pygame.event.get():             if event.type == pygame.quit:                 keepgoing = false             elif event.type == pygame.keydown:                 if event.key == pygame.k_up:                     thief.moveup()                 elif event.key == pygame.k_down:                     thief.movedown()                 elif event.key == pygame.k_left:                     thief.moveleft()                 elif event.key == pygame.k_right:                     thief.moveright()                 elif event.key == pygame.k_escape:                     keepgoing = false          #check collisions here         hitpirates = pygame.sprite.spritecollide(thief, piratesprites, false)         hitgold = pygame.sprite.spritecollide(thief, goldsprites, true)          if hitpirates:             thief.hit.play()             scoreboard.lives += 1             if scoreboard.lives >= 100:                 keepgoing = false                 number = 0           if hitgolds:             thief.collectcoin.play()             scoreboard.score += 1             totalgolds -= 1             if totalgolds <= 0:                 keepgoing = false                 number = 1           #draw sprites         allsprites.clear(screen, background)         allsprites.update()         allsprites.draw(screen)          pygame.display.flip()      return scoreboard.score     return scoreboard.number  def instructions(score, number):     pygame.display.set_caption("hunt gold!")      background = pygame.surface(screen.get_size())     background = pygame.image.load("sand.jpg")     background = pygame.transform.scale(background, screen.get_size())     screen.blit(background, (0, 0))     if number == 0:         message = "sorry try again..."     elif number == 1:         message = "the theif escapes!"     else:         message = "onto hunt gold!"      insfont = pygame.font.sysfont("calibri", 25)     inslabels = []     instructions = (         "last score: %d" % score ,         "%s" % message,         "",         "gold!",         "get gold before "         "obliterated!",         "use arrow keys move thief.",         "space start, esc quit."         )      line in instructions:         templabel = insfont.render(line, 1 , (0,0,0))         inslabels.append(templabel)      #set homescreen loop     keepgoing = true     clock = pygame.time.clock()     while keepgoing:         clock.tick(30)         event in pygame.event.get():             if event.type == pygame.quit:                 keepgoing = false                 doneplaying = true             if event.type == pygame.keydown:                 if event.key == pygame.k_space:                     keepgoing = false                     doneplaying = false                 if event.key == pygame.k_escape:                     keepgoing = false                     doneplaying = true          in range(len(inslabels)):             screen.blit(inslabels[i], (50, 30*i))          pygame.display.flip()      return doneplaying  #define main function def main():     doneplaying = false     score = 0     message = ""     while not doneplaying:         doneplaying = instructions(score, message)         if not doneplaying:             score = game()         else:             pygame.quit()   if __name__ == "__main__":     main() 

glancing @ code, line:

pirate = pirate() 

your pirate class expects self, screen, dx. implicitly provide self.

i can guess @ want, since don't know off bat dx supposed mean in respect game, @ least avoid error:

pirate = pirate(pygame.display.get_surface(), 60) 

Comments

Popular posts from this blog

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

php - render data via PDO::FETCH_FUNC vs loop -

The canvas has been tainted by cross-origin data in chrome only -