// 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); }
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"); }
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"); }
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"); }
/*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; }
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); } }
// 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; }
public Capture(Vector2Int v, TypePiece t) { vector = v; type = t; }
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); }
private void button4_Click(object sender, EventArgs e) { choosenPiece = TypePiece.Dame; this.Close(); }
private void Button3_Click(object sender, EventArgs e) { choosenPiece = TypePiece.Cavalier; this.Close(); }
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; } }