import pyxel
import random

joueur_x = 56
joueur_y = 100
vitesse = 2
direction = "droite"
skin = 0
niveau = 0
score = 0
record = 0
couleur_jeu1 = 10
etape = 3
meteorite1_x = random.randint(0, 120)
meteorite1_y = -20
meteorite1_v = random.randint(1, 3)
meteorite2_x = random.randint(0, 120)
meteorite2_y = -60
meteorite2_v = random.randint(1, 3)
meteorite3_x = random.randint(0, 120)
meteorite3_y = -100 
meteorite3_v = random.randint(1, 3)  #le début
meteorite4_x = random.randint(0, 120)
meteorite4_y = -140
meteorite4_v = random.randint(2, 4)
meteorite5_x = random.randint(0, 120)
meteorite5_y = -180
meteorite5_v = 3
meteorite6_x = random.randint(0, 120)
meteorite6_y = -220
meteorite6_v = 4
meteorite7_x = random.randint(0, 120)
meteorite7_y = -260
meteorite7_v = random.randint(3, 5)
meteorite8_x = random.randint(0, 120)
meteorite8_y = -300
meteorite8_v = 5
meteorite9_x = random.randint(0, 120)
meteorite9_y = -340
meteorite9_v = 6
meteorite10_x = random.randint(0, 120)
meteorite10_y = -380
meteorite10_v = random.randint(4, 7)


def update():
    global joueur_x, joueur_y, direction, skin, niveau, score, record, etape, meteorite1_x, meteorite1_y, meteorite1_v, meteorite2_x, meteorite2_y, meteorite2_v, meteorite3_x, meteorite3_y, meteorite3_v, meteorite4_x, meteorite4_y, meteorite4_v, meteorite5_x, meteorite5_y, meteorite5_v, meteorite6_x, meteorite6_y, meteorite6_v, meteorite7_x, meteorite7_y, meteorite7_v, meteorite8_x, meteorite8_y, meteorite8_v, meteorite9_x, meteorite9_y, meteorite9_v, meteorite10_x, meteorite10_y, meteorite10_v
    if pyxel.btn(pyxel.KEY_Q):
        joueur_x -= vitesse
        direction = "gauche"
    if pyxel.btn(pyxel.KEY_D):
        joueur_x += vitesse
        direction = "droite"
    if pyxel.btn(pyxel.KEY_Z):
        joueur_y -= vitesse
    if pyxel.btn(pyxel.KEY_S):
        joueur_y += vitesse
    joueur_x = max(0, min(joueur_x, 128 - 16))
    joueur_y = max(0, min(joueur_y, 128 - 16))
    if pyxel.btnp(pyxel.KEY_A):
        skin = (skin + 1) % 2
    if niveau == 1:
        if pyxel.frame_count % 30 == 0:
            score += 1
            if score % 30 == 0 and etape < 10:
                etape += 1
        meteorite1_y += meteorite1_v
        meteorite2_y += meteorite2_v
        meteorite3_y += meteorite3_v
        if etape >= 4:
            meteorite4_y += meteorite4_v
        if etape >= 5:
            meteorite5_y += meteorite5_v
        if etape >= 6:
            meteorite6_y += meteorite6_v
        if etape >= 7:
            meteorite7_y += meteorite7_v
        if etape >= 8:
            meteorite8_y += meteorite8_v
        if etape >= 9:
            meteorite9_y += meteorite9_v
        if etape >= 10:
            meteorite10_y += meteorite10_v
        if meteorite1_y > 128:
            meteorite1_x = random.randint(0, 120)
            meteorite1_y = random.randint(-50, 0)
            meteorite1_v = random.randint(1, 3)
        if meteorite2_y > 128:
            meteorite2_x = random.randint(0, 120)
            meteorite2_y = random.randint(-50, 0)
            meteorite2_v = random.randint(1, 3)
        if meteorite3_y > 128:
            meteorite3_x = random.randint(0, 120)
            meteorite3_y = random.randint(-50, 0)
            meteorite3_v = random.randint(1, 3)
        if etape >= 4 and meteorite4_y > 128:
            meteorite4_x = random.randint(0, 120)
            meteorite4_y = random.randint(-50, 0)
            meteorite4_v = random.randint(1, 3)
        if etape >= 5 and meteorite5_y > 128:
            meteorite5_x = random.randint(0, 120)
            meteorite5_y = random.randint(-50, 0)
            meteorite5_v = random.randint(1, 3)
        if etape >= 6 and meteorite6_y > 128:
            meteorite6_x = random.randint(0, 120)
            meteorite6_y = random.randint(-50, 0)
            meteorite6_v = random.randint(1, 3)
        if etape >= 7 and meteorite7_y > 128:
            meteorite7_x = random.randint(0, 120)
            meteorite7_y = random.randint(-50, 0)
            meteorite7_v = random.randint(1, 3)
        if etape >= 8 and meteorite8_y > 128:
            meteorite8_x = random.randint(0, 120)
            meteorite8_y = random.randint(-50, 0)
            meteorite8_v = random.randint(1, 3)
        if etape >= 9 and meteorite9_y > 128:
            meteorite9_x = random.randint(0, 120)
            meteorite9_y = random.randint(-50, 0)
            meteorite9_v = random.randint(1, 3)
        if etape >= 10 and meteorite10_y > 128:
            meteorite10_x = random.randint(0, 120)
            meteorite10_y = random.randint(-50, 0)
            meteorite10_v = random.randint(1, 3)
        if abs(joueur_x - meteorite1_x) < 8 and abs(joueur_y - meteorite1_y) < 8:
            niveau = 0
            if score > record:
                record = score
                niveau = 0
            pyxel.play(0, 0)
        if abs(joueur_x - meteorite2_x) < 8 and abs(joueur_y - meteorite2_y) < 8:
            niveau = 0
            if score > record:
                record = score
                niveau = 0
            pyxel.play(0, 0)
        if abs(joueur_x - meteorite3_x) < 8 and abs(joueur_y - meteorite3_y) < 8:
            niveau = 0
            if score > record:
                record = score
                niveau = 0
            pyxel.play(0, 0)
        if etape >= 4 and abs(joueur_x - meteorite4_x) < 8 and abs(joueur_y - meteorite4_y) < 8:
            niveau = 0
            if score > record:
                record = score
                niveau = 0
            pyxel.play(0, 0)
        if etape >= 5 and abs(joueur_x - meteorite5_x) < 8 and abs(joueur_y - meteorite5_y) < 8:
            niveau = 0
            if score > record:
                record = score
                niveau = 0
            pyxel.play(0, 0)
        if etape >= 6 and abs(joueur_x - meteorite6_x) < 8 and abs(joueur_y - meteorite6_y) < 8:
            niveau = 0
            if score > record:
                record = score
                niveau = 0
            pyxel.play(0, 0)
        if etape >= 7 and abs(joueur_x - meteorite7_x) < 8 and abs(joueur_y - meteorite7_y) < 8:
            niveau = 0
            if score > record:
                record = score
                niveau = 0
            pyxel.play(0, 0)
        if etape >= 8 and abs(joueur_x - meteorite8_x) < 8 and abs(joueur_y - meteorite8_y) < 8:
            niveau = 0
            if score > record:
                record = score
                niveau = 0
            pyxel.play(0, 0)
        if etape >= 9 and abs(joueur_x - meteorite9_x) < 8 and abs(joueur_y - meteorite9_y) < 8:
            niveau = 0
            if score > record:
                record = score
                niveau = 0
            pyxel.play(0, 0)
        if etape >= 10 and abs(joueur_x - meteorite10_x) < 8 and abs(joueur_y - meteorite10_y) < 8:
            niveau = 0
            if score > record:
                record = score
                niveau = 0
            pyxel.play(0, 0)
    if 49 < joueur_x < 79 and 49 < joueur_y < 79 and niveau == 0:
        pyxel.cls(0)
        niveau = 1
        score = 0
        etape = 3
        meteorite1_y = -20
        meteorite2_y = -60
        meteorite3_y = -100
        meteorite4_y = -140
        meteorite5_y = -180
        meteorite6_y = -220
        meteorite7_y = -260
        meteorite8_y = -300
        meteorite9_y = -340
        meteorite10_y = -380
