<file_sep>﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Xml;
using System.Xml.Serialization;


namespace FormPartie1
{
    static class Program
    {
        /// <summary>
        /// Point d'entrée principal de l'application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            /*Question q = new Question("titre", "rep1", "rep2");

            XmlSerializer xs = new XmlSerializer(typeof(Question));
            using (StreamWriter wr = new StreamWriter("question.xml"))
            {
                xs.Serialize(wr, q);
            }*/
            
            //liste des questions et leurs réponses associées
            List<Question> questions = new List<Question>();
            questions.Add(new Question("Enoncé 1", " ", " "));
            questions.Add(new Question("Enoncé 2", " ", " " ));
            
            //pour la sérialisation
            StreamWriter writer = new StreamWriter("questions.xml");
            new XmlSerializer(typeof(List<Question>)).Serialize(writer, questions);
            writer.Close();


            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
    }
}
<file_sep>﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Partie_1
{
    public class Reponse
    {
        public string Rep { get; set; }
        public Reponse() { }
        public override string ToString()
        {
            return Rep.ToString();
        }
    }

}
<file_sep>﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

namespace Partie_1
{
    static class Program
    {
        /// <summary>
        /// Point d'entrée principal de l'application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            //créer des listes vide
            List<Question> listeQuestions = new List<Question>(); 
            List<Reponse> listeReponses = new List<Reponse>();
            List<BonneReponse> listeBonne = new List<BonneReponse>();

           //    listeQuestions.Add(new Question() { Intitule = "bla" });
           //    listeQuestions.Add(new Question() { Intitule = "Première question" }); //ajoute un élément dans la liste
           //    listeQuestions.Add(new Question() { Intitule = "Seconde question" });
            //   listeReponses.Add(new Reponse() { Rep = "" });
            //   listeReponses.Add(new Reponse() { Rep = "Bonne réponse question 1" });
            //   listeReponses.Add(new Reponse() { Rep = "réponse 2" }); 
            //   listeBonne.Add(new BonneReponse() { BonneRep = "" });
            //   listeBonne.Add(new BonneReponse() { BonneRep = "Bonne réponse question 1" });

            //permet de vérifier si la listeQuestion fonctionne
            /* foreach (Question q in listeQuestions)
                Console.WriteLine(q); 
            */

            //pour la sérialisation
           /* StreamWriter writerQuestion = new StreamWriter("questions.xml"); //créer un fichier xml
            new XmlSerializer(typeof(List<Question>)).Serialize(writerQuestion, listeQuestions); //entre la liste des questions dans le fichier xml
            writerQuestion.Close(); //arrête d'écrire dans le fichier xml

            StreamWriter writerReponse = new StreamWriter("reponses.xml");
            new XmlSerializer(typeof(List<Reponse>)).Serialize(writerReponse, listeReponses);
            writerReponse.Close();

            StreamWriter writerBonne = new StreamWriter("bonneReponses.xml"); 
            new XmlSerializer(typeof(List<BonneReponse>)).Serialize(writerBonne, listeBonne); 
            writerBonne.Close(); 
            */

            //pour la désérialisation 
            XmlSerializer xs = new XmlSerializer(typeof(List<Question>));
            using (Stream ins = File.Open("questions.xml", FileMode.Open))
                foreach (Question o in (List<Question>)xs.Deserialize(ins))
                    listeQuestions.Add(o);

            XmlSerializer xsRep = new XmlSerializer(typeof(List<Reponse>));
            using (Stream insRep = File.Open("reponses.xml", FileMode.Open))
                foreach (Reponse r in (List<Reponse>)xsRep.Deserialize(insRep))
                    listeReponses.Add(r);

            XmlSerializer xsBonne = new XmlSerializer(typeof(List<BonneReponse>));
            using (Stream insBonne = File.Open("bonneReponses.xml", FileMode.Open))
                foreach (BonneReponse b in (List<BonneReponse>)xsBonne.Deserialize(insBonne))
                    listeBonne.Add(b);

