示例#1
0
        private bool tracer_parcelle(Parcelle p, Color choix)
        {
            if (p.afficher == false && p.etang != true)
            {
                p.choixCouleur(choix);
                // contour du rectangle (noir)
                baseDessin.DrawRectangle(contour, p.dimension);
                // intérieur du rectangle (vert/rose/jaune)
                baseDessin.FillRectangle(p.remplissage, p.dimension);
                // nbre de bambou sur cette parcelle
                baseDessin.DrawString(p.nbreBambou.ToString(), police, p.texte, p.dimension.X + tailleInformation, p.dimension.Y + tailleInformation, formatTexte);
                // jardinier
                if (p.jardinier == true)
                {
                    jardinier.mouvement(p.dimension.X, p.dimension.Y);
                    baseDessin.DrawImage(jardinier.image, jardinier.placement);
                }
                // panda
                if (p.panda == true)
                {
                    panda.mouvement(p.dimension.X + tailleParcelle - tailleInformation, p.dimension.Y);
                    baseDessin.DrawImage(panda.image, panda.placement);
                }
                p.afficher = true;
                return(true);
            }

            return(false);
        }
示例#2
0
        private bool trouver_liaison_irrigation(Parcelle p)
        {
            bool lien     = true;
            int  lignep   = p.ligne;
            int  colonnep = p.colonne;

            #region Parcelle adjacente haute
            Parcelle haut;
            if (lignep == 0)
            {
                haut = tableauParcelle[lignep, colonnep];
            }
            else
            {
                haut = tableauParcelle[lignep - 1, colonnep];
            }
            #endregion

            #region Parcelle adjacente basse
            Parcelle bas;
            if (lignep == nbreParcelle - 1)
            {
                bas = tableauParcelle[lignep, colonnep];
            }
            else
            {
                bas = tableauParcelle[lignep + 1, colonnep];
            }
            #endregion

            #region Parcelle adjacente gauche
            Parcelle gauche;
            if (colonnep == 0)
            {
                gauche = tableauParcelle[lignep, colonnep];
            }
            else
            {
                gauche = tableauParcelle[lignep, colonnep - 1];
            }
            #endregion

            #region Parcelle adjacente droite
            Parcelle droite;
            if (colonnep == nbreParcelle - 1)
            {
                droite = tableauParcelle[lignep, colonnep];
            }
            else
            {
                droite = tableauParcelle[lignep, colonnep + 1];
            }
            #endregion

            if (haut.irriguee == false && bas.irriguee == false && droite.irriguee == false && gauche.irriguee == false)
            {
                lien = false;
            }
            return(lien);
        }
示例#3
0
 private void tracer_parcelle(Parcelle p)
 {
     if (p.afficher == false && (p.etang != true || act == Action.BougerJardinier || act == Action.BougerPanda))
     {
         // contour du rectangle (noir)
         baseDessin.DrawRectangle(contour, p.dimension);
         // intérieur du rectangle (vert/rose/jaune)
         baseDessin.FillRectangle(p.remplissage, p.dimension);
         // nbre de bambou sur cette parcelle
         baseDessin.DrawString(p.nbreBambou.ToString(), police, p.texte, p.dimension.X + tailleInformation, p.dimension.Y + tailleInformation, formatTexte);
         // jardinier
         if (p.jardinier == true)
         {
             jardinier.mouvement(p.dimension.X, p.dimension.Y);
             baseDessin.DrawImage(jardinier.image, jardinier.placement);
         }
         // panda
         if (p.panda == true)
         {
             panda.mouvement(p.dimension.X + tailleParcelle - tailleInformation, p.dimension.Y);
             baseDessin.DrawImage(panda.image, panda.placement);
         }
         p.afficher = true;
     }
 }
