Hi guys,
I'm trying to make an enemy object follow a player object but I'm having a problem with picking up the player co-ordinates, it gives me an error "Player object has no attribute x"
Here's whats iv'e got:
import pygame
pygame.init()
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("evin.png")
self.image = self.image.convert()
tranColor = self.image.get_at((1, 1))
self.image.set_colorkey(tranColor)
self.rect = self.image.get_rect()
self.x = 300
self.y = 300
self.rect.center = (self.x, self.y)
def update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
self.y -= 5
if keys[pygame.K_DOWN]:
self.y += 5
if keys[pygame.K_LEFT]:
self.x -= 5
if keys[pygame.K_RIGHT]:
self.x += 5
self.rect.center = (self.x, self.y)
class Enemy(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("enemy.png")
self.image = self.image.convert()
tranColor = self.image.get_at((1, 1))
self.image.set_colorkey(tranColor)
self.rect = self.image.get_rect()
self.x = 300
self.y = 200
self.rect.center = (self.x, self.y)
def update(self):
if self.x < Player.x:
self.x += 1
self.rect.center = (self.x, self.y)
elif self.x > Player.x:
self.x -= 1
self.rect.center = (self.x, self.y)
if self.y < Player.y:
self.y += 1
self.rect.center = (self.x, self.y)
elif self.y > Player.y:
self.y -= 1
self.rect.center = (self.x, self.y)
def main():
'Create the screen'
screen = pygame.display.set_mode((640, 480))
'Set the background'
background = pygame.Surface(screen.get_size())
background.fill((0, 0, 0))
'call the object'
player = Player()
enemy = Enemy()
'add object to group'
allSprites = pygame.sprite.Group(player)
enemySprites = pygame.sprite.Group(enemy)
clock = pygame.time.Clock()
keepGoing = True
while keepGoing:
clock.tick(30)
' handle events'
for event in pygame.event.get():
if event.type == pygame.QUIT:
keepGoing = False
allSprites.clear(screen, background)
enemySprites.clear(screen, background)
allSprites.update()
enemySprites.update()
allSprites.draw(screen)
enemySprites.draw(screen)
pygame.display.flip()
if __name__ == "__main__":
main()
I know there is something missing like paramaters or something but I just don't know how to go about it :/