with my code right now, whenever my sprite collides with a Pokemon, the pokemon blits at random locations 3 - 5 times then just doesn't let me collide with it anymore. Sometimes the pokemon that blits is random sometimes its not. Here is my pokemon code and my collision code:
class Pokemon:
def __init__(self, parent_screen):
self.pokemon = [
pygame.image.load('/Users/gersh/PycharmProjects/snakeeo/venv/lib/resources/pokemon/bulbasaur.png').convert(),
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()
]
self.parent_screen = parent_screen
self.x = SIZE
self.y = SIZE
self.random_pokemon = random.choice(self.pokemon)
self.set_colorkey()
def set_colorkey(self):
for i in range(len(self.pokemon)):
image = self.pokemon[i]
image.set_colorkey((0, 0, 0))
self.pokemon[i] = pygame.transform.scale(image, (150, 150))
def move(self):
self.parent_screen.blit(random.choice(self.pokemon), (self.x, self.y))
self.x = random.randint(1,25)*SIZE
self.y = random.randint(1,25)*SIZE
def draw_pokemon(self):
self.parent_screen.blit(self.random_pokemon, (self.x, self.y))
#MY COLLISION CODE:
score = 0
class Game:
def __init__(self):
pygame.init()
pygame.display.set_caption('Pokemon Catcher')
pygame.mixer.init()
self.surface = pygame.display.set_mode((700, 677))
self.background_music()
self.snake = Snake(self.surface)
self.snake.draw()
self.random_pokemon = Pokemon(self.surface)
self.pokemon = Pokemon(self.surface)
self.pokemon.draw_pokemon()
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
def play(self):
global score
self.render_background()
self.snake.walk()
self.pokemon.draw_pokemon()
self.display_score()
pygame.display.flip()
if self.collide(self.snake.x, self.snake.y, self.random_pokemon.x, self.random_pokemon.y):
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)
pygame.display.flip()
# collide with boundary
if self.snake.x <= -40 or self.snake.y <= -40 or self.snake.x >= 650 or self.snake.y >= 600:
sound = pygame.mixer.Sound('/Users/gersh/PycharmProjects/snakeeo/venv/lib/resources/music/bump.wav')
pygame.mixer.Sound.play(sound)
raise 'Hit the boundry error'