================================
Terminale NSI - Projet Rush Hour
================================

Description des fichiers
========================

* Le dossier ``src`` contient l'ensemble des fichiers python.
* Le dossier ``doc`` contient l'ensemble de la documentation généré avec Sphinx.
* Le dossier ``diagramme`` contient le diagramme de classes du projet : diagramme.svg_
* Le dossier ``sujet`` contient l'ensemble de documents concernant sujet. Le sujet pour les élèves est : sujet.rst_

  .. _sujet.rst: sujet/sujet.rst

  .. _diagramme.svg: diagramme/classe.svg

La documentation
================
Au vu de la difficulté du projet, les élèves auront à leur disposition la documentation complète du projet.
Cette documentation a été générée avec *Sphinx* et permet aux élèves d'avoir des infos sur les paramètres et les valeurs de retour de chaque méthode.

De plus, ils ont à leur disposition le diagramme des classes qui leur permet d'avoir une vue d'ensemble du projet.

.. image:: sujet/img/doc.jpg

Par la suite, je compte utiliser de plus en plus *sphinx* qui permet la création automatisée de la documentation.
Sphinx utilise la syntaxe du *reStructuredText* qui est proche du Markdown.

Objectifs du projet
===================
* Écrire un programme python permettant la résolution d'un problème du jeu Rush-Hour
* Travailler avec des structures de données complexes
* Comprendre l'intérêt des arbres et du parcours en largeur pour résoudre ce type de problème
* Savoir utiliser une documentation technique
* Utiliser la programmation module
Plus généralement, ce TP s'adresse aux élèves en fin de Terminale.

Pour simplifier la prise en main du projet, une première étape pourrait être de coder le jeu pour jouer individuellement au Rush-Hour.

Pré-requis
==========
Ce TP guidé permet aux élèves de construire le projet Rush-Hour étapes par étapes. Les notions suivantes sont des pré-requis indispensables pour réaliser le projet :

* Les bases de la programmation sous python.
* Les notions de programmation orientée objet.
* La manipulation de la structure File.
* La manipulation de la structure Arbre.
* La notion de parcours en largeur d'un arbre.

Classes et énumérations
=======================
Pour simplifier le projet, les élèves auront à leur disposition 2 classes :

* La classe Arbre
* La classe File

L'utilisation des énumérations n'est pas au programme mais montre de
nouvelles fonctionnalités de python. Elles sont mises à disposition
avec une explication et des exemples. Les élèves font le choix ou non
de les utiliser.
