Beispiel #1
0
 // Regarde si la pièce est bien compatible avec le TypePiece
 public bool compatibleType(TypePiece tp, Board board, Vector2Int vec)
 {
     if (board.grille[vec.x, vec.y].GetType() == typeof(Tower) && tp.type == TypePiece.tPiece.TOWER)
     {
         return(tp.height == ((Tower)board.grille[vec.x, vec.y]).height);
     }
     return(board.grille[vec.x, vec.y].GetType() == typeof(Pion) && tp.type == TypePiece.tPiece.PION);
 }
Beispiel #2
0
        protected void BtnSupprimer_Click(object sender, EventArgs e)
        {
            int?      id = int.Parse(gvPiece.SelectedRow.Cells[1].Text);
            TypePiece p  = db.TypePiece.Find(id);

            db.TypePiece.Remove(p);
            db.SaveChanges();
            Server.Transfer("~/Adminstration/typePiece.aspx");
        }
Beispiel #3
0
        protected void btnModifer_Click(object sender, EventArgs e)
        {
            int?      id = int.Parse(gvPiece.SelectedRow.Cells[1].Text);
            TypePiece p  = db.TypePiece.Find(id);

            p.libelleTypePiece = txtlibelle.Text;

            db.SaveChanges();
            Server.Transfer("~/Adminstration/typePiece.aspx");
        }
Beispiel #4
0
        protected void btnValider_Click(object sender, EventArgs e)
        {
            TypePiece p = new TypePiece();

            p.libelleTypePiece = txtlibelle.Text;

            db.TypePiece.Add(p);

            db.SaveChanges();
            Server.Transfer("~/Adminstration/typePiece.aspx");
        }
Beispiel #5
0
 /*Constructeur*/
 // On crée une action générique à partir d'un action, on réalise la conversion
 public GenericAction(Board board, Vector2Int context, Action ac, Camp camp)
 {
     this.oldPosition = new Vector2Int(ac.oldPosition.x - context.x, ac.oldPosition.y - context.y);
     this.newPosition = new Vector2Int(ac.newPosition.x - context.x, ac.newPosition.y - context.y);
     this.captured    = new HashSet <Capture>();
     type             = getTypePiece(board, ac.oldPosition);
     foreach (Vector2Int vec in ac.captured)
     {
         this.captured.Add(
             new Capture(new Vector2Int(vec.x - ac.oldPosition.x, vec.y - ac.oldPosition.y),
                         getTypePiece(board, vec)));
     }
     this.camp = camp;
 }
Beispiel #6
0
        public Piece Promouvoir(TypePiece piece)
        {
            switch (piece)
            {
            case TypePiece.Dame:
                return(new Dame(joueur));

            case TypePiece.Tour:
                return(new Tour(joueur));

            case TypePiece.Fou:
                return(new Fou(joueur));

            case TypePiece.Cavalier:
                return(new Cavalier(joueur));
            }
            return(this);
        }
        public static InfoPiece GetInfo(CouleurCamp couleurCamp, TypePiece type)
        {
            switch (type)
            {
            case TypePiece.Roi: return(couleurCamp == CouleurCamp.Blanche ? RoiBlanc      : RoiNoir);

            case TypePiece.Dame: return(couleurCamp == CouleurCamp.Blanche ? DameBlanche   : DameNoire);

            case TypePiece.Tour: return(couleurCamp == CouleurCamp.Blanche ? TourBlanche   : TourNoire);

            case TypePiece.Fou: return(couleurCamp == CouleurCamp.Blanche ? FouBlanc      : FouNoir);

            case TypePiece.Cavalier: return(couleurCamp == CouleurCamp.Blanche ? CavalierBlanc : CavalierNoir);

            case TypePiece.Pion: return(couleurCamp == CouleurCamp.Blanche ? PionBlanc     : PionNoir);

            default: return(null);
            }
        }