示例#4
0
        private void deplacementPanda(Parcelle p)
        {
            #region actualisation parcelle de départ
            Parcelle avant = panda.parcelle;
            panda.mouvement(p.dimension.X, p.dimension.Y);
            panda.parcelle = p;
            avant.panda    = false;
            avant.afficher = false;
            bool etang = avant.etang;
            if (etang == true)
            {
                avant.etang = false;
            }
            tracer_parcelle(avant);
            if (etang == true)
            {
                avant.etang = true;
            }
            #endregion

            #region actualisation parcelle d'arrivé
            p.afficher = false;
            p.panda    = true;
            if (p.nbreBambou > 0)
            {
                p.nbreBambou--;
                Color couleurBambou = p.remplissage.Color;
                // si il mange sur une parcelle jaune
                if (couleurBambou == Color.Yellow)
                {
                    listeJoueur[jEnCours].nbreBambouJaune++;
                    estomacJaune.Text = listeJoueur[jEnCours].nbreBambouJaune.ToString();
                }
                // si il mange sur une parcelle rose
                if (couleurBambou == Color.Pink)
                {
                    listeJoueur[jEnCours].nbreBambouRose++;
                    estomacRose.Text = listeJoueur[jEnCours].nbreBambouRose.ToString();
                }
                // si il mange sur une parcelle vert
                if (couleurBambou == Color.ForestGreen)
                {
                    listeJoueur[jEnCours].nbreBambouVert++;
                    estomacVert.Text = listeJoueur[jEnCours].nbreBambouVert.ToString();
                }
            }

            tracer_parcelle(p);
            #endregion
        }
示例#5
0
        private Parcelle trouver_parcelle(MouseEventArgs souris)
        {
            for (int ligne = 0; ligne < nbreParcelle; ligne++)
            {
                for (int colonne = 0; colonne < nbreParcelle; colonne++)
                {
                    if (tableauParcelle[ligne, colonne].curseur_dedans(souris.X, souris.Y, tailleParcelle) == true)
                    {
                        Parcelle p = tableauParcelle[ligne, colonne];
                        return(p);
                    }
                }
            }

            return(null);
        }
示例#6
0
        private void zoneJardin_Click(object sender, MouseEventArgs e)
        {
            int xsouris = e.X;
            int ysouris = e.Y;

            Parcelle p = trouver_parcelle(e);

            #region placer parcelle
            if (act == Action.Parcelle)
            {
                if (choixCouleur.IsEmpty || choixCouleur == Color.White)
                {
                    MessageBox.Show("Vous n'avez pas choisi la couleur de la parcelle.");
                }
                else if (!trouver_liaison(p))
                {
                    MessageBox.Show("Pas de lien entre cette parcelle et les autres.");
                }
                else if (p.afficher == true)
                {
                    MessageBox.Show("Il y a déjà une parcelle ici.");
                }
                else if (p != null)
                {
                    tracer_parcelle(p, choixCouleur);
                    choixCouleur = Color.White;
                    changementJoueur();
                }
            }
            #endregion
            #region arroser
            if (act == Action.Arroser)
            {
                if (p.nbreBambou == 4)
                {
                    MessageBox.Show("Ce bambou est complètement poussé.");
                }
                else if (p.etang == true)
                {
                    MessageBox.Show("Les bambous ne poussent pas sur l'étang.");
                }
                else if (p.afficher == false)
                {
                    MessageBox.Show("Il n'y a pas de parcelle ici.");
                }
                else if (p.irriguee == false)
                {
                    MessageBox.Show("Il faut que la parcelle soit irriguée pour que le bambou pousse.");
                }
                else
                {
                    p.afficher = false;
                    p.nbreBambou++;
                    tracer_parcelle(p);
                    changementJoueur();
                }
            }
            #endregion
            #region irriger
            if (act == Action.Irriguer)
            {
                if (p.etang == true)
                {
                    MessageBox.Show("Pas besoin d'irriguer l'étant !");
                }
                else if (p.afficher == false)
                {
                    MessageBox.Show("Il n'y a pas de parcelle ici.");
                }
                else if (p.irriguee == true)
                {
                    MessageBox.Show("Cette parcelle est déjà irriguée.");
                }
                else if (!trouver_liaison_irrigation(p))
                {
                    MessageBox.Show("Les parcelles adjacentes ne sont pas irriguées.");
                }
                else
                {
                    p.texte.Color = Color.Blue;
                    p.irriguee    = true;
                    p.nbreBambou++;
                    p.afficher = false;
                    tracer_parcelle(p);
                    changementJoueur();
                }
            }
            #endregion
            #region bouger jardinier
            if (act == Action.BougerJardinier)
            {
                deplacementJardinier(p);
                changementJoueur();
            }
            #endregion
            #region bouger panda
            if (act == Action.BougerPanda)
            {
                deplacementPanda(p);
                changementJoueur();
            }
            #endregion
        }
示例#7
0
        public Bambouseraie(ArrayList joueurs, int nbrej)
        {
            InitializeComponent();
            baseDessin = zoneJardin.CreateGraphics();

            #region Initialisation du tableau contenant les parcelles
            nbreParcelle    = zoneJardin.Height / tailleParcelle;
            tableauParcelle = new Parcelle[nbreParcelle, nbreParcelle];
            int xParcelle = 0;
            int yParcelle = 0;
            int ligne     = 0;
            int colonne   = 0;

            for (xParcelle = 0; xParcelle < zoneJardin.Height; xParcelle += (tailleParcelle + 1))
            {
                for (yParcelle = 0; yParcelle < zoneJardin.Height; yParcelle += (tailleParcelle + 1))
                {
                    tableauParcelle[ligne, colonne] = new Parcelle(ligne, colonne, xParcelle, yParcelle, tailleParcelle);
                    ligne++;
                }
                ligne = 0;
                colonne++;
            }
            #endregion

            #region Initialisation affichage objectif
            Obj1.Hide();
            Obj2.Hide();
            Obj3.Hide();
            Obj4.Hide();
            Obj5.Hide();
            #endregion

            #region Intialisation de la pioche
            int maxPioche = nbrej * 6 + 10;
            piocheP = new List <Carte>();
            Random rand = new Random();
            for (int i = 0; i < maxPioche; i++)
            {
                pioche.Add(new Carte(rand.Next(1, 4)));
            }
            #endregion


            #region Initialisation du tableau des joueurs
            nbrejoueur  = nbrej;
            listeJoueur = (Joueur[])joueurs.ToArray(typeof(Joueur));
            #endregion



            #region Définition de l'étang
            tableauParcelle[4, 4].etang     = true;
            tableauParcelle[4, 4].irriguee  = true;
            tableauParcelle[4, 4].jardinier = true;
            tableauParcelle[4, 4].panda     = true;
            tableauParcelle[4, 4].choixCouleur(Color.Blue);
            #endregion

            #region Initialisation des pinceaux
            contour                   = new Pen(Color.Black);
            police                    = new Font("Arial", 20);
            formatTexte               = new StringFormat();
            formatTexte.Alignment     = StringAlignment.Center;
            formatTexte.LineAlignment = StringAlignment.Center;
            #endregion

            #region Définition des images
            string dossierimg = "C:/Users/Alice/Documents/Visual Studio 2013/Projects/Takenoko/TakenokoVisuel/img/";
            jardinier = new Acteur(dossierimg + "jardinier.png", tableauParcelle[4, 4].dimension.X, tableauParcelle[4, 4].dimension.Y, tableauParcelle[4, 4], tailleInformation);
            int xpanda = tableauParcelle[4, 4].dimension.X + tailleParcelle - tailleInformation;
            panda = new Acteur(dossierimg + "panda.png", xpanda, tableauParcelle[4, 4].dimension.Y, tableauParcelle[4, 4], tailleInformation);
            #endregion
        }
示例#8
0
        private void deplacementJardinier(Parcelle p)
        {
            Parcelle avant = jardinier.parcelle;

            jardinier.mouvement(p.dimension.X, p.dimension.Y);
            #region actualisation parcelle de départ
            avant.jardinier = false;
            avant.afficher  = false;
            bool etang = avant.etang;
            if (etang == true)
            {
                avant.etang = false;
            }
            tracer_parcelle(avant);
            if (etang == true)
            {
                avant.etang = true;
            }

            #endregion

            #region actualisation parcelle d'arrivée
            jardinier.parcelle = p;
            p.afficher         = false;
            p.jardinier        = true;
            if (p.nbreBambou < 4 && p.irriguee && !p.etang)
            {
                p.nbreBambou++;
            }
            tracer_parcelle(p);
            #endregion

            #region actualisation des parcelles adajcentes
            int lignep   = p.ligne;
            int colonnep = p.colonne;

            #region Parcelle adjacente haute
            Parcelle haut;
            if (lignep == 0)
            {
                haut = tableauParcelle[lignep, colonnep];
            }
            else
            {
                haut = tableauParcelle[lignep - 1, colonnep];
            }

            if (haut.afficher && !haut.etang && haut.remplissage.Color == p.remplissage.Color && haut.nbreBambou < 4)
            {
                haut.nbreBambou++;
                haut.afficher = false;
                tracer_parcelle(haut);
            }
            #endregion

            #region Parcelle adjacente basse
            Parcelle bas;
            if (lignep == nbreParcelle - 1)
            {
                bas = tableauParcelle[lignep, colonnep];
            }
            else
            {
                bas = tableauParcelle[lignep + 1, colonnep];
            }

            if (bas.afficher && !bas.etang && bas.remplissage.Color == p.remplissage.Color && bas.nbreBambou < 4)
            {
                bas.nbreBambou++;
                bas.afficher = false;
                tracer_parcelle(bas);
            }
            #endregion

            #region Parcelle adjacente gauche
            Parcelle gauche;
            if (colonnep == 0)
            {
                gauche = tableauParcelle[lignep, colonnep];
            }
            else
            {
                gauche = tableauParcelle[lignep, colonnep - 1];
            }

            if (gauche.afficher && !gauche.etang && gauche.remplissage.Color == p.remplissage.Color && gauche.nbreBambou < 4)
            {
                gauche.nbreBambou++;
                gauche.afficher = false;
                tracer_parcelle(gauche);
            }
            #endregion

            #region Parcelle adjacente droite
            Parcelle droite;
            if (colonnep == nbreParcelle - 1)
            {
                droite = tableauParcelle[lignep, colonnep];
            }
            else
            {
                droite = tableauParcelle[lignep, colonnep + 1];
            }

            if (droite.afficher && !droite.etang && droite.remplissage.Color == p.remplissage.Color && droite.nbreBambou < 4)
            {
                droite.nbreBambou++;
                droite.afficher = false;
                tracer_parcelle(droite);
            }
            #endregion
            #endregion
        }
示例#9
0
        public Bambouseraie(ArrayList joueurs, int nbrej)
        {
            InitializeComponent();
            baseDessin = zoneJardin.CreateGraphics();

            #region Initialisation du tableau contenant les parcelles
            nbreParcelle = zoneJardin.Height / tailleParcelle; 
            tableauParcelle = new Parcelle[nbreParcelle, nbreParcelle];
            int xParcelle = 0;
            int yParcelle = 0;
            int ligne = 0;
            int colonne = 0;

            for (xParcelle = 0; xParcelle < zoneJardin.Height; xParcelle += (tailleParcelle+1))
            {
                for (yParcelle = 0; yParcelle < zoneJardin.Height; yParcelle += (tailleParcelle+1))
                {
                    tableauParcelle[ligne, colonne] = new Parcelle(ligne, colonne, xParcelle, yParcelle, tailleParcelle);
                    ligne++;
                }
                ligne = 0;
                colonne++;
            }
            #endregion 

            #region Initialisation affichage objectif
            Obj1.Hide();
            Obj2.Hide();
            Obj3.Hide();
            Obj4.Hide();
            Obj5.Hide();
            #endregion

            #region Intialisation de la pioche
            int maxPioche = nbrej * 6 + 10;
            piocheP = new List<Carte>();
            Random rand = new Random();
            for (int i = 0; i < maxPioche; i++)
            { 
                pioche.Add(new Carte(rand.Next(1,4)));
            }
            #endregion 


            #region Initialisation du tableau des joueurs
            nbrejoueur = nbrej;
            listeJoueur = (Joueur[])joueurs.ToArray(typeof(Joueur));
            #endregion 

            

            #region Définition de l'étang 
            tableauParcelle[4, 4].etang = true;
            tableauParcelle[4, 4].irriguee = true;
            tableauParcelle[4, 4].jardinier = true;
            tableauParcelle[4, 4].panda = true;
            tableauParcelle[4, 4].choixCouleur(Color.Blue); 
            #endregion

            #region Initialisation des pinceaux
            contour = new Pen(Color.Black);
            police = new Font("Arial", 20);
            formatTexte = new StringFormat();
            formatTexte.Alignment = StringAlignment.Center;
            formatTexte.LineAlignment = StringAlignment.Center;
            #endregion 

            #region Définition des images
            string dossierimg = "C:/Users/Alice/Documents/Visual Studio 2013/Projects/Takenoko/TakenokoVisuel/img/";
            jardinier = new Acteur(dossierimg + "jardinier.png", tableauParcelle[4, 4].dimension.X, tableauParcelle[4, 4].dimension.Y, tableauParcelle[4,4], tailleInformation);
            int xpanda = tableauParcelle[4, 4].dimension.X + tailleParcelle - tailleInformation; 
            panda = new Acteur(dossierimg + "panda.png", xpanda, tableauParcelle[4, 4].dimension.Y, tableauParcelle[4,4], tailleInformation); 
            #endregion 


        }
