3 classes heart system bouncer spawns,
This commit is contained in:
parent
2ace3e9cea
commit
3b7c57c7dc
5 changed files with 85 additions and 2 deletions
BIN
Bouncer.png
Normal file
BIN
Bouncer.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 506 B |
BIN
Chaser.png
Normal file
BIN
Chaser.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 549 B |
BIN
Dasher.png
Normal file
BIN
Dasher.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 499 B |
BIN
Heart.png
Normal file
BIN
Heart.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 299 B |
87
main.py
87
main.py
|
|
@ -65,6 +65,38 @@ class DasherEnemy:
|
|||
if self.timer <= 0:
|
||||
self.state = "wait"
|
||||
self.timer = 90
|
||||
class BouncerEnemy:
|
||||
def __init__(self, avoid_rect):
|
||||
self.rect = pygame.Rect(0, 0, 36, 36)
|
||||
while True:
|
||||
self.rect.x = random.randint(0, WIDTH - 36)
|
||||
self.rect.y = random.randint(0, HEIGHT - 36)
|
||||
if abs(self.rect.x - avoid_rect.x) > 150 or abs(self.rect.y - avoid_rect.y) > 150:
|
||||
break
|
||||
self.vx = random.choice([-3, -2, 2, 3])
|
||||
self.vy = random.choice([-3, -2, 2, 3])
|
||||
self.spawn_timer = 60
|
||||
|
||||
def update(self):
|
||||
self.rect.x += self.vx
|
||||
self.rect.y += self.vy
|
||||
if self.rect.left < 0 or self.rect.right > WIDTH:
|
||||
self.vx = -self.vx
|
||||
if self.rect.top < 0 or self.rect.bottom > HEIGHT:
|
||||
self.vy = -self.vy
|
||||
|
||||
|
||||
def enemy_for_level(level): #idk if I'll add the levels
|
||||
if level == 2:
|
||||
return ChaserEnemy
|
||||
if level == 3:
|
||||
return DasherEnemy
|
||||
if level == 4:
|
||||
return DasherEnemy
|
||||
return random.choice([BouncerEnemy, DasherEnemy, ChaserEnemy])
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
player_img = pygame.image.load("player.png").convert_alpha()
|
||||
|
|
@ -72,13 +104,34 @@ player_img = pygame.transform.scale(player_img, (40, 60))
|
|||
player = pygame.Rect(300, 220, 40, 60)
|
||||
speed = 5
|
||||
|
||||
Bouncer_img = pygame.image.load("Bouncer.png").convert_alpha()
|
||||
Bouncer_img = pygame.transform.scale(Bouncer_img, (30, 45))
|
||||
|
||||
Chaser_img = pygame.image.load("Chaser.png").convert_alpha()
|
||||
Chaser_img = pygame.transform.scale(Chaser_img, (30, 45))
|
||||
|
||||
Dasher_img = pygame.image.load("Dasher.png").convert_alpha()
|
||||
Dasher_img = pygame.transform.scale(Dasher_img, (30, 45))
|
||||
|
||||
|
||||
sugar_img = pygame.image.load("honey.png").convert_alpha()
|
||||
sugar_img = pygame.transform.scale(sugar_img, (50, 50))
|
||||
score = 0
|
||||
Enemies = []
|
||||
|
||||
|
||||
heart_img = pygame.image.load("Heart.png").convert_alpha()
|
||||
heart_img = pygame.transform.scale(heart_img,(40, 40))
|
||||
|
||||
|
||||
def new_sugar():
|
||||
return pygame.Rect(random.randint(0, WIDTH - 20),
|
||||
random.randint(0, HEIGHT - 20), 50, 50) #20,s
|
||||
sugar = new_sugar()
|
||||
lives = 3
|
||||
hit_timer = 0
|
||||
|
||||
|
||||
|
||||
|
||||
#game loop
|
||||
|
|
@ -99,6 +152,22 @@ while running:
|
|||
if keys[pygame.K_DOWN] or keys[pygame.K_s]:
|
||||
player.y += speed
|
||||
|
||||
for enemy in Enemies:
|
||||
if enemy.spawn_timer > 0:
|
||||
enemy.spawn_timer -= 1
|
||||
else:
|
||||
enemy.update()
|
||||
if hit_timer > 0:
|
||||
hit_timer -= 1
|
||||
else:
|
||||
for enemy in Enemies:
|
||||
if enemy.spawn_timer <= 0 and player.colliderect(enemy.rect):
|
||||
lives -= 1
|
||||
hit_timer = 90
|
||||
break
|
||||
if lives <= 0:
|
||||
running = False
|
||||
|
||||
#keep player in
|
||||
player.clamp_ip(screen.get_rect())
|
||||
|
||||
|
|
@ -106,13 +175,27 @@ while running:
|
|||
if player.colliderect(sugar):
|
||||
score += 1
|
||||
sugar = new_sugar()
|
||||
if score % 10 == 0:
|
||||
Enemies.append(BouncerEnemy(player))
|
||||
|
||||
screen.fill((255, 228, 240)) #screen
|
||||
|
||||
screen.fill((255, 228, 240)) # screen
|
||||
screen.blit(sugar_img, sugar) #sugar
|
||||
screen.blit(player_img, player) #player
|
||||
if hit_timer % 10 < 5:
|
||||
screen.blit(player_img, player)
|
||||
text = font.render(f"score: {score}", True, (90, 30, 60))
|
||||
screen.blit(text, (10, 10))
|
||||
|
||||
for enemy in Enemies:
|
||||
if enemy.spawn_timer % 10 < 5:
|
||||
screen.blit(Bouncer_img, enemy.rect)
|
||||
screen.blit(player_img, player)
|
||||
if hit_timer > 0 and hit_timer % 10 < 5:
|
||||
red = player_img.copy()
|
||||
red.fill((255, 40, 40, 0), special_flags=pygame.BLEND_RGBA_ADD)
|
||||
screen.blit(red, player)
|
||||
for i in range(lives):
|
||||
screen.blit(heart_img, (10 + i * 35, 40))
|
||||
pygame.display.flip()
|
||||
clock.tick(60)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue