import pyxel 

pyxel.init(80, 80, title = "Silken Echo", fps = 60)
pyxel.load("style.pyxres")

pyxel.playm(0, loop=True)
state = 0
tm = 1
game_state = 0
choix_ga = False
choix_fi = False
camera_x = 1208
camera_y = 56
player_speed = 2
vie = 6
u_vie = 0
v_vie = 0
col_player = 0
u_player = 0
v_player = 0
col_ga = 8
u_ga = 16
v_ga = 8
u_ga_g = 8
u_ga_d = 0
v_ga_g = 64
v_ga_d = 64
col_fi = 1
u_fi = 8
v_fi = 0
u_fi_g = 0
u_fi_d = 8
v_fi_g = 32
v_fi_d = 32
player_x = 1208
player_y = 56
velocity_y = 0
velocity_x = 0
gravity = 0.3
jump_force = -4.5
on_ground = False
tiles_sol_dur = [(3,0),(3,1),(3,2),(3,3),(0,0)]
tiles_sol = [(3,0),(3,1),(3,2),(3,3)]
tiles_mur = [(3,0),(3,1),(3,2),(3,3) , (5,3),(5,4),(7,3),(7,4),(9,3),(9,4),(11,3),(11,4)]
tiles_porte1 = [(12,3),(12,4)]
tiles_porte2 = [(13,3),(13,4)]
tiles_porte3 = [(14,3),(14,4)]
tiles_porte4 = [(15,3),(15,4)]
tiles_plafond = [(3,0),(3,1),(3,2),(3,3)]
tiles_block_fin = [(3,9)]
tiles_pique_haut = [(2,5),(3,5)]
tiles_pique_mur_d = [(4,5),(4,6)]
tiles_pique_mur_g = [(5,5),(5,6)]
tiles_pique_bas = [(2,6),(3,6)]
sur_cle1 = False
sur_cle2 = False
sur_cle3 = False
sur_cle4 = False
change1 = False
change2 = False
change2 = False
change2 = False
tiles_cle1 = [(2,7)]
tiles_cle2 = [(3,7)]
tiles_cle3 = [(2,8)]
tiles_cle4 = [(3,8)]

def change_state(state, choix_ga ,choix_fi):
    if state == 0:
        if 2 <= pyxel.mouse_x <= 77 and 24 <= pyxel.mouse_y <= 50 and pyxel.btnp(pyxel.MOUSE_BUTTON_LEFT):
                state = 1
    if state == 1:
        if 8 <= pyxel.mouse_x <= 38 and 24 <= pyxel.mouse_y <= 55 and pyxel.btnp(pyxel.MOUSE_BUTTON_RIGHT):
            state = 2
            choix_fi = True
        if 41 <= pyxel.mouse_x <= 71 and 24 <= pyxel.mouse_y <= 55 and pyxel.btnp(pyxel.MOUSE_BUTTON_RIGHT):
            state = 2
            choix_ga = True
    if state == 2:
        if 1648 <= player_x <= 1650 and 1584 <= player_y <= 1592 :
            state = 3
    
    return state, choix_ga, choix_fi

    
    
def prend_degat(u_vie, v_vie):
    if vie == 6 :
        u_vie = 0
        v_vie = 10
    elif vie == 5 :
        u_vie = 8
        v_vie = 10
    elif vie == 4 :
        u_vie = 0
        v_vie = 18
    elif vie == 3 :
        u_vie = 8
        v_vie = 18
    elif vie == 2 :
        u_vie = 0
        v_vie = 26
    elif vie == 1 :
        u_vie = 8
        v_vie = 26
    else :
        pyxel.reset()
    return u_vie, v_vie