            //permet de vérifier que la désérialisation fonctionne
            /*
             foreach (Question q in listeQuestions)
                 Console.WriteLine(q);
            */

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1(listeQuestions, listeReponses, listeBonne));
        }
    }
}
<file_sep>﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace FormPartie1
{
    static class Program
    {
        /// <summary>
        /// Point d'entrée principal de l'application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Question qu = new Question("titre", "rep1", "rep2", "rep3", "rep4", "rep5", "rep6");
            qu.SerializeQuestion(); 
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new FPartie1());
        }
    }
}
<file_sep>﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace FormPartie1
{
    public partial class FPartie1 : Form
    {
        public static int compteurQ = 1;
        public static int cptPage = 1;

        public FPartie1()
        {
            InitializeComponent();
        }
        
        
        private void EcritureQuestion()
        {
            string name = "LQuestion" + compteurQ.ToString();

            this.LQuestion1.Text = name;

            compteurQ++;
        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void radioButton3_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void BSuivant_Click(object sender, EventArgs e)
        {
            cptPage++;
            //mettre les questions suivantes
            if (cptPage == 7)
            {
                this.BSuivant.Text = "Terminer";
            }

        }
    }
}
<file_sep>﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

namespace FormPartie1
{
    class Question
    {
        private static int compteur;
        private int id;
        private string intitule;
        private string rep1;
        private string rep2;
        private string rep3;
        private string rep4;
        private string rep5;
        private string rep6;
        public static StreamWriter wr = new StreamWriter("questions.xml");
        public static StreamReader re = new StreamReader("questions.xml");
        public static XmlSerializer xs = new XmlSerializer(typeof(Question));



        public Question(string intitule, string rep1, string rep2, string rep3,string rep4, string rep5, string rep6)
        {
            compteur++;
            this.id=compteur;
            this.intitule = intitule;
            this.rep1 = rep1;
            this.rep2 = rep2;
            this.rep3 = rep3;
            this.rep4 = rep4;
            this.rep5 = rep5;
            this.rep6 = rep6;            
        }

        public void SerializeQuestion()
        {            
            using (wr)
            {
                xs.Serialize(wr, this);
            }
        }
        public void DeserializeQuestion()
        {
            
            using (re)
            {
                Question q = xs.Deserialize(re) as Question ;
            }
        }
        public void choixQuestion()
        {
            Random r = new Random();
            int n = r.Next(compteur);

        }
    }
}
<file_sep>﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Pluscourtchemin
{
    public partial class Choix : Form
    {
        public Choix()
        {
            InitializeComponent();
        }

        private void buttonQuestionsCours_Click(object sender, EventArgs e)
        {
            Application.Run(new Dijkstra());
        }

        private void buttonAlgoDijkstra_Click(object sender, EventArgs e)
        {
            Application.Run(new Arbre());
        }
    }
}
<file_sep>﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Windows.Forms;

namespace Pluscourtchemin
{
    public class SearchTreeALaMain : SearchTree
    {
        private TreeView arbre = new TreeView();
        private Button Verification;          
        private void AjouterNoeudOuvert(GenericNode N2)
        {
            L_Ouverts.Add(N2);
        }
        private void EnleverNoeudOuvert(GenericNode N2)
        {
            L_Ouverts.Remove(N2);
        }
        private void AjouterNoeudFerme(GenericNode N2)
        {
            L_Fermes.Add(N2);
        }
        private void verificationOuverts(SearchTree s)
        {
            foreach (GenericNode noeud in s.L_Ouverts)
            {

            }
        }
        private void verificationFermes(SearchTree s)
        {
            foreach (GenericNode noeud in s.L_Fermes)
            {

            }
        }
        private List<TreeNode> GetNoeuds (TreeView a)
        {
            List<TreeNode> noeuds = new List<TreeNode>();
            for (int i=0;i < a.GetNodeCount(true); i++)
            {
                noeuds.Add(a.GetNodeAt(i,i));
            }
            return noeuds;
        }
        private void ajouterNoeudSurArbre(TreeNode noeud, TreeNode noeudPere)
        {
            arbre.BeginUpdate();
            foreach (TreeNode n in this.GetNoeuds(arbre))
            {

            }
            arbre.EndUpdate();
        }
          
    }
}
<file_sep>﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

namespace FormPartie1
{
    public class Question
    {
        private static int compteur;
        private int id { get; set; }
        public string intitule { get; set; }
        public string rep1 { get; set; }
        public string rep2 { get; set; }

        public Question() { }
        public Question(string intitule, string rep1, string rep2)
        {
            compteur++;
            this.id=compteur;
            this.intitule = intitule;
            this.rep1 = rep1;
            this.rep2 = rep2;        
        }

        public void choixQuestion()
        {
            Random r = new Random();
            int n = r.Next(compteur);
        }
    }
}
<file_sep>﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace FormPartie1
{
    public partial class MainForm : Form
    {
        private List<Question> _questions;
        public MainForm()
        {
            InitializeComponent();
            _questions = new List<Question>();
            _questions.Add(new Question("Q1", "Matt", "Québec"));
        }
        private void btn_commencer_Click(object sender, EventArgs e)
        {
            QuestionForm f2 = new QuestionForm(_questions);
            f2.Show();
        }

    }
}
<file_sep>﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Pluscourtchemin
{
    public partial class Arbre : Form
    {
        TreeView a = new TreeView();
        public Arbre()
        {
            InitializeComponent();
        }

        private void button7_Click(object sender, EventArgs e) //bouton pour ajouter un noeud
        {

        }

        private void button8_Click(object sender, EventArgs e) //bouton pour vérification
        {

        }
    }
}
<file_sep>﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Partie_1
{
    public partial class Form1 : Form
    {
        private List<Question> _questions;
        private List<Reponse> _reponses;
        private List<BonneReponse> _bonnes;
        private int points;
      //  public bool Checked { get; set; }
        public Form1() { }
        public Form1(List<Question> questions, List<Reponse> reponses, List<BonneReponse> bonnes)
        {
            InitializeComponent();
            _questions = questions;
            _reponses = reponses;
            _bonnes = bonnes;
            //tbQuestion.Text = "Bienvenue sur votre test d'IA !!";     
        }

        private void groupBox1_Load(object sender, EventArgs e)
        {

        }
        private void Btn_Click(object sender, EventArgs e)
        {
           /* foreach (Question q in _questions)
            {*/
            for(int i=0; i<6; i++)
            { 
                tbQuestion.Text = _questions[i].ToString();
                for(int j=0; j<8; j=j+4)
                {
                    rbRep1.Text = _reponses[j].ToString();
                    rbRep2.Text = _reponses[j+1].ToString();
                    rbRep3.Text = _reponses[j+2].ToString();
                    rbRep4.Text = _reponses[j+3].ToString();
                }
            }
          //  tbQuestion.Text = _questions[1].ToString();
          //  rbRep1.Text = _reponses[1].ToString();
          //  rbRep2.Text = _reponses[2].ToString();
          //  rbRep3.Text = _reponses[3].ToString();
          //  rbRep4.Text = _reponses[4].ToString();
        }
        private void BtnVerifier_Click(object sender, EventArgs e)
        {
            string repFinale = (rbRep1.Checked) ? rbRep1.Text : rbRep2.Text;
            if (repFinale == _bonnes[0].ToString())
            {
                MessageBox.Show("Bonne réponse ! ");
                points++;
            }
            
        }

   
        /*  private void rbRep1_CheckedChanged(object sender, EventArgs e)
 {
     // Executed when any radio button is changed.
     // ... It is wired up to every single radio button.
     // Search for first radio button in GroupBox.
     string result1 = null;
     foreach (Control control in this.groupBox1.Controls)
     {
         if (control is RadioButton)
         {
             RadioButton radio = control as RadioButton;
             if (radio.Checked)
             {
                 result1 = radio.Text;
             }
         }
     }
     this.Text = result1;
 }*/
    }
}
<file_sep>﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Partie_1
{
    public class BonneReponse
    {
        public string BonneRep { get; set; }
        public BonneReponse() { }
        public override string ToString()
        {
            return BonneRep.ToString();
        }
    }
}
<file_sep># ProjetIA
Ceci est le projet de <NAME>, <NAME> et <NAME> dans le module d'intelligence artificielle de 2A.
<file_sep>﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;


namespace Pluscourtchemin
{
    public partial class Dijkstra : Form
    {
        static public double[,] matrice;
        static public int nbnodes = 10;
        static public int numinitial;
        static public int numfinal;
        static public SearchTreeALaMain m = new SearchTreeALaMain();
        static public SearchTree g = new SearchTree();
        static private int compteurCorrectsNodes;
        static private int compteurCorrectsNodesObjectif;
        static private bool check;
        static private List<string> fermesMain = new List<string>();
        static private List<string> ouvertsMain = new List<string>();
        public Dijkstra()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            matrice = new double[nbnodes, nbnodes];
            for (int i = 0; i < nbnodes; i++)
                for (int j = 0; j < nbnodes; j++)
                    matrice[i, j] = -1;

            matrice[0, 1] = 3; matrice[1, 0] = 3;
            matrice[0, 2] = 5; matrice[2, 0] = 5;
            matrice[0, 3] = 7; matrice[3, 0] = 7;
            matrice[1, 4] = 8; matrice[4, 1] = 8;
            matrice[2, 4] = 3; matrice[4, 2] = 3;
            matrice[4, 5] = 7; matrice[5, 4] = 7;
            matrice[5, 6] = 4; matrice[6, 5] = 4;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            numinitial = Convert.ToInt32(textBox1.Text);
            numfinal = Convert.ToInt32(textBox2.Text);
            SearchTree g = new SearchTree();
            Node2 N0 = new Node2();
            N0.numero = numinitial;
            List<GenericNode> solution = g.RechercheSolutionAEtoile(N0);

            Node2 N1 = N0;
            for (int i = 1; i < solution.Count; i++)
            {
                Node2 N2 = (Node2)solution[i];
                listBox1.Items.Add(Convert.ToString(N1.numero)
                     + "--->" + Convert.ToString(N2.numero)
                     + "   : " + Convert.ToString(matrice[N1.numero, N2.numero]));
                N1 = N2;
            }

            g.GetSearchTree(treeView1);

        }
        private void button3_Click(object sender, EventArgs e)
        {

            StreamReader monStreamReader = new StreamReader("graphe1.txt");

            // Lecture du fichier avec un while, évidemment !
            // 1ère ligne : "nombre de noeuds du graphe
            string ligne = monStreamReader.ReadLine();
            int i = 0;
            while (ligne[i] != ':') i++;
            string strnbnoeuds = "";
            i++; // On dépasse le ":"
            while (ligne[i] == ' ') i++; // on saute les blancs éventuels
            while (i < ligne.Length) { strnbnoeuds = strnbnoeuds + ligne[i];
                i++;
            }
            nbnodes = Convert.ToInt32(strnbnoeuds);

            matrice = new double[nbnodes, nbnodes];
            for (i = 0; i < nbnodes; i++)
                for (int j = 0; j < nbnodes; j++)
                    matrice[i, j] = -1;

            // Ensuite on a ls tructure suivante : 
            //  arc : n°noeud départ    n°noeud arrivée  valeur
            //  exemple 4 : 
            ligne = monStreamReader.ReadLine();
            while (ligne != null)
            {
                i = 0;
                while (ligne[i] != ':') i++;
                i++; // on passe le :
                while (ligne[i] == ' ') i++; // on saute les blancs éventuels
                string strN1 = "";
                while (ligne[i] != ' ')
                {
                    strN1 = strN1 + ligne[i];
                    i++;
                }
                int N1 = Convert.ToInt32(strN1);

                // On saute les blancs éventuels
                while (ligne[i] == ' ') i++;
                string strN2 = "";
                while (ligne[i] != ' ')
                {
                    strN2 = strN2 + ligne[i];
                    i++;
                }
                int N2 = Convert.ToInt32(strN2);

                // On saute les blancs éventuels
                while (ligne[i] == ' ') i++;
                string strVal = "";
                while ((i < ligne.Length) && (ligne[i] != ' '))
                {
                    strVal = strVal + ligne[i];
                    i++;
                }
                double val = Convert.ToDouble(strVal);

                matrice[N1, N2] = val;
                matrice[N2, N1] = val;
                listBoxgraphe.Items.Add(Convert.ToString(N1)
                   + "--->" + Convert.ToString(N2)
                   + "   : " + Convert.ToString(matrice[N1, N2]));

                ligne = monStreamReader.ReadLine();
            }
            // Fermeture du StreamReader (obligatoire) 
            monStreamReader.Close();
        }
        //fonction qui transforme une liste de noeuds en liste de string
        private List<string> transfoListesNoeudsEnChar(List<GenericNode> liste)
        {
            List<string> transfo = new List<string>();
            for (int i = 0; i < liste.Count; i++)
            {
                transfo[i] = liste[i].ToString();
            }
            return transfo;
        }
        //bouton qui valide l'envoi des ouverts (verifie que l'utiliateur ne rentre pas n'importe quoi (a corrriger)
        private void button4_Click(object sender, EventArgs e)
        {
            /* try
             {
                 char ferme = Convert.ToChar(textBox3);                           
                 textBox3.Text = "";

             }
             catch
             {
                 MessageBox.Show("Entrez quelque chose de correct svp");
                 textBox3.Text = "";
             }
             */


            
        }


            //bouton qui valide l'envoi des ouverts (verifie que l'utiliateur ne rentre pas n'importe quoi (a corriger)
        private void button5_Click(object sender, EventArgs e) 
        {
            try
            {
                char ferme = Convert.ToChar(textBox3);
                textBox3.Text = "";
                
            }
            catch
            {
                MessageBox.Show("Entrez quelque chose de correct svp");
                textBox4.Text = "";
            }
        }


        //bouton pour enlever un noeud
        private void button7_Click(object sender, EventArgs e)
        {
            treeView2.SelectedNode.Remove();
        }
        //bouton qui change le texte d'un noeud
        private void buttonEdition_Click(object sender, EventArgs e)
        {
            treeView2.SelectedNode.Text = textboxNoeudAjoute.Text;
        }

        //bouton qui lance la comparaison des deux arbres
        private void buttonVerif_Click(object sender, EventArgs e)
        {
            CheckRecursive();
            if((compteurCorrectsNodes == compteurCorrectsNodesObjectif) && (compteurCorrectsNodes != 0))
            {
                MessageBox.Show("Bien joué!");
            }
        }
        
        //Fonction qui sert à comparer les deux arbres
        private void CheckRecursive()
        {
            TreeNodeCollection nodes = treeView1.Nodes;
            TreeNodeCollection nodesToCheck = treeView2.Nodes;
            if(treeView1.GetNodeCount(false) != treeView2.GetNodeCount(false))
            {
                MessageBox.Show("Erreur");
            }
            else
            {
                for (int i = 0; i < nodes.Count; i++)
                {
                    SubRecursive(nodes[i], nodesToCheck[i]);
                }
            }
            
        }

        /* Appelée par CheckRecursive */
        private void SubRecursive(TreeNode treeNodeAlgo, TreeNode treeNodeToCheck)
        {
            if (treeNodeAlgo.Text == treeNodeToCheck.Text) { compteurCorrectsNodes++; }
            compteurCorrectsNodesObjectif++;

            if (treeNodeAlgo.Nodes.Count== treeNodeToCheck.Nodes.Count)
            {
                for (int j = 0; j < treeNodeAlgo.Nodes.Count; j++)
                {
                    SubRecursive(treeNodeAlgo.Nodes[j], treeNodeToCheck.Nodes[j]);
                }
            }
            else
            {
                MessageBox.Show("Aie, je crois que tu t'es trompé3..");
            }
            
        }
        //ajouter un noeud à l'arbre
        private void button9_Click(object sender, EventArgs e)
        {
            TreeNode node = new TreeNode(textboxNoeudAjoute.Text);
            treeView2.Nodes.Add(node);
        }
        //ajouter un noeud fils à un noeud
        private void button10_Click(object sender, EventArgs e)
        {
            string a = comboBox1.SelectedItem.ToString();
            TreeNode node = new TreeNode(a);

            if (a !="") {treeView2.SelectedNode.Nodes.Add(node); }
            else {treeView2.Nodes.Add("nouveau noeud");}
            
        }

        private void textBox3_TextChanged(object sender, EventArgs e) //text box où on rentre les fermés 
        {
            //permet de tester que la saisie soit bien un caractère alphabétique (les espaces et les virgules sont autorisés) 
            string text = textBox3.Text;
            
            for (int i = 0; i < text.Length; i++)
            {
                if ((!char.IsLetter(text[i])) && (text[i] != ',') && (text[i] != ' '))
                {
                    MessageBox.Show("Entrez quelque chose de correcte svp");

                    Console.Beep();
                    break;
                }
                else
                {
                    MessageBox.Show("Prêt");
                }
            }

        }

        private void textBox4_TextChanged(object sender, EventArgs e) //text box où on rentre les ouverts
        {
            //permet de tester que la saisie soit bien un caractère alphabétique (les espaces et les virgules sont autorisés) 
            string text = textBox4.Text;

            for (int i = 0; i < text.Length; i++)
            {
                if ((!char.IsLetter(text[i])) && (text[i] != ',') && (text[i] != ' '))
                {
                    MessageBox.Show("Entrez quelque chose de correcte svp");

                    Console.Beep();
                    break;
                }
                else
                {
                    MessageBox.Show("Prêt");
                }
            }

        }
        //bouton qui sert à lancer la comparaison
        private void button6_Click(object sender, EventArgs e)
        {
            //On remplit la liste de fermés
            string s = textBox3.Text;            
            string[] noeuds = s.Split(',');
            foreach (string noeud in noeuds)
            {
                fermesMain.Add(noeud);
            }
            /*//On remplit la liste de fermés
            string s = textBox3.Text;
            string[] noeuds = s.Split(',');
            foreach (string noeud in noeuds)
            {
                fermesMain.Add(noeud);
            }*/

            //On remplit la liste des ouverts
            string t = textBox4.Text;
            string[] noeudsO = t.Split(',');
            foreach (string noeudO in noeudsO)
            {
                ouvertsMain.Add(noeudO);
            }

            Compare();

        }

        private void Compare()  //Méthode de comparaison des listes des ouverts et fermes saisies et existantes entre elles 
        {
            //comparaison de la liste des fermes existants avec la liste des fermes saisis 
            for (int i=0; i < g.L_Fermes.Count;i++)
            {
                if(g.L_Fermes[i].ToString() == fermesMain[i])
                {
                    MessageBox.Show("Ok");
                }
                i++;

            }

            //comparaison de la liste des ouverts existants avec la liste des ouverts saisis
            for (int j = 0; j < g.L_Ouverts.Count; j++)
            {
                if(g.L_Ouverts[j].ToString() == ouvertsMain[j])
                {
                    MessageBox.Show("Pas OK");
                }
            }
       
        }

     

        //boucle qui parcourt les deux listes et test pour correspondance
    }
}
<file_sep>﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

namespace Test
{
    static class Program
    {
        /// <summary>
        /// Point d'entrée principal de l'application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            List<Question> listeQuestions = new List<Question>(); //créer une liste de question vide
            listeQuestions.Add(new Question() { Intitule = "Première question" }); //ajoute un élément dans la liste
            //permet de vérifier si la listeQuestion fonctionne
            /* foreach (Question q in listeQuestions)
                Console.WriteLine(q); 
            */
            //pour la sérialisation
           /* StreamWriter writer = new StreamWriter("questions.xml"); //créer un fichier xml
            new XmlSerializer(typeof(List<Question>)).Serialize(writer, listeQuestions); //entre la liste des questions dans le fichier xml
            writer.Close(); //arrête d'écrire dans le fichier xml
            */
            //pour la désérialisation 
            XmlSerializer xs = new XmlSerializer(typeof(List<Question>));
            using (Stream ins = File.Open("questions.xml", FileMode.Open))
            foreach (Question o in (List<Question>)xs.Deserialize(ins))
                  listeQuestions.Add(o);
            //permet de vérifier que la désérialisation fonctionne
            /*
             foreach (Question q in listeQuestions)
                 Console.WriteLine(q);
            */

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1(listeQuestions));

        }
    }
}
<file_sep>﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;


namespace Pluscourtchemin
{
    public partial class Dijkstra : Form
    {
        static public double[,] matrice;
        static public int nbnodes = 10;
        static public int numinitial;
        static public int numfinal;
        static public SearchTree g = new SearchTree();
        static private int compteurCorrectsNodes;
        static private int compteurCorrectsNodesObjectif;
        