Beispiel #8
0
 // methodes
 public Piece(Joueur joueur, TypePiece type)
 {
     this.joueur = joueur;
     info        = InfoPiece.GetInfo(joueur.couleur, type);
 }
 private InfoPiece(TypePiece type, CouleurCamp couleur)
 {
     this.type    = type;
     this.couleur = couleur;
 }
Beispiel #10
0
 public Capture(Vector2Int v, TypePiece t)
 {
     vector = v;
     type   = t;
 }
Beispiel #11
0
        public bool CanBeAttacked(InfoPiece infos, Case depart, Case arrivee)
        {
            #region Directions
            //row, col
            Tuple <int, int> hautGauche = new Tuple <int, int>(-1, -1);
            Tuple <int, int> haut       = new Tuple <int, int>(-1, 0);
            Tuple <int, int> hautDroite = new Tuple <int, int>(-1, 1);
            Tuple <int, int> droite     = new Tuple <int, int>(0, 1);
            Tuple <int, int> basDroite  = new Tuple <int, int>(1, 1);
            Tuple <int, int> bas        = new Tuple <int, int>(1, 0);
            Tuple <int, int> basGauche  = new Tuple <int, int>(1, -1);
            Tuple <int, int> gauche     = new Tuple <int, int>(0, -1);

            Tuple <int, int> cavalier1 = new Tuple <int, int>(1, 2);
            Tuple <int, int> cavalier2 = new Tuple <int, int>(1, -2);
            Tuple <int, int> cavalier3 = new Tuple <int, int>(2, 1);
            Tuple <int, int> cavalier4 = new Tuple <int, int>(2, -1);
            Tuple <int, int> cavalier5 = new Tuple <int, int>(-1, 2);
            Tuple <int, int> cavalier6 = new Tuple <int, int>(-1, -2);
            Tuple <int, int> cavalier7 = new Tuple <int, int>(-2, 1);
            Tuple <int, int> cavalier8 = new Tuple <int, int>(-2, -1);

            List <Tuple <int, int> > directions = new List <Tuple <int, int> >();
            directions.Add(hautGauche); directions.Add(cavalier1);
            directions.Add(haut);       directions.Add(cavalier2);
            directions.Add(hautDroite); directions.Add(cavalier3);
            directions.Add(droite);     directions.Add(cavalier4);
            directions.Add(basDroite);  directions.Add(cavalier5);
            directions.Add(bas);        directions.Add(cavalier6);
            directions.Add(basGauche);  directions.Add(cavalier7);
            directions.Add(gauche);     directions.Add(cavalier8);
            #endregion

            int row = this.position.row;
            int col = this.position.col;

            //Si c'est le roi qui a bouger, prendre en compte la nouvelle pos
            if (infos.type == TypePiece.Roi)
            {
                row = arrivee.row;
                col = arrivee.col;
            }

            //Pour chaque direction
            foreach (Tuple <int, int> dir in directions)
            {
                //Slide
                int newRow = row;
                int newCol = col;
                while (true)
                {
                    newRow += dir.Item1;
                    newCol += dir.Item2;
                    //Si hors plateau, passer à la direction suivante
                    if (newRow < 0 || newRow > 7 || newCol < 0 || newCol > 7)
                    {
                        break;
                    }
                    //On récupère la case à tester et la piece sur cette case
                    Case  cSlide = this.joueur.partie.echiquier.cases[newRow, newCol];
                    Piece p      = cSlide.piece;
                    //Si vide ou ancienne pos et pas nouvelle pos, continuer a glisser,
                    //On considére l'ancienne case comme vide et la nouvelle comme remplis
                    if ((p == null && ((cSlide != arrivee)) || (cSlide == depart)))
                    {
                        if (dir.Item1 == 2 ||
                            dir.Item1 == -2 ||
                            dir.Item2 == 2 ||
                            dir.Item2 == -2)
                        {
                            break; //Si c'est une position de canasson, on ne glisse pas
                        }
                        continue;  //On passe à la suivante
                    }
                    //Si allié ou case d'arrivée, passer à la direction suivante
                    //On considere la nouvelle case comme occupé par un allié
                    if ((cSlide == arrivee) || (p != null && p.info.couleur == this.joueur.couleur))
                    {
                        break;
                    }
                    //Sinon ennemi, regarder le type pour voir s'il peut se déplacer dans cette direction
                    else
                    {
                        TypePiece pieceType = p.info.type;
                        //Si oui, return true
                        if (dir.Item1 == 2 || dir.Item1 == -2 || dir.Item2 == 2 || dir.Item2 == -2)
                        { // Si c'est une dir de canasson,
                            if (pieceType == TypePiece.Cavalier)
                            {
                                return(true);                                 //et un canasson, le roi peut être attaqué
                            }
                            //continue; //Si c'en est pas un, c'est safe
                        }
                        else if (pieceType == TypePiece.Dame)
                        {
                            return(true); //Peu importe la direction ou la distance
                        }
                        else if (pieceType == TypePiece.Roi)
                        {                                      //Si c'est un roi
                            if (Math.Abs(newRow - row) <= 1 && //Distance horizontal <= 1 et
                                Math.Abs(newCol - col) <= 1)   //Distance vertical <= 1
                            {
                                return(true);
                            }
                        }
                        else if (pieceType == TypePiece.Fou)
                        {
                            if (dir.Item1 != 0 && dir.Item2 != 0)
                            {
                                return(true);
                            }
                        }
                        else if (pieceType == TypePiece.Tour)       //Si c'est une tour
                        {
                            if (dir.Item1 == 0 && dir.Item2 != 1 || //Horizontal
                                dir.Item1 != 1 && dir.Item2 == 0)   //Vertical
                            {
                                return(true);
                            }
                        }
                        //Si c'est un pion
                        else if (pieceType == TypePiece.Pion)
                        {
                            if (p.info.couleur == CouleurCamp.Blanche) //De couleur blanche
                            {
                                //Une case en dessous et une colonne à côté
                                if (newRow == row + 1 && (newCol == col + 1 || newCol == col - 1))
                                {
                                    return(true);
                                }
                            }
                            else //De couleur noir
                            {
                                //Une case au dessous et une colonne à côté
                                if (newRow == row - 1 && (newCol == col + 1 || newCol == col - 1))
                                {
                                    return(true);
                                }
                            }
                        }
                        //Si non, passer à la direction suivante
                        break;
                    }
                }
            }
            return(false);
        }
Beispiel #12
0
 private void button4_Click(object sender, EventArgs e)
 {
     choosenPiece = TypePiece.Dame;
     this.Close();
 }
Beispiel #13
0
 private void Button3_Click(object sender, EventArgs e)
 {
     choosenPiece = TypePiece.Cavalier;
     this.Close();
 }
Beispiel #14
0
 private void Button1_Click(object sender, EventArgs e)
 {
     choosenPiece = TypePiece.Tour;
     this.Close();
 }
        void DefinitionType()
        {
            int pos = this.ColorParallelepiped.IndexOf(".");

               if (pos == -1)
               {
               this.Type = TypePiece.Left;
               return;
               }

               if (pos % 2 == 1)
               {
               if (this.ColorParallelepiped[pos - 1] != '.')
               {
                   this.Type = TypePiece.Left;
               }
               }
               else
               {

               if (this.ColorParallelepiped[pos + 1] != '.')
               {
                   this.Type = TypePiece.Right;
               }
               }

               if (pos <= 1)
               {
               this.Character = CharacterPiece.Width;
               }

               if (pos >= 2 && pos <= 3)
               {
               this.Character = CharacterPiece.Depth;
               }

               if (pos >= 4)
               {
               this.Character = CharacterPiece.Height;
               }
        }