def est_porte1(x_pixel, y_pixel):
    if sur_cle1 == False:
        tile_x = int(x_pixel // 8)
        tile_y = int(y_pixel // 8)
        tile = pyxel.tilemap(0).pget(tile_x, tile_y)
        return tile in tiles_porte1
def est_porte2(x_pixel, y_pixel):
    if sur_cle2 == False:
        tile_x = int(x_pixel // 8)
        tile_y = int(y_pixel // 8)
        tile = pyxel.tilemap(0).pget(tile_x, tile_y)
        return tile in tiles_porte2
def est_porte3(x_pixel, y_pixel):
    if sur_cle3 == False:
        tile_x = int(x_pixel // 8)
        tile_y = int(y_pixel // 8)
        tile = pyxel.tilemap(0).pget(tile_x, tile_y)
        return tile in tiles_porte3
def est_porte4(x_pixel, y_pixel):
    if sur_cle4 == False:
        tile_x = int(x_pixel // 8)
        tile_y = int(y_pixel // 8)
        tile = pyxel.tilemap(0).pget(tile_x, tile_y)
        return tile in tiles_porte4
    
def est_cle1(x_pixel, y_pixel):
    tile_x = int(x_pixel // 8)
    tile_y = int(y_pixel // 8)
    tile = pyxel.tilemap(0).pget(tile_x,tile_y)
    return tile in tiles_cle1
    
def est_cle2(x_pixel, y_pixel):
    tile_x = int(x_pixel // 8)
    tile_y = int(y_pixel // 8)
    tile = pyxel.tilemap(0).pget(tile_x,tile_y)
    return tile in tiles_cle2
    
def est_cle3(x_pixel, y_pixel):
    tile_x = int(x_pixel // 8)
    tile_y = int(y_pixel // 8)
    tile = pyxel.tilemap(0).pget(tile_x,tile_y)
    return tile in tiles_cle3
    
def est_cle4(x_pixel, y_pixel):
    tile_x = int(x_pixel // 8)
    tile_y = int(y_pixel // 8)
    tile = pyxel.tilemap(0).pget(tile_x,tile_y)
    return tile in tiles_cle4

def est_pique_haut(x_pixel, y_pixel):
    tile_x = int(x_pixel // 8)
    tile_y = int(y_pixel // 8)
    tile = pyxel.tilemap(0).pget(tile_x,tile_y)
    return tile in tiles_pique_haut
def under_pique_haut(x, y):
    tile = pyxel.tilemap(0).pget((x + 3) // 8, (y + 8) // 8)
    return tile in tiles_pique_haut 
    
def est_pique_mur_d(x_pixel, y_pixel):
    tile_x = int(x_pixel // 6)
    tile_y = int(y_pixel // 8)
    tile = pyxel.tilemap(0).pget(tile_x,tile_y)
    return tile in tiles_pique_mur_d
def d_pique_mur_d(x, y):
    tile = pyxel.tilemap(0).pget((x + 3) // 8, (y + 0) // 8)
    return tile in tiles_pique_mur_d
    
def est_pique_mur_g(x_pixel, y_pixel):
    tile_x = int(x_pixel // 6)
    tile_y = int(y_pixel // 8)
    tile = pyxel.tilemap(0).pget(tile_x,tile_y)
    return tile in tiles_pique_mur_g
def g_pique_mur_g(x, y):
    tile = pyxel.tilemap(0).pget((x + 1) // 8, (y + 0) // 8)
    return tile in tiles_pique_mur_g

def est_pique_bas(x_pixel, y_pixel):
    tile_x = int(x_pixel // 8)
    tile_y = int(y_pixel // 8)
    tile = pyxel.tilemap(0).pget(tile_x,tile_y)
    return tile in tiles_pique_bas
def on_pique_bas(x, y):
    tile = pyxel.tilemap(0).pget((x + 3) // 8, (y + 0) // 8)
    return tile in tiles_pique_bas
    
def est_solide(x_pixel, y_pixel):
    tile_x = int(x_pixel // 8)
    tile_y = int(y_pixel // 8)
    tile = pyxel.tilemap(0).pget(tile_x, tile_y)
    return tile in tiles_sol

def est_mur(x_pixel, y_pixel):
    tile_x = int(x_pixel // 8)
    tile_y = int(y_pixel // 8)
    tile = pyxel.tilemap(0).pget(tile_x, tile_y)
    return tile in tiles_mur

def est_plafond(x_pixel, y_pixel):
    tile_x = int(x_pixel // 8)
    tile_y = int(y_pixel // 8)
    tile = pyxel.tilemap(0).pget(tile_x,tile_y)
    return tile in tiles_plafond

def on_floor(x, y):
    tile = pyxel.tilemap(0).pget((x + 3) // 8, (y + 8) // 8)
    return tile in tiles_sol or tile in tiles_sol_dur


def player_deplacement(x, y):
    new_x = x
    new_y = y 
    if pyxel.btn(pyxel.KEY_RIGHT) or pyxel.btn(pyxel.KEY_D):
        if x < 10000:
            if not est_mur(x + 8, y) and not est_mur(x + 8, y + 7) and not est_pique_haut(x + 8, y) and not est_pique_haut(x + 8, y + 7) and not est_pique_mur_d(x + 8, y) and not est_pique_mur_d(x + 8, y + 7) and not est_pique_mur_g(x + 8, y) and not est_pique_mur_g(x + 8, y + 7) and not est_pique_bas(x + 8, y) and not est_pique_bas(x + 8, y + 7) and not est_porte1(x + 8, y) and not est_porte1(x + 8, y + 7) and not est_porte2(x + 8, y) and not est_porte2(x + 8, y + 7) and not est_porte3(x + 8, y) and not est_porte3(x + 8, y + 7) and not est_porte4(x + 8, y) and not est_porte4(x + 8, y + 7):
                new_x += player_speed

    if pyxel.btn(pyxel.KEY_LEFT) or pyxel.btn(pyxel.KEY_Q):
        if x > 0:
            if not est_mur(x - 1, y) and not est_mur(x - 1, y + 7) and not est_pique_haut(x - 1, y) and not est_pique_haut(x - 1, y + 7) and not est_pique_mur_d(x - 1, y) and not est_pique_mur_d(x - 1, y + 7) and not est_pique_mur_g(x - 1, y) and not est_pique_mur_g(x - 1, y + 7) and not est_pique_bas(x - 1, y) and not est_pique_bas(x - 1, y + 7) and not est_porte1(x - 1, y) and not est_porte1(x - 1, y + 7) and not est_porte2(x - 1, y) and not est_porte2(x - 1, y + 7) and not est_porte3(x - 1, y) and not est_porte3(x - 1, y + 7) and not est_porte4(x - 1, y) and not est_porte4(x - 1, y + 7):
                new_x -= player_speed

    return new_x, new_y
    

    
def collision_cle1(x, y, vy, sur_cle1, change1):
    foot_x = int((x + 0) // 8)
    foot_y = int((y + 0) // 8)
    head_y = int((y - 1) // 8)

    tile_foot = pyxel.tilemap(0).pget(foot_x, foot_y)
    tile_head = pyxel.tilemap(0).pget(foot_x, head_y)

    if tile_foot in tiles_cle1 and vy >= 0:
        sur_cle1 = True
        change1 = True
    elif tile_head in tiles_cle1 and vy < 0:
        sur_cle1 = True
        change1 = True
    return y, vy, sur_cle1, change1
    
def collision_cle2(x, y, vy, sur_cle2):
    foot_x = int((x + 0) // 8)
    foot_y = int((y + 0) // 8)
    head_y = int((y - 1) // 8)

    tile_foot = pyxel.tilemap(0).pget(foot_x, foot_y)
    tile_head = pyxel.tilemap(0).pget(foot_x, head_y)

    if tile_foot in tiles_cle2 and vy >= 0:
        sur_cle2 = True
    elif tile_head in tiles_cle2 and vy < 0:
        sur_cle2 = True
    return y, vy, sur_cle2

def collision_cle3(x, y, vy, sur_cle3):
    foot_x = int((x + 0) // 8)
    foot_y = int((y + 0) // 8)
    head_y = int((y - 1) // 8)

    tile_foot = pyxel.tilemap(0).pget(foot_x, foot_y)
    tile_head = pyxel.tilemap(0).pget(foot_x, head_y)

    if tile_foot in tiles_cle3 and vy >= 0:
        sur_cle3 = True
    elif tile_head in tiles_cle3 and vy < 0:
        sur_cle3 = True
    return y, vy, sur_cle3

def collision_cle4(x, y, vy, sur_cle4):
    foot_x = int((x + 0) // 8)
    foot_y = int((y + 0) // 8)
    head_y = int((y - 1) // 8)

    tile_foot = pyxel.tilemap(0).pget(foot_x, foot_y)
    tile_head = pyxel.tilemap(0).pget(foot_x, head_y)

    if tile_foot in tiles_cle4 and vy >= 0:
        sur_cle4 = True
    elif tile_head in tiles_cle4 and vy < 0:
        sur_cle4 = True
    return y, vy, sur_cle4

def collision_pique_haut(x, y, vy):
    foot_x = int((x + 3) // 8)
    foot_y = int((y + 8) // 8)
    head_y = int((y - 1) // 8)

    tile_foot = pyxel.tilemap(0).pget(foot_x, foot_y)
    tile_head = pyxel.tilemap(0).pget(foot_x, head_y)

    if tile_foot in tiles_pique_haut and vy >= 0:
        y = foot_y * 8 - 8
        vy = 0
    elif tile_head in tiles_pique_haut and vy < 0:
        y = (head_y + 1) * 8
        vy = 0
    return y, vy
    
def collision_pique_mur_d(x, y, vy):
    foot_x = int((x + 3) // 8)
    foot_y = int((y + 8) // 8)
    head_y = int((y - 1) // 8)

    tile_foot = pyxel.tilemap(0).pget(foot_x, foot_y)
    tile_head = pyxel.tilemap(0).pget(foot_x, head_y)

    if tile_foot in tiles_pique_mur_d and vy >= 0:
        y = foot_y * 8 - 8
        vy = 0
    elif tile_head in tiles_pique_mur_d and vy < 0:
        y = (head_y + 1) * 8
        vy = 0
    return y, vy
    
def collision_pique_mur_g(x, y, vy):
    foot_x = int((x + 3) // 8)
    foot_y = int((y + 8) // 8)
    head_y = int((y - 1) // 8)

    tile_foot = pyxel.tilemap(0).pget(foot_x, foot_y)
    tile_head = pyxel.tilemap(0).pget(foot_x, head_y)

    if tile_foot in tiles_pique_mur_g and vy >= 0:
        y = foot_y * 8 - 8
        vy = 0
    elif tile_head in tiles_pique_mur_g and vy < 0:
        y = (head_y + 1) * 8
        vy = 0
    return y, vy 
    
def collision_pique_bas(x, y, vy):
    foot_x = int((x + 3) // 8)
    foot_y = int((y + 8) // 8)
    head_y = int((y - 1) // 8)

    tile_foot = pyxel.tilemap(0).pget(foot_x, foot_y)
    tile_head = pyxel.tilemap(0).pget(foot_x, head_y)

    if tile_foot in tiles_pique_bas and vy >= 0:
        y = foot_y * 8 - 8
        vy = 0
    elif tile_head in tiles_pique_bas and vy < 0:
        y = (head_y + 1) * 8
        vy = 0
    return y, vy

def collision_sol_precise(x, y, vy):
    foot_x = int((x + 3) // 8)
    foot_y = int((y + 8) // 8)
    tile = pyxel.tilemap(0).pget(foot_x, foot_y)

    if tile in tiles_sol and vy >= 0:
        y = foot_y * 8 - 8
        vy = 0
    return y, vy

def collision_sol_dur(x, y, vy):
    foot_x = int((x + 3) // 8)
    foot_y = int((y + 8) // 8)
    head_y = int((y - 1) // 8)

    tile_foot = pyxel.tilemap(0).pget(foot_x, foot_y)
    tile_head = pyxel.tilemap(0).pget(foot_x, head_y)

    if tile_foot in tiles_sol_dur and vy >= 0:
        y = foot_y * 8 - 8
        vy = 0
    elif tile_head in tiles_sol_dur and vy < 0:
        y = (head_y + 1) * 8
        vy = 0
    return y, vy

def direction_perso(u_player, v_player):
    if choix_ga == True:
        if pyxel.btn(pyxel.KEY_RIGHT) or pyxel.btn(pyxel.KEY_D):
            u_player = u_ga_d
            v_player = v_ga_d
        elif pyxel.btn(pyxel.KEY_LEFT) or pyxel.btn(pyxel.KEY_Q):
            u_player = u_ga_g
            v_player = v_ga_g
        else :
            u_player = u_ga
            v_player = v_ga
    if choix_fi == True:
        if pyxel.btn(pyxel.KEY_RIGHT) or pyxel.btn(pyxel.KEY_D):
            u_player = u_fi_d
            v_player = v_fi_d
        elif pyxel.btn(pyxel.KEY_LEFT) or pyxel.btn(pyxel.KEY_Q):
            u_player = u_fi_g
            v_player = v_fi_g
        else :
            u_player = u_fi
            v_player = v_fi
    return u_player, v_player
    
def cf_player(col_player):
    if choix_ga == True:
        col_player = col_ga
    elif choix_fi == True:
        col_player = col_fi
    return col_player
    
    
def point_depart(tm):
    if game_state == 2:
        tm = 0
    if game_state == 3:
        tm = 1
    return tm
    
def update_game():
    global player_x, player_y, player_u, player_v, velocity_y, on_ground, camera_x,camera_y, vie, u_vie, v_vie, choix_ga, col_ga, u_ga, v_ga, u_ga_g, u_ga_d, v_ga_g, v_ga_d, choix_fi, col_fi, u_fi, v_fi, u_fi_g, u_fi_d, v_fi_g, v_fi_d, u_player, v_player, col_player, sur_cle1, sur_cle2,sur_cle3, sur_cle4,tiles_porte,  tiles_mur, state, change1 ,change2, change3, change4, tiles_block1__id
    player_x, player_y = player_deplacement(player_x, player_y)
    player_y, velocity_y = collision_sol_precise(player_x, player_y, velocity_y)
    player_y, velocity_y = collision_sol_dur(player_x, player_y, velocity_y)
    player_y, velocity_y = collision_pique_haut(player_x, player_y, velocity_y)
    player_y, velocity_y = collision_pique_mur_d(player_x, player_y, velocity_y)
    player_y, velocity_y = collision_pique_mur_g(player_x, player_y, velocity_y)
    player_y, velocity_y = collision_pique_bas(player_x, player_y, velocity_y)
    player_y, velocity_y, sur_cle1, change1 = collision_cle1(player_x, player_y, velocity_y, sur_cle1, change1)
    player_y, velocity_y, sur_cle2 = collision_cle2(player_x, player_y, velocity_y, sur_cle2)
    player_y, velocity_y, sur_cle3 = collision_cle3(player_x, player_y, velocity_y, sur_cle3)
    player_y, velocity_y, sur_cle4 = collision_cle4(player_x, player_y, velocity_y, sur_cle4)
    
    on_ground = on_floor(player_x, player_y) and velocity_y == 0
    u_player, v_player = direction_perso(u_player, v_player)
    col_player = cf_player(col_player)
    u_vie, v_vie= prend_degat(u_vie, v_vie)
    game_state, choix_ga ,choix_fi = change_state(state, choix_ga ,choix_fi )
    
    if on_floor(player_x, player_y):
        on_ground = True 
        velocity_y = 0
        if pyxel.btnp(pyxel.KEY_SPACE) or pyxel.btn(pyxel.KEY_UP):
            velocity_y = jump_force
            on_ground = False
    elif est_plafond(player_x, player_y - 1) and  est_plafond(player_x +7, player_y -1):
        velocity_y = 2.5
    else:
        if velocity_y < 9:
            velocity_y += gravity
        else:
            velocity_y = 8
    player_y += velocity_y
  
    if under_pique_haut(player_x, player_y):
        velocity_y = 0
        if collision_pique_haut(player_x, player_y, velocity_y):
            velocity_y = jump_force
            vie = vie - 1
            player_y += velocity_y
   
    if d_pique_mur_d(player_x, player_y):
        if collision_pique_mur_d(player_x, player_y, velocity_y):
            velocity_x = 12
            vie = vie - 1
            player_x += velocity_x
 
    if g_pique_mur_g(player_x, player_y):
        if collision_pique_mur_g(player_x, player_y, velocity_y):
            velocity_x = -12
            vie = vie - 1
            player_x += velocity_x
            
    if on_pique_bas(player_x, player_y):
        velocity_y = 0
        if collision_pique_bas(player_x, player_y, velocity_y):
            velocity_y = -jump_force
            vie = vie - 1
            player_y += velocity_y

    if change1 == True :
        pyxel.images[0].set(16, 56, ["dddffddd", "dffffffd", "dddfdfdd", "ffdffdfd", "dfddffff", "dffdfddd", "ddfffdfd", "fddddffd",],)
        pyxel.images[0].set(96, 24, ["8874f788", "88ff4488", "884f4488", "84f44f08", "84ff4f08", "8444f408", "84f4f408", "844f4408"])
        pyxel.images[0].set(96, 32, ["84f4aa08", "8f449a08", "8f444408", "8444f408", "84f4f408", "84f44408", "84f4f408", "8f444f08"])
        change1 = False
    if sur_cle2 == True :
        pyxel.images[0].set(24, 56, ["dddbbddd", "dbbbbbbd", "dddbdbdd", "bbdbbdbd", "dbddbbbb", "dbbdbddd", "ddbbbdbd", "bddddbbd"])
        pyxel.images[0].set(104, 24, ["8874b788", "88bb4488", "884b4488", "84b44b08", "84bb4b08", "8444b408", "84b4b408", "844b4408"])
        pyxel.images[0].set(104, 32, ["84b4aa08", "8b449a08", "8b444408", "8444b408", "84b4b408", "84b44408", "84b4b408", "8b444b08"])
    if sur_cle3 == True :
        pyxel.images[0].set(16, 64, ["dddaaddd", "daaaaaad", "dddadadd", "aadaadad", "daddaaaa", "daadaddd", "ddaaadad", "addddaad"])
        pyxel.images[0].set(112, 24, ["8874a788", "88aa4488", "884a4488", "84a44f08", "84aa4f08", "8444a408", "84a4a408", "844a4408"])
        pyxel.images[0].set(112, 32, ["84a4aa08", "8a449a08", "8a444408", "8444a408", "84a4a408", "84a44408", "84a4a408", "8a444a08"])
    if sur_cle4 == True :
        pyxel.images[0].set(24, 64, ["ddd66ddd", "d666666d", "ddd6d6dd", "66d66d6d", "d6dd6666", "d66d6ddd", "dd666d6d", "6dddd66d"])
        pyxel.images[0].set(120, 24, ["88746788", "88664488", "88464488", "84644608", "84664608", "84446408", "84646408", "84464408"])
        pyxel.images[0].set(120, 32, ["8464aa08", "86449a08", "86444408", "84446408", "84646408", "84644408", "84646408", "86444608"])

    screen_width = 80
    screen_height = 80
    map_width = pyxel.tilemap(0).width * 8
    map_height = pyxel.tilemap(0).height * 8
    target_camera_x = int(player_x - screen_width // 2 + 4)
    target_camera_x = max(0, min(target_camera_x, map_width - screen_width))
    camera_x += (target_camera_x - camera_x) * 0.1
    margin = 32  
    top_limit = camera_y + margin
    bottom_limit = camera_y + screen_height - margin
    if player_y < top_limit:
        camera_y -= (top_limit - player_y) * 0.2
    elif player_y > bottom_limit:
        camera_y += (player_y - bottom_limit) * 0.2
    camera_y = max(0, min(camera_y, map_height - screen_height))
    camera_x += (target_camera_x - camera_x) * 0.2

    if pyxel.btnp(pyxel.KEY_ESCAPE):
        pyxel.quit()

def update_menu():
    pass

def draw_game():
    tilemap = point_depart(tm)
    pyxel.cls(6)
    pyxel.bltm(0, 0, tilemap, camera_x , camera_y , 2440, 2440, 5)
    pyxel.blt(player_x - camera_x, player_y - camera_y, 0, u_player, v_player, 8, 8, col_player)
    pyxel.blt(5, 70, 0, u_vie , v_vie, 7, 6 ,0)
    if sur_cle1 == True :
        pyxel.blt(15, 70, 0, 32, 56, 8, 8, 1, 0, 0.7)
    if sur_cle2 == True :
        pyxel.blt(23, 70, 0, 40, 56, 8, 8, 1, 0, 0.7)
    if sur_cle3 == True :
        pyxel.blt(31, 70, 0, 32, 64, 8, 8, 1, 0, 0.7)
    if sur_cle4 == True :
        pyxel.blt(39, 70, 0, 40, 64, 8, 8, 1, 0, 0.7)
    
def draw_menu_jouer():
    pyxel.cls(0)
    pyxel.bltm(0, 0, 1, 0, 0, 80, 80)
    
def draw_menu_c():
    pyxel.cls(0)
    pyxel.bltm(0, 0, tm, 0, 80, 80, 80)
    pyxel.text(26,1,"choisie",7)
    pyxel.text(12, 8,  "ton personnage", 7)
    pyxel.text(18, 58,  "clique droit", 7)
    pyxel.text(7, 64,  "pour selectionner", 7)
    
def draw_fin():
    pyxel.cls(0)
    pyxel.bltm(0, 0, tm, 0, 160, 80, 80)
    pyxel.text(22,5,"bravos tu",7)
    pyxel.text(9 , 12,  "les a rassemblee", 7)

    
def update_fin():
    pass

def update():
    global game_state, choix_ga, choix_fi

    if game_state == 0:
        pass
    elif game_state == 1:
        update_menu()
    elif game_state == 2:
        point_depart(tm)
        update_game()
    elif game_state == 3:
        update_fin()
        point_depart(tm)

    game_state, choix_ga, choix_fi = change_state(game_state, choix_ga, choix_fi)
    
def draw():
    
    if game_state == 0:
        pyxel.mouse(True)
        draw_menu_jouer()
    elif game_state == 1:
        draw_menu_c()
    elif game_state == 2:
        draw_game()
        pyxel.mouse(False)
    elif game_state == 3:
        draw_fin()
        pyxel.mouse(True)
    
pyxel.run(update, draw)