示例#10
0
        private void deplacementPanda(Parcelle p)
        {
            #region actualisation parcelle de départ 
            Parcelle avant = panda.parcelle;
            panda.mouvement(p.dimension.X, p.dimension.Y);
            panda.parcelle = p;
            avant.panda = false;
            avant.afficher = false;
            bool etang = avant.etang;
            if (etang == true)
                avant.etang = false;
            tracer_parcelle(avant);
            if (etang == true)
                avant.etang = true; 
            #endregion

            #region actualisation parcelle d'arrivé 
            p.afficher = false;
            p.panda = true;
            if (p.nbreBambou > 0)
            {
                p.nbreBambou--;
                Color couleurBambou = p.remplissage.Color;
                // si il mange sur une parcelle jaune 
                if (couleurBambou == Color.Yellow)
                {
                    listeJoueur[jEnCours].nbreBambouJaune++;
                    estomacJaune.Text = listeJoueur[jEnCours].nbreBambouJaune.ToString();
                }
                // si il mange sur une parcelle rose 
                if (couleurBambou == Color.Pink)
                {
                    listeJoueur[jEnCours].nbreBambouRose++;
                    estomacRose.Text = listeJoueur[jEnCours].nbreBambouRose.ToString();
                }
                // si il mange sur une parcelle vert 
                if (couleurBambou == Color.ForestGreen)
                {
                    listeJoueur[jEnCours].nbreBambouVert++;
                    estomacVert.Text = listeJoueur[jEnCours].nbreBambouVert.ToString();
                }
            }

            tracer_parcelle(p);
            #endregion


        }
示例#11
0
        private void deplacementJardinier(Parcelle p)
        {
            Parcelle avant = jardinier.parcelle;
            jardinier.mouvement(p.dimension.X, p.dimension.Y);
            #region actualisation parcelle de départ
            avant.jardinier = false;
            avant.afficher = false;
            bool etang = avant.etang; 
            if (etang == true)
                avant.etang = false; 
            tracer_parcelle(avant);
            if (etang == true)
                avant.etang = true; 

            #endregion 

            #region actualisation parcelle d'arrivée 
            jardinier.parcelle = p;
            p.afficher = false;
            p.jardinier = true;
            if (p.nbreBambou < 4 && p.irriguee && !p.etang)
                p.nbreBambou++;
            tracer_parcelle(p);
            #endregion 

            #region actualisation des parcelles adajcentes 
            int lignep = p.ligne;
            int colonnep = p.colonne;

            #region Parcelle adjacente haute
            Parcelle haut;
            if (lignep == 0)
                haut = tableauParcelle[lignep, colonnep];
            else
                haut = tableauParcelle[lignep - 1, colonnep];
            
            if (haut.afficher && !haut.etang && haut.remplissage.Color == p.remplissage.Color && haut.nbreBambou < 4)
            {
                haut.nbreBambou++;
                haut.afficher = false;
                tracer_parcelle(haut);
            }
            #endregion

            #region Parcelle adjacente basse
            Parcelle bas;
            if (lignep == nbreParcelle - 1)
                bas = tableauParcelle[lignep, colonnep];
            else
                bas = tableauParcelle[lignep + 1, colonnep];

            if (bas.afficher && !bas.etang && bas.remplissage.Color == p.remplissage.Color && bas.nbreBambou < 4)
            {
                bas.nbreBambou++;
                bas.afficher = false;
                tracer_parcelle(bas);
            }
            #endregion

            #region Parcelle adjacente gauche
            Parcelle gauche;
            if (colonnep == 0)
                gauche = tableauParcelle[lignep, colonnep];
            else
                gauche = tableauParcelle[lignep, colonnep - 1];
           
            if (gauche.afficher && !gauche.etang && gauche.remplissage.Color == p.remplissage.Color && gauche.nbreBambou < 4)
            {
                gauche.nbreBambou++;
                gauche.afficher = false;
                tracer_parcelle(gauche);
            }
            #endregion

            #region Parcelle adjacente droite
            Parcelle droite;
            if (colonnep == nbreParcelle - 1)
                droite = tableauParcelle[lignep, colonnep];
            else
                droite = tableauParcelle[lignep, colonnep + 1];

            if (droite.afficher && !droite.etang && droite.remplissage.Color == p.remplissage.Color && droite.nbreBambou < 4)
            {
                droite.nbreBambou++;
                droite.afficher = false;
                tracer_parcelle(droite);
            }
            #endregion 
            #endregion 

        }
