Exemple #1
0
        public void DeplacementSuivant()
        {
            int reponseLigneInt   = Int32.MinValue;
            int reponseColonneInt = Int32.MinValue;


            bool coordonneesValidesBool = false;

            // CONTROLE SUR LES VALEURS ENTREES PAR L'UTILISATEUR

            // Premier question et l'objectif est de revenir ici pour analyser tous les nouveaux essais

            #region Controle que les coordonnées soient bien dans le tableau


            while (!coordonneesValidesBool)
            {
                while (!coordonneesValidesBool)
                {
                    Console.WriteLine("Quelle position souhaitez-vous atteindre ?");
                    Console.Write("Indice Ligne : ");
                    reponseLigneInt = int.Parse(Console.ReadLine()) - 1; // car utilisateur ne prend pas en compte le 0
                    Console.Write("Indice Colonne : ");
                    reponseColonneInt = int.Parse(Console.ReadLine()) - 1;

                    if (((reponseLigneInt < 0 || reponseLigneInt > m_labyrintheLabyrinthe.NombreLignesInt - 1) ||
                         (reponseColonneInt < 0 || reponseColonneInt > m_labyrintheLabyrinthe.NombresColonnesInt - 1))) // si les coordonnées ne sont pas valides
                    {
                        Console.WriteLine("LAB019 : Les coordonnées <(" + (reponseLigneInt + 1) + ";" + (reponseColonneInt + 1) + ")> ne peuvent pas être appliquées ici");
                    }

                    else
                    {
                        coordonneesValidesBool = true;
                    }
                }


                #endregion

                //Les coordonnées sont donc dans le tableau
                //IL FAUT VERIFIER QUE LA DEPLACEMENT EST POSSIBLE

                #region Adjacente à la case demandée ?

                CPosition reponsePosition = new CPosition(reponseLigneInt, reponseColonneInt);

                // Controle sur le fait que la case demandée est adjacente à la case actuelle du personnage

                if (reponsePosition.EstEgale(m_personnePosition))
                {
                    coordonneesValidesBool = false;
                    Console.WriteLine("LAB020 : tu n'as pas fait de déplacement");
                }
                //METHODE ESTADJACENT DANS LA CLASSE CPOSITION


                else if (!reponsePosition.EstAdjacent(m_personnePosition) || m_labyrintheLabyrinthe.EstOccupee(reponsePosition)) //|| !m_personnePosition.EstEgale(m_labyrintheLabyrinthe.PositionArrivee)
                {
                    Console.WriteLine("LAB022 : La position n'est pas adjacente ou la case est occupée !");
                    coordonneesValidesBool = false;
                }

                else
                {
                    //la case est libre et adjacente
                    // on effectue le déplacement

                    m_labyrintheLabyrinthe.MarquerPassage(m_personnePosition);

                    m_personnePosition = reponsePosition;
                    Console.WriteLine("La nouvelle position du personnage est : " + m_personnePosition.ToString());

                    m_labyrintheLabyrinthe.MarquerPassage(m_personnePosition);
                }
            }

            #endregion
        }