CV

Projets / Programmation, 1ère et 2ème années

Programmation, 1ère et 2ème années

2023 à 2025Projets de cursus ESTACA, 1ère et 2ème années, C, C++ et PythonLogiciel
Projet de cursus

Ce sont les vrais programmes console, enregistrés étape par étape. Chaque saisie se tape toute seule, puis Entrée affiche l'écran suivant. Textes de la console d'origine, en français.

01

Jeu de cartes LineIt

1ère année, C, binôme

Un jeu de cartes pour 2 à 5 joueurs, dans la console. Chaque joueur construit une ligne de cartes qui monte ou qui descend. Le plateau est dessiné en couleurs, et les 106 cartes reposent sur un type structuré.

Un tour en cours, marché, main et jackpot

Version interactive sur ordinateur.

Vraie partie, avec un mélange fixé, sur deux manches.
02

Gestionnaire de covoiturage

2ème année, C++, projet individuel

Une application console dans l'esprit de BlaBlaCar, construite sur deux classes, voyageur et trajet. Elle inscrit des voyageurs sur des trajets, crée, modifie et supprime trajets et utilisateurs, et filtre les trajets par prix ou par date.

Trajets filtrés par prix

Version interactive sur ordinateur.

Un voyageur inscrit sur un trajet, puis les trajets filtrés par prix.
03

Gestionnaire de boutique en ligne

2ème année, C++, projet individuel

La gestion d'une boutique, construite sur une hiérarchie de classes. Personne est la classe de base, client et employé en héritent, et gérant hérite d'employé. Chaque rôle a ses propres menus. Les gérants changent les stocks, ajoutent produits et clients, et consultent les scores des employés.

Interface du gérant, après authentification par code

Version interactive sur ordinateur.

Connexion d'un gérant, un changement de stock, puis le score d'un employé.
04

Robot qui résout un labyrinthe

2ème année, Python, équipe de 3, LEGO Spike

Le robot suit un ruban noir collé sur un sol blanc. Des pastilles de couleur balisent le labyrinthe, bleu pour une intersection, rouge pour une impasse, jaune pour le trésor. Il explore en profondeur. À chaque intersection, il essaie à droite, puis tout droit, puis à gauche, et il fait demi-tour dans les impasses. Chaque intersection devient un nœud, placé grâce à l'odométrie des roues. Une fois le trésor trouvé, Dijkstra sur les nœuds découverts donne le plus court chemin du retour.

Le robot n'était disponible qu'en séance de TP. Entre deux séances, l'équipe testait son code sur le simulateur GearsBot.

Départ

def exploration(robot, noeuds):    while not robot.tresor:        robot.suivre_ligne()         # jusqu'à une pastille        couleur = robot.capteur.couleur()        if couleur == ROUGE:         # impasse            robot.demi_tour()            robot.dernier_noeud.marquer(IMPASSE)        elif couleur == BLEU:        # intersection            noeud_bleu(robot, noeuds)        elif couleur == JAUNE:       # trésor            tresor = noeuds.ajouter(robot.position)            relier(robot.dernier_noeud, tresor)            robot.tresor = True            robot.demi_tour() def noeud_bleu(robot, noeuds):    noeud = noeuds.proche(robot.position)  # odométrie    if noeud is None:        noeud = noeuds.ajouter(robot.position)        noeud.lire_chemins()         # lignes vues    elif robot.nouvelle_ligne:       # boucle fermée        relier(robot.dernier_noeud, noeud)        robot.demi_tour()        return    relier(robot.dernier_noeud, noeud)  # voisins    robot.dernier_noeud = noeud    for virage in (DROITE, TOUT_DROIT, GAUCHE):        if noeud.chemins[robot.orientation + virage] == DETECTE:            robot.tourner(virage)            return    robot.tourner_vers(noeud.parent)  # retour arrière def dijkstra(noeud):    noeuds_verifies.append(noeud)    for voisin in noeud.voisins:        d = noeud.distance + distance(noeud, voisin)        if voisin.distance > d:            voisin.distance = d            dictio_noeuds[voisin] = noeud            noeuds_atteints.append(voisin)    n = plus_proche(noeuds_atteints, hors noeuds_verifies)    if n:        dijkstra(n) def retour(robot, depart, tresor):    tresor.distance = 0    dijkstra(tresor)    chemin = tracer_chemin(depart)   # inversé    for noeud in chemin[1:]:        robot.tourner_vers(noeud)        robot.suivre_ligne()
Labyrinthe d'exemple dessiné pour cette page. Pseudo-code écrit d'après le programme Python de l'équipe et son compte rendu, sans le détail des moteurs et du capteur.
Labyrinthe de test du compte rendu de l'équipe. En vert, le plus court chemin du trésor jusqu'à l'entrée.