        static private int compteurEtapes = 1;
        
        public Dijkstra()
        {
            InitializeComponent();
            Initialisation();
        }

        
        private void Initialisation()
        {
            matrice = new double[nbnodes, nbnodes];
            for (int i = 0; i < nbnodes; i++)
                for (int j = 0; j < nbnodes; j++)
                    matrice[i, j] = -1;

            matrice[0, 1] = 3; matrice[1, 0] = 3;
            matrice[0, 2] = 5; matrice[2, 0] = 5;
            matrice[0, 3] = 7; matrice[3, 0] = 7;
            matrice[1, 4] = 8; matrice[4, 1] = 8;
            matrice[2, 4] = 3; matrice[4, 2] = 3;
            matrice[4, 5] = 7; matrice[5, 4] = 7;
            matrice[5, 6] = 4; matrice[6, 5] = 4;

            numinitial = Convert.ToInt32(textBox1.Text);
            numfinal = Convert.ToInt32(textBox2.Text);
            Node2 N0 = new Node2();
            N0.numero = numinitial;

            List<GenericNode> solution = g.RechercheSolutionAEtoile(N0);

            Node2 N1 = N0;
            //affichage
            for (int i = 1; i < solution.Count; i++)
            {
                Node2 N2 = (Node2)solution[i];
                listBox1.Items.Add(Convert.ToString(N1.numero)
                     + "--->" + Convert.ToString(N2.numero)
                     + "   : " + Convert.ToString(matrice[N1.numero, N2.numero]));
                N1 = N2;
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
                       

        }
        private void button3_Click(object sender, EventArgs e)
        {
            
            StreamReader monStreamReader = new StreamReader("graphe1.txt");

            // Lecture du fichier avec un while, évidemment !
            // 1ère ligne : nombre de noeuds du graphe
            string ligne = monStreamReader.ReadLine();
            int i = 0;
            while (ligne[i] != ':') i++;
            string strnbnoeuds = "";
            i++; // On dépasse le ":"
            while (ligne[i] == ' ') i++; // on saute les blancs éventuels
            while (i < ligne.Length) { strnbnoeuds = strnbnoeuds + ligne[i];
                i++; 
            }
            nbnodes = Convert.ToInt32(strnbnoeuds);

            matrice = new double[nbnodes, nbnodes];
            for (i = 0; i < nbnodes; i++)
                for (int j = 0; j < nbnodes; j++)
                    matrice[i, j] = -1;

            // Ensuite on a la structure suivante : 
            //  arc : n°noeud départ    n°noeud arrivée  valeur
            //  exemple 4 : 
            ligne = monStreamReader.ReadLine();
            while (ligne != null)
            {
                i = 0;
                while (ligne[i] != ':') i++;
                i++; // on passe le :
                while (ligne[i] == ' ') i++; // on saute les blancs éventuels
                string strN1 = "";
                while (ligne[i] != ' ')
                {
                    strN1 = strN1 + ligne[i];
                    i++;
                }
                int N1 = Convert.ToInt32(strN1);

                // On saute les blancs éventuels
                while (ligne[i] == ' ') i++;
                string strN2 = "";
                while (ligne[i] != ' ')
                {
                    strN2 = strN2 + ligne[i];
                    i++;
                }
                int N2 = Convert.ToInt32(strN2);

                // On saute les blancs éventuels
                while (ligne[i] == ' ') i++;
                string strVal = "";
                while ((i < ligne.Length) && (ligne[i] !=' '))
                {
                    strVal = strVal + ligne[i];
                    i++;
                }
                double val = Convert.ToDouble(strVal);

                matrice[N1, N2] = val;
                matrice[N2, N1] = val;
                listBoxgraphe.Items.Add(Convert.ToString(N1)
                   + "--->" + Convert.ToString(N2)
                   + "   : " + Convert.ToString(matrice[N1, N2]));            

                ligne = monStreamReader.ReadLine();
            }
            // Fermeture du StreamReader (obligatoire) 
            monStreamReader.Close();
        }
        //fonction qui transforme une liste de noeuds en liste de string
        private List<string> transfoListesNoeudsEnString(List<GenericNode> liste)
        {
            List < string > transfo = new List<string>();
            foreach(GenericNode node in liste)
            {
                transfo.Add(node.ToString());
            }
            return transfo;
        }
        
        //bouton pour enlever un noeud
        private void button7_Click(object sender, EventArgs e)
        {
            treeView2.SelectedNode.Remove();
        }
        //bouton qui change le texte d'un noeud
        private void buttonEdition_Click(object sender, EventArgs e)
        {
            treeView2.SelectedNode.Text = textboxNoeudAjoute.Text;
        }

        //bouton qui lance la comparaison des deux arbres
        private void buttonVerif_Click(object sender, EventArgs e)
        {
            g.GetSearchTree(treeView1);
            CheckRecursive();
            if((compteurCorrectsNodes == compteurCorrectsNodesObjectif) && (compteurCorrectsNodes != 0))
            {
                MessageBox.Show("Bien joué!");
            }
        }
        //Fonction qui sert à comparer les deux arbres
        private void CheckRecursive()
        {
            TreeNodeCollection nodes = treeView1.Nodes;
            TreeNodeCollection nodesToCheck = treeView2.Nodes;
            if(treeView1.GetNodeCount(false) != treeView2.GetNodeCount(false))
            {
                MessageBox.Show("Erreur");
            }
            else
            {
                for (int i = 0; i < nodes.Count; i++)
                {
                    SubRecursive(nodes[i], nodesToCheck[i]);
                }
            }
            
        }

        /* Appelée par CheckRecursive */
        private void SubRecursive(TreeNode treeNodeAlgo, TreeNode treeNodeToCheck)
        {
            if (treeNodeAlgo.Text == treeNodeToCheck.Text) { compteurCorrectsNodes++; }
            compteurCorrectsNodesObjectif++;

            if (treeNodeAlgo.Nodes.Count== treeNodeToCheck.Nodes.Count)
            {
                for (int j = 0; j < treeNodeAlgo.Nodes.Count; j++)
                {
                    SubRecursive(treeNodeAlgo.Nodes[j], treeNodeToCheck.Nodes[j]);
                }
            }
            else
            {
                MessageBox.Show("Aie, je crois que tu t'es trompé3..");
            }
            
        }
        //ajouter un noeud à l'arbre
        private void button9_Click(object sender, EventArgs e)
        {
            TreeNode node = new TreeNode(textboxNoeudAjoute.Text);
            treeView2.Nodes.Add(node);
        }
        //ajouter un noeud fils à un noeud
        private void button10_Click(object sender, EventArgs e)
        {
            string a = comboBox1.SelectedItem.ToString();
            TreeNode node = new TreeNode(a);

            if (a !="") {treeView2.SelectedNode.Nodes.Add(node); }
            else {treeView2.Nodes.Add("nouveau noeud");}
            
        }

       
        private void verificationListes(List<string> Liste1, List<string> Liste2) 

        {
            bool resultat = false; 
            
            if (Liste1.Count == Liste2.Count)
            {
                MessageBox.Show("On rentre ici L239");
                for(int i = 0; i< Liste1.Count; i++)
                {
                    MessageBox.Show("Les longueurs des listes sont de " + Liste2.Count);
                    MessageBox.Show(Liste1[i] + " " + Liste2[i]);
                }
                for(int i = 0; i < Liste1.Count; i++)
                {
                    if (Liste1[i] == Liste2[i])
                    {
                        resultat = true;
                    }
                    else
                    {
                        resultat = false;
                        break;
                    }
                }
            }
            if (resultat == true)
            {
                MessageBox.Show("C'est Ok!");
            }
            else
            {
                MessageBox.Show("Il y a des erreurs.");
            }
            
        }
        //bouton qui sert à lancer la comparaison
        private void button6_Click(object sender, EventArgs e)
        {
            List<string> fermesMain = new List<string>();
            List<string> ouvertsMain = new List<string>(); 
            
            //On remplit la liste de fermés
            string s = textBox3.Text;                        
            string[] noeuds1 = s.Split(',');
            foreach (string noeud in noeuds1)
            {
                fermesMain.Add(noeud);
            }
            
            
            //On remplit la liste des ouverts
            string t = textBox4.Text;
           
            
            string[] noeuds2 = t.Split(',');
            foreach (string noeud in noeuds2)
            {
                ouvertsMain.Add(noeud);
            }
            
            
            MessageBox.Show("Nombre de fermes rentrés à la main : "+fermesMain.Count + "\n Nombre de fermes de l'algo"+ g.liste_chaqueEtape_Fermes[compteurEtapes].Count);
            MessageBox.Show("Nombre d'ouverts rentrés à la main : "+ouvertsMain.Count + "\n Nombre d ouverts de l'algo" + g.liste_chaqueEtape_Ouverts[compteurEtapes].Count);

            List<string> fermesAlgoEnString = transfoListesNoeudsEnString(g.liste_chaqueEtape_Fermes [compteurEtapes]);
            List<string> ouvertsAlgoEnString = transfoListesNoeudsEnString(g.liste_chaqueEtape_Ouverts [compteurEtapes]);             
            compteurEtapes++;

            verificationListes(fermesMain, fermesAlgoEnString);            
            verificationListes(ouvertsMain, ouvertsAlgoEnString);
            
        }

        

        
    }
}
<file_sep>﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace FormPartie1
{
    public partial class QuestionForm : Form
    {
        public static int compteurQ = 1;
        public static int cptPage = 1;


        private List<Question> _questions;

        public QuestionForm(List<Question> questions)
        {
            InitializeComponent();
            _questions = questions;
        }
               
        private void EcritureQuestion() //cette fonction doit être dans la classe Question, puis on l'appelle dans
            //le Click suivant et dans initialise components
        {
            string name = "LQuestion" + compteurQ.ToString();
            this.LQuestion1.Text = name;
            compteurQ++;
        }

        private void btn_precedent_Click(object sender, EventArgs e)
        {
            cptPage--;
            //retourner à la question précedente
        }
        private void btn_envoyer_Click(object sender, EventArgs e)
        {
            string message = "Voulez-vous vraiment Valider et Quitter ?";
            if (MessageBox.Show(message, "Application Exit", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                //envoyer les infos pour les sérialiser
                Application.Exit();
            }
        }
        private void btn_suivant_Click(object sender, EventArgs e)
        {
            cptPage++;
            //mettre les questions suivantes
            if (cptPage == 4)
            {
                btn_suivant.Text = "Fini!";
            }
         }

      }
}
