How to make SPACE INVADERS using Pygame in Python

DO MAKE SURE TO VISIT MY CHANNEL :)

import pygame, random
pygame.init()

health = 100
score = 0

display = pygame.display.set_mode((1200, 673))
bg = pygame.image.load("space.png")
player = pygame.image.load("player.png")
enemy = pygame.image.load("enemy.png")
bullet = pygame.image.load("bullet (2).png")
bullet_2 = pygame.image.load("bullet (2).png")
bullet_3 = pygame.image.load("bullet (2).png")


player_x = 550
player_y = 500

player_bullet = pygame.image.load("bullet (2).png")
player_bullet_x = player_x-10
player_bullet_y = player_y+20



enemy_x = random.randint(0, 1000)
enemy_2_x = random.randint(0, 1000)
enemy_3_x  = random.randint(0, 1000)

enemy_y = 0


enemy_bullet_x = enemy_x+17
enemy_bullet_2_x = enemy_2_x+17
enemy_bullet_3_x = enemy_3_x+17
enemy_bullet_y = enemy_y+25



running = True
while running:
    font = pygame.font.SysFont(None, 40 )
    display.blit(bg, (0, 0))
    text = font.render(f'Score: {score}', True, (255, 0, 0))
    text2 = font.render(f'Health: {health}', True, (0, 255, 0))
    display.blit(text, (0, 0))
    display.blit(text2, (0, 50))
    display.blit(player, (player_x, player_y))
    display.blit(enemy, (enemy_x, enemy_y))
   
    display.blit(enemy, (enemy_2_x, enemy_y))
    display.blit(enemy, (enemy_3_x, enemy_y))
   
    display.blit(bullet, (enemy_bullet_x, enemy_bullet_y))
    display.blit(bullet_2, (enemy_bullet_2_x, enemy_bullet_y))
    display.blit(bullet_3, (enemy_bullet_3_x, enemy_bullet_y))

    display.blit(player_bullet, (player_bullet_x, player_bullet_y))


    player_mask = pygame.mask.from_surface(player)
    player_bullet_mask = pygame.mask.from_surface(player_bullet)

    enemy_mask = pygame.mask.from_surface(enemy)

    bullet_mask = pygame.mask.from_surface(bullet)
    bullet_2_mask = pygame.mask.from_surface(bullet_2)
    bullet_3_mask = pygame.mask.from_surface(bullet_3)
   
    pygame.display.update()

    enemy_y += 3
    enemy_bullet_y += 6
    player_bullet_y -= 7

    enemy_offset = (int(enemy_x - player_x), int(enemy_y - player_y))
    bullet_offset = (int(enemy_bullet_x - player_x), int(enemy_bullet_y - player_y))
    bullet_offset_2 = (int(enemy_bullet_2_x - player_x), int(enemy_bullet_y - player_y))
    bullet_offset_3 = (int(enemy_bullet_3_x - player_x), int(enemy_bullet_y - player_y))

    player_bullet_offset_1 = (int(player_bullet_x-enemy_x), int(player_bullet_y-enemy_y))
    player_bullet_offset_2 = (int(player_bullet_x-enemy_2_x), int(player_bullet_y-enemy_y))
    player_bullet_offset_3 = (int(player_bullet_x-enemy_3_x), int(player_bullet_y-enemy_y))

    player_bullet_collide_1 = player_bullet_mask.overlap(enemy_mask, player_bullet_offset_1)
    player_bullet_collide_2 = player_bullet_mask.overlap(enemy_mask, player_bullet_offset_2)
    player_bullet_collide_3 = player_bullet_mask.overlap(enemy_mask, player_bullet_offset_3)

    if player_bullet_collide_1 or player_bullet_collide_2 or player_bullet_collide_3:
        score += random.randint(1, 20)
        player_bullet_y = player_y+100
        player_bullet_x = player_x

    collide = player_mask.overlap(enemy_mask, enemy_offset)
    if collide:
        running = False

    collide_2 = player_mask.overlap(bullet_mask, bullet_offset)
    collide_3 = player_mask.overlap(bullet_2_mask, bullet_offset_2)
    collide_4 = player_mask.overlap(bullet_3_mask, bullet_offset_3)
    if collide_2 or collide_3 or collide_4:
        health -= random.randint(0, 20)
        enemy_bullet_y = 700



    if enemy_y >= 673:
        enemy_x = random.randint(0, 1000)
        enemy_2_x = random.randint(0, 1000)
        enemy_3_x  = random.randint(0, 1000)
        enemy_y = 0
        display.blit(enemy, (enemy_x, enemy_y))
        display.blit(enemy, (enemy_2_x, enemy_y))
        display.blit(enemy, (enemy_3_x, enemy_y))
        enemy_bullet_x = enemy_x+17
        enemy_bullet_2_x = enemy_2_x+17
        enemy_bullet_3_x = enemy_3_x+17
        enemy_bullet_y = enemy_y+25

    if player_bullet_y <= 0:
        player_bullet_x = player_x-2.5
        player_bullet_y = player_y+20
        display.blit(player_bullet, (player_bullet_x, player_bullet_y))

       


    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                player_x -= 15
            if event.key == pygame.K_RIGHT:
                player_x += 15


    pygame.display.update()

pygame.quit()
quit() 

Comments

Popular posts from this blog

How to make Chess game using Python, Pygame

How To Make a Car Game Using Python