Python Forum
How to make enemy chase me in pygame?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to make enemy chase me in pygame?
#3
Here you go. I've addedhumanto Player2and use those co-ordinates to have it chase Player. See line 62 and lines 81 through 89.
import pygame,sys
 
 
#Color definitions
BLUE = (10,10,128)
RED = (255,0,0)
BLACK = (0,0,0)
#Screen width
 
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
 
 
pygame.init()
 
 
 
 
class Player(pygame.sprite.Sprite):
	def __init__(self,x,y):
		super().__init__()
		self.image = pygame.Surface([50,45])
		self.image.fill(BLUE)
		self.rect = self.image.get_rect()
		self.rect.y = y
		self.rect.x = x
		self.score = 0
 
		self.change_x = 0
		self.change_y = 0
		self.walls = None
 
	def changespeed(self,x,y):
		self.change_x += x
		self.change_y += y
 
	def update(self):
		self.rect.x += self.change_x
 
 
		block_hit_list = pygame.sprite.spritecollide(self,self.walls, False)
		for block in block_hit_list:
			if self.change_x > 0:
				self.rect.right = block.rect.left
			else:
				self.rect.left = block.rect.right
 
		self.rect.y += self.change_y
 
		block_hit_list = pygame.sprite.spritecollide(self,self.walls, False)
		for block in block_hit_list:
 
			if self.change_y > 0:
				self.rect.bottom = block.rect.top
			else:
				self.rect.top = block.rect.bottom
 
 
class Player2(pygame.sprite.Sprite):
	def __init__(self,x,y,human):
		super().__init__()
		self.human = human
		self.image = pygame.Surface([50,45])
		self.image.fill(RED)
		self.rect = self.image.get_rect()
		self.rect.y = y
		self.rect.x = x
		self.score = 0
 
		self.rect.x = 400
		self.rect.y = 40
 
		self.change_x = 0
		self.change_y = 0
		self.walls = None
 
	def changespeed(self,x,y):
		self.change_x += x
		self.change_y += y
 
	def update(self):
		if self.human.rect.x > self.rect.x :
			self.rect.x += 1
		if self.human.rect.x < self.rect.x :
			self.rect.x -= 1
		if self.human.rect.y > self.rect.y :
			self.rect.y += 1
		if self.human.rect.y < self.rect.y :
			self.rect.y -= 1
 
 
 
 
 
class Wall(pygame.sprite.Sprite):
	def __init__(self,x,y,width,height):
		super().__init__()
 
		self.image = pygame.Surface([width, height])
		self.image.fill(BLUE)
 
		self.rect = self.image.get_rect()
		self.rect.y = y
		self.rect.x = x
 
 
 
#Wall init
 
wall_list = pygame.sprite.Group()
 
#Pygame definitions
 
screen = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT])
pygame.display.set_caption('test!')
all_sprite_list = pygame.sprite.Group()
 
 
 
 
 
#Left wall
wall = Wall(0,0,10,600)
wall_list.add(wall)
all_sprite_list.add(wall)
#top wall
wall = Wall(10,0,790,10)
wall_list.add(wall)
all_sprite_list.add(wall)
 
#Right wall
wall = Wall (790,0,10,600)
wall_list.add(wall)
all_sprite_list.add(wall)
 
#Bottom wall
wall = Wall (0,590,1000,300)
wall_list.add(wall)
all_sprite_list.add(wall)
 
 
#Create the player
player = Player(50,50)
all_sprite_list.add(player)
player.walls = wall_list
 
player2 = Player2(50,50, player)
all_sprite_list.add(player2)
player2.walls = wall_list
 
 
clock = pygame.time.Clock()
 
#Loop
 
done = False
 
while not done:
	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			done = True
 
 
		elif event.type == pygame.KEYDOWN:
			if event.key == pygame.K_a:
				player.changespeed(-3, 0)
			elif event.key == pygame.K_d:
				player.changespeed(3,0)
			elif event.key == pygame.K_w:
				player.changespeed(0,-3)
			elif event.key == pygame.K_s:
				player.changespeed(0,3)
 
		elif event.type == pygame.KEYUP:
			if event.key == pygame.K_a:
				player.changespeed(3,0)
			elif event.key == pygame.K_d:
				player.changespeed(-3,0)
			elif event.key == pygame.K_w:
				player.changespeed(0,3)
			elif event.key == pygame.K_s:
				player.changespeed(0,-3)
 
 
	all_sprite_list.update()
	screen.fill(BLACK)
	all_sprite_list.draw(screen)
	pygame.display.flip()
	clock.tick(60)
	pygame.display.flip()
 
 
 
 
 
pygame.quit()
Jan_97 likes this post
Reply


Messages In This Thread
How to make enemy chase me in pygame? - by Jan_97 - Nov-22-2021, 07:14 PM
RE: How to make enemy chase me in pygame? - by BashBedlam - Nov-22-2021, 10:45 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
Question [PyGame] Problem with collision of player and enemy Nekotrooper 1 817 Dec-08-2023, 03:29 PM
Last Post: deanhystad
  [PyGame] platformer enemy animation Yegor123 3 2,121 May-03-2023, 08:42 AM
Last Post: Windspar
  How to make an image move in relation to another in PYGAME CompleteNewb 1 2,368 Nov-10-2021, 03:38 PM
Last Post: metulburr
  cant make a door automatically close a few seconds after i open it in pygame cooImanreebro 2 2,306 Dec-15-2020, 08:40 PM
Last Post: michael1789
  Trying to make boundries for the pygame bluewing101 2 2,102 Mar-23-2020, 01:35 AM
Last Post: Windspar
  [PyGame] pygame, help with making a function to detect collision between player and enemy. Kris1996 3 3,424 Mar-07-2020, 12:32 PM
Last Post: Kris1996
  How can I make music with python/pygame? xBlackHeartx 12 7,407 Oct-15-2019, 08:00 PM
Last Post: nilamo

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020