示例#12
0
        private bool trouver_liaison_irrigation(Parcelle p)
        {
            bool lien = true;
            int lignep = p.ligne;
            int colonnep = p.colonne;

            #region Parcelle adjacente haute
            Parcelle haut;
            if (lignep == 0)
                haut = tableauParcelle[lignep, colonnep];
            else
                haut = tableauParcelle[lignep - 1, colonnep];
            #endregion

            #region Parcelle adjacente basse
            Parcelle bas;
            if (lignep == nbreParcelle -1 )
                bas = tableauParcelle[lignep, colonnep];
            else
                bas = tableauParcelle[lignep + 1, colonnep];
            #endregion

            #region Parcelle adjacente gauche
            Parcelle gauche;
            if (colonnep == 0)
                gauche = tableauParcelle[lignep, colonnep];
            else
                gauche = tableauParcelle[lignep, colonnep - 1];
            #endregion

            #region Parcelle adjacente droite
            Parcelle droite;
            if (colonnep == nbreParcelle-1)
                droite = tableauParcelle[lignep, colonnep];
            else
                droite = tableauParcelle[lignep, colonnep + 1];
            #endregion

            if (haut.irriguee == false && bas.irriguee == false && droite.irriguee == false && gauche.irriguee == false)
                lien = false;
            return lien;
        }
示例#13
0
        private bool tracer_parcelle(Parcelle p, Color choix)
        {
            if (p.afficher == false && p.etang != true)
            {
                p.choixCouleur(choix);
                // contour du rectangle (noir)
                baseDessin.DrawRectangle(contour, p.dimension);
                // intérieur du rectangle (vert/rose/jaune)
                baseDessin.FillRectangle(p.remplissage, p.dimension);
                // nbre de bambou sur cette parcelle
                baseDessin.DrawString(p.nbreBambou.ToString(), police, p.texte, p.dimension.X + tailleInformation, p.dimension.Y + tailleInformation, formatTexte);
                // jardinier 
                if (p.jardinier == true)
                {
                    jardinier.mouvement(p.dimension.X, p.dimension.Y);
                    baseDessin.DrawImage(jardinier.image, jardinier.placement);
                }
                // panda 
                if (p.panda == true)
                {
                    panda.mouvement(p.dimension.X + tailleParcelle - tailleInformation, p.dimension.Y);
                    baseDessin.DrawImage(panda.image, panda.placement);
                }
                p.afficher = true;
                return true;
            }

            return false;
        }
示例#14
0
 private void tracer_parcelle(Parcelle p)
 {
     if (p.afficher == false && (p.etang != true || act == Action.BougerJardinier || act == Action.BougerPanda))
     {
         // contour du rectangle (noir)
         baseDessin.DrawRectangle(contour, p.dimension);
         // intérieur du rectangle (vert/rose/jaune)
         baseDessin.FillRectangle(p.remplissage, p.dimension);
         // nbre de bambou sur cette parcelle
         baseDessin.DrawString(p.nbreBambou.ToString(), police, p.texte, p.dimension.X+tailleInformation, p.dimension.Y+tailleInformation, formatTexte);
         // jardinier 
         if (p.jardinier == true)
         {
             jardinier.mouvement(p.dimension.X, p.dimension.Y);
             baseDessin.DrawImage(jardinier.image, jardinier.placement);
         }
         // panda 
         if (p.panda == true)
         {
             panda.mouvement(p.dimension.X + tailleParcelle - tailleInformation, p.dimension.Y);
             baseDessin.DrawImage(panda.image, panda.placement);
         }
         p.afficher = true;
     }
 }