import pyxel

voiture = [100, 100, 0, 0, 5, 4 ] #[x, y, v, a, vmax, rayon]

def update():
    global L, H
    # déplacement de la voiture
    voiture[0] += voiture[2]*pyxel.cos(voiture[3])
    voiture[1] += voiture[2]*pyxel.sin(voiture[3])
    
    # gestion des touches
    if pyxel.btn(pyxel.KEY_SPACE): # accélération
        voiture[2] += 0.1
    if pyxel.btn(pyxel.KEY_LEFT): # tourne à gauche
        voiture[3] -= 5
    if pyxel.btn(pyxel.KEY_RIGHT): # tourne à droite
        voiture[3] += 5
    if pyxel.btn(pyxel.KEY_W): # freine
        voiture[2] -= 0.2
    
    # vitesse limite
    if voiture[2] > voiture[4]:
        voiture[2] = voiture[4]
        
    # rebond bordure verticale
    if voiture[0] < voiture[5] :
        voiture[3] = 180 - voiture[3]
        voiture[0] = voiture[5]
        
    if voiture[0] > L - voiture[5] :
        voiture[3] = 180 - voiture[3]
        voiture[0] = L - voiture[5]
        
    # rebond bordure horizontale
    if voiture[1] < voiture[5] :
        voiture[3] =  - voiture[3]
        voiture[1] = voiture[5]
        
    if voiture[1] > H - voiture[5] :
        voiture[3] =  - voiture[3]
        voiture[1] = H - voiture[5]
    
    return

def draw():
    global L, H
    pyxel.cls(0) # on efface l'écran
    pyxel.circ(voiture[0], voiture[1], 4, 8) #on dessine le corps de la voiture
    # la ligne ci-dessous permet de visualiser la direction et la vitesse de la voiture
    pyxel.line(voiture[0], voiture[1], voiture[0] + 5 * voiture[2]*pyxel.cos(voiture[3]), voiture[1] + 5 * voiture[2]*pyxel.sin(voiture[3]), 7)
    return

L, H = 320, 240
pyxel.init(L, H)
pyxel.run(update, draw)