def draw():
    pyxel.cls(0)
    if niveau == 0:
        pyxel.rect(0, 0, 128, 128, 7)
        pyxel.rect(49, 49, 30, 30, couleur_jeu1)
        pyxel.text(54, 61, "START", 0)
        pyxel.text(5, 5, "Record: " + str(record), 1)
    else:
        pyxel.cls(0)
        pyxel.rect(0, 0, 128, 128, 0)
        pyxel.circ(meteorite1_x, meteorite1_y, 2, 8)
        pyxel.circ(meteorite2_x, meteorite2_y, 2, 8)
        pyxel.circ(meteorite3_x, meteorite3_y, 2, 8)
        if etape >= 4:
            pyxel.circ(meteorite4_x, meteorite4_y, 2, 9)
        if etape >= 5:
            pyxel.circ(meteorite5_x, meteorite5_y, 2, 10)
        if etape >= 6:
            pyxel.circ(meteorite6_x, meteorite6_y, 2, 2)
        if etape >= 7:
            pyxel.circ(meteorite7_x, meteorite7_y, 2, 4)
        if etape >= 8:
            pyxel.circ(meteorite8_x, meteorite8_y, 2, 6)
        if etape >= 9:
            pyxel.circ(meteorite9_x, meteorite9_y, 2, 11)
        if etape >= 10:
            pyxel.circ(meteorite10_x, meteorite10_y, 2, 7)
        pyxel.text(0, 0, "Score: " + str(score), 7)
        pyxel.text(70, 0, "Record: " + str(record), 7)
    if direction == "droite" and skin == 0:
        pyxel.blt(joueur_x, joueur_y, 0, 0, 0, 16, 16, 14)
    elif skin == 0:
        pyxel.blt(joueur_x, joueur_y, 0, 16, 0, 16, 16, 14)
    elif direction == "droite" and skin == 1:
        pyxel.blt(joueur_x, joueur_y, 0, 16, 16, 16, 16, 14)
    else:
        pyxel.blt(joueur_x, joueur_y, 0, 0, 16, 16, 16, 14)
        
        
pyxel.init(128, 128, title="MrChabanier_vs_Meteorites")
pyxel.load("res.pyxres")
pyxel.run(update, draw)