import os.path

import pygame
import random
import time
WIDTH,HEIGHT = 800,800
FPS = 60
ram = (WIDTH / 2,HEIGHT / 2)
potroni = 5
count = 0
b = 5
helph = False
hizni = 2
game_folder = os.path.dirname(__file__)
img_folder = os.path.join(game_folder,'img')
player_img = pygame.image.load(os.path.join(img_folder, 'gugigaga.png'))
playere_img = pygame.image.load(os.path.join(img_folder, 'ng.png'))
pygame.transform.scale(player_img, (3, 3))

class Crevplr(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = player_img
        self.rect = self.image.get_rect()
        self.rect.center = (WIDTH / 2,HEIGHT / 2)
        self.dir = 0
        self.sp = 5
        self.spx = 0
        self.spy = 0
    def update(self):
        self.spx = 0
        self.spy = 5
        keystate = pygame.key.get_pressed()
        if keystate[pygame.K_w]:
            self.spy = -2
        if keystate[pygame.K_s]:
            self.spy = 2
        if keystate[pygame.K_d]:
            self.spx = 2
        if keystate[pygame.K_a]:
            self.spx = -2
        self.rect.x += self.spx
        self.rect.y += self.spy
        if self.rect.right > WIDTH:
            self.rect.right = HEIGHT
        if self.rect.left < 0:
            self.rect.left = 0
        if self.rect.bottom > HEIGHT:
            self.rect.bottom = HEIGHT
    def shoot(self):
        bull = Bul(self.rect.centerx, self.rect.top)
        all_sprites.add(bull)
        bulls.add(bull)
        self.rect.move_ip(0,30)
class Bul(pygame.sprite.Sprite):
    def __init__(self, x, y):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.Surface((10, 20))
        self.image.fill((100, 100, 0))
        self.rect = self.image.get_rect()
        self.rect.bottom = y
        self.rect.centerx = x
        self.speedy = -15
    def update(self):
        self.rect.y += self.speedy
        if self.rect.bottom < 0:
            self.rect.move_ip(1,800)


class Ship(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = playere_img
        self.rect = self.image.get_rect()
        self.rect.x = random.randrange(0, WIDTH - self.rect.width)
        self.rect.y = random.randrange(-50,-30)
        self.speedx = random.randint(-8,8)
        self.speedy = random.randint(2,8)
    def update(self):
        self.rect.x += self.speedx
        self.rect.y += self.speedy
        if self.rect.top > HEIGHT + 10 or self.rect.left > WIDTH + 30 or self.rect.right < -30:
            self.rect.x = random.randrange(0, WIDTH - self.rect.width)
            self.rect.y = random.randrange(-50, -30)
            self.speedx = random.randint(-0, 0)
            self.speedy = random.randint(1, 2)

class Boost(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.Surface((10, 20))
        self.image.fill((100, 100, 10))
        self.rect = self.image.get_rect()
        self.rect.x = random.randrange(0, WIDTH - self.rect.width)
        self.rect.y = random.randrange(800,800)
    def update(self):
        if self.rect.right > WIDTH:
            self.rect.right = HEIGHT
        if self.rect.left < 0:
            self.rect.left = 0
        if self.rect.bottom > HEIGHT:
            self.rect.bottom = HEIGHT
        if self.rect.up < 0:
            self.rect.up = 0



pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()

all_sprites = pygame.sprite.Group()
ships = pygame.sprite.Group()
bulls = pygame.sprite.Group()
boosts = pygame.sprite.Group()
cr = Crevplr()
all_sprites.add(cr)
for i in range(50):
    shp = Ship()
    all_sprites.add(shp)
    ships.add(shp)

run = True
while run:
    clock.tick(FPS)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                for i in range(0,2):
                    if potroni != 0:
                        cr.shoot()
                        potroni -= 1

    if potroni == 0:
        count +=1
    if potroni == 0 and count >= 240:
        count = 0
        potroni += b


    all_sprites.update()

    hits = pygame.sprite.spritecollide(cr, ships, True)
    if hits:
        run = True

    hits = pygame.sprite.groupcollide(ships, bulls, helph, True)
    for hit in hits:
        potroni += 2
        hizni -= 1
        if hizni == 0:
            for i in range (0,2):
                m = Ship()
                all_sprites.add(m)
                ships.add(m)
                hizni = 2


    screen.fill((255, 0, 0))
    all_sprites.draw(screen)
    pygame.display.flip()

pygame.quit()


#ww