diff --git a/Game_V2.py b/Game_V2.py index c855ae5..dc6f2d3 100644 --- a/Game_V2.py +++ b/Game_V2.py @@ -5,6 +5,7 @@ import math SCREEN_X = 1280 SCREEN_Y = 720 + # pygame setup pygame.init() pygame.display.set_caption("Rouglite") @@ -21,6 +22,8 @@ class Player(pygame.sprite.Sprite): self.direction = pygame.math.Vector2() self.speed = 2.25 self.time = 0 + self.time_2 = 0 + self.SCORE = 0 #health @@ -46,6 +49,7 @@ class Player(pygame.sprite.Sprite): for i in range(6): self.running_sprites.append(pygame.image.load("Sprites/Running/Player_run_right_"+str(i+1)+".png").convert_alpha()) + def get_damage(self, amount): if self.target_health > 0: @@ -65,8 +69,6 @@ class Player(pygame.sprite.Sprite): def ahealth_bar(self): self.current_health += (self.target_health-self.current_health)/10 - - # If self.current_health < self.target_health transition_colour = (0, 255, 0) health_bar_width = self.current_health/self.health_ratio transition_bar_width = self.target_health/self.health_ratio @@ -201,6 +203,12 @@ class Projectile(pygame.sprite.Sprite): enemy.damage(1) self.kill() break + for enemy in enemies2: + distance = pygame.math.Vector2.length(pygame.math.Vector2(enemy.rect.center) - self.rect.center) + if distance < 20: + enemy.damage(1) + self.kill() + break def update(self): self.rect.center += self.direction * self.speed @@ -221,7 +229,7 @@ class Enemy(pygame.sprite.Sprite): self.pos = self.rect.center self.direction = pygame.math.Vector2() self.speed = 2 - self.health = 2 + self.health = 3 self.death = pygame.mixer.Sound("Sounds/explosion.wav") self.image_direction = 1 @@ -234,6 +242,7 @@ class Enemy(pygame.sprite.Sprite): enemies.remove(self) self.kill() self.death.play() + player.SCORE += 1 def update(self): @@ -255,6 +264,41 @@ class Enemy(pygame.sprite.Sprite): self.pos += self.direction.normalize() * self.speed self.rect.center = (round(self.pos.x), round(self.pos.y)) + +class Enemy_2(pygame.sprite.Sprite): + def __init__(self, pos, group, scale): + super().__init__(group) + self.original_image = pygame.image.load("Sprites/atom_bomb.png").convert_alpha() + self.image = pygame.transform.scale(self.original_image, (int(self.original_image.get_width() * scale), int(self.original_image.get_height() * scale))) + self.rect = self.image.get_rect(center = pos) + self.pos = self.rect.center + self.direction = pygame.math.Vector2() + self.speed = 1 + self.health = 10 + + self.image_direction = 1 + self.death = pygame.mixer.Sound("Sounds/explosion_atomic.wav") + + def damage(self, damage): + self.health -= 1 + if self.health <= 0: + enemies2.remove(self) + self.kill() + self.death.play() + player.SCORE += 3 + + def update(self): + self.direction = pygame.math.Vector2(player.rect.center) - self.rect.center + if pygame.math.Vector2.length(self.direction) < 20: + player.get_damage(500) + self.kill() + enemies2.remove(self) + player.time = 0 + self.death.play() + + self.pos += self.direction.normalize() * self.speed + self.rect.center = (round(self.pos.x), round(self.pos.y)) + class CameraGroup(pygame.sprite.Group): def __init__(self): super().__init__() @@ -279,16 +323,33 @@ class CameraGroup(pygame.sprite.Group): self.display_surface.blit(sprite.image, offset_pos) def spawn_enemy(): - if len(enemies) < 20: + if len(enemies) < 5 + (player.time_2): random_x = randint(-1000, 1000) random_y = randint(-1000, 1000) enemies.append(Enemy((player.rect.centerx + random_x, player.rect.centery + random_y), camera_group, 0.05)) + +def spawn_enemy2(): + if len(enemies2) < 2 + int(player.time_2): + random_x = randint(-1000, 1000) + random_y = randint(-1000, 1000) + enemies2.append(Enemy_2((player.rect.centerx + random_x, player.rect.centery + random_y), camera_group, 0.5)) spawn_enemy_event = pygame.USEREVENT + 1 + +smallfont = pygame.font.Font("assets/font.ttf", 25) + +def score(score): + text = smallfont.render("Score: " + str(score), True, "black") + screen.blit(text, [10,15]) + + + #Setup + camera_group = CameraGroup() enemies = [] +enemies2 = [] @@ -303,7 +364,6 @@ pygame.mouse.set_cursor(cursor) pygame.mouse.set_visible(True | False) - while running: for e in pygame.event.get(): if e.type == pygame.QUIT: @@ -312,37 +372,34 @@ while running: if e.type == spawn_enemy_event: spawn_enemy() + + + if e.type == spawn_enemy_event: + spawn_enemy2() if player.time > 3: - if player.current_health < 999: + if player.current_health < 999 and player.target_health > 0: player.get_health(100) player.time -= 1 - - - - + else: + pass + if player.target_health <= 0: + running == False + print("Your score was " + str(player.SCORE)) + pygame.quit() screen.fill("cyan") + score(player.SCORE) + + camera_group.update() camera_group.custom_draw(player) - - pygame.display.flip() - - clock.tick(60) - player.time += 0.016 - - print(player.time) - - pygame.display.flip() clock.tick(60) player.time += 0.016 - print(player.time) - - - + player.time_2 += 0.005