0

I am making a game right now where if my pokemon trainer collides with any pokemon in my pokemon list then the score should go up by 1 and a random pokemon blits anywhere on the map and so on. I am having difficulty with making it so I get the x and y values of any pokemon in my pokemon list so I can use it in my collision function.

This is my pokemon list:

self.pokemon = [
    pygame.image.load('/Users/gersh/PycharmProjects/snakeeo/venv/lib/resources/pokemon/caterpie.png').convert(),
    pygame.image.load('/Users/gersh/PycharmProjects/snakeeo/venv/lib/resources/pokemon/charmander.png').convert(),
    pygame.image.load('/Users/gersh/PycharmProjects/snakeeo/venv/lib/resources/pokemon/pidgey.png').convert(),
    pygame.image.load('/Users/gersh/PycharmProjects/snakeeo/venv/lib/resources/pokemon/squirtle.png').convert(),
    pygame.image.load('/Users/gersh/PycharmProjects/snakeeo/venv/lib/resources/pokemon/rattata.png').convert(),
    pygame.image.load('/Users/gersh/PycharmProjects/snakeeo/venv/lib/resources/pokemon/weedle.png').convert(),
    pygame.image.load('/Users/gersh/PycharmProjects/snakeeo/venv/lib/resources/pokemon/ekans.png').convert(),
    pygame.image.load('/Users/gersh/PycharmProjects/snakeeo/venv/lib/resources/pokemon/gloom-f.png').convert(),
    pygame.image.load('/Users/gersh/PycharmProjects/snakeeo/venv/lib/resources/pokemon/mankey.png').convert(),
]

This is my collision condition:

if self.collide(self.snake.x, self.snake.y, self.pokemon.x(this is where I need help, I want to make it so the x and y values counts for any pokemon in my list), self.pokemon.y(this is where I need help):
    score += 1
    self.pokemon.move()
    sound = pygame.mixer.Sound('/Users/gersh/PycharmProjects/snakeeo/venv/lib/resources/music/cartoon eat.wav')
    pygame.mixer.Sound.play(sound)

This is my collision method:

def collide(self,x1,y1,x2,y2):
    distance = math.sqrt((math.pow(x2 - x1,2)) + (math.pow(y2-y1,2)))
    if distance < 40:
        return True
    else:
        return False
Jobo Fernandez
  • 905
  • 4
  • 13
gershinho
  • 33
  • 4
  • Can you show your collide method? Also, can you show your self.snake attribute? – Jobo Fernandez Aug 13 '22 at 00:03
  • @JoboFernandez collide method: def collide(self,x1,y1,x2,y2): distance = math.sqrt((math.pow(x2 - x1,2)) + (math.pow(y2-y1,2))) if distance < 40: return True else: return False – gershinho Aug 13 '22 at 00:55

1 Answers1

1
for pokemon in self.pokemon:
    # get pokemon top and left coordinates / alternatively use centerx and centery
    pokemon_x = pokemon.get_rect().x
    pokemon_y = pokemon.get_rect().y
    
    if self.collide(self.snake.x, self.snake.y, pokemon_x, pokemon_y):
        score += 1
        pokemon.move() # you must have a code for this to reposition your image
        sound = pygame.mixer.Sound('/Users/gersh/PycharmProjects/snakeeo/venv/lib/resources/music/cartoon eat.wav')
        pygame.mixer.Sound.play(sound)
Jobo Fernandez
  • 905
  • 4
  • 13