public static Coord DoTargetAction(Unit unit) { var exitFlag = false; var target = new Coord(unit.Position.X, unit.Position.Y); DrawTargetMark(unit, target, true); while (!exitFlag) { var key = ZInput.ReadKey(); var oldTarget = new Coord(target.X, target.Y); switch (key) { case ConsoleKey.LeftArrow : MoveTarget(target, -1, 0); break; case ConsoleKey.RightArrow : MoveTarget(target, +1, 0); break; case ConsoleKey.UpArrow : MoveTarget(target, 0, -1); break; case ConsoleKey.DownArrow : MoveTarget(target, 0, +1); break; case ConsoleKey.Enter : return target; break; case ConsoleKey.Escape : exitFlag = true; break; } if (!oldTarget.Equals(target)) { DrawTargetMark(unit, oldTarget, false); DrawTargetMark(unit, target, true); } } return null; }
private static void DFS(Coord coord, Coord target, long sum, int[,] lab) { //if (!visited.Contains(coord)) //{ visited.Add(coord); if (coord.Equals(target)) { results.Add(sum); return; } if (lab[coord.X, coord.Y] == 1) { sum += 1; } if (coord.X + 1 < lab.GetLength(0)) { DFS(new Coord(coord.X + 1, coord.Y), target, sum, lab); } if (coord.Y + 1 < lab.GetLength(1)) { DFS(new Coord(coord.X, coord.Y + 1), target, sum, lab); } //} }
public static bool IsTargetOnSoldier(Unit currentUnit, Coord target) { foreach (var team in MainGame.Teams) foreach (var unit in team.Units.Where(a => a.Name != currentUnit.Name)) if (target.Equals(unit.Position)) return true; return false; }
public bool IsHere(Coord c) { return c.Equals(Coord); }
public int GetDirectionForOffset(int dx, int dy) { var coord = new Coord(dx, dy); for (var i = 0; i < _viewDirections.Length; i++) if (coord.Equals(_viewDirections[i])) return i; return -1; }
public bool Move(Coord init, Coord final) { bool rep = false; if (Coord.coordonnees_valides(final) && !init.Equals(final) && JeuCourant().IsPieceHere(init) && !JeuCourant().IsPieceHere(final) && JeuCourant().IsMoveOk(init, final) //&& !ColissionInPath(init, final) ) { /*if (!_isAClone && MetRoiCourantEnDanger(init, final)) { _message = "Ce mouvement met votre roi en danger !!!"; return false; }*/ if (Advairsaire().IsPieceHere(final)) { if (JeuCourant().IsPion(init) && !Coord.IsDiagonal(init, final)) { _message = "Le pion ne mange qu'en diagonale avant !"; return false; } Advairsaire().Capture(final); rep = JeuCourant().Move(init, final); } else { if (JeuCourant().IsPion(init) && Coord.IsDiagonal(init, final)) { _message = "Le pion se deplace en avant !"; return false; } rep = JeuCourant().Move(init, final); } } else { _message = "Il y a une/plusieurs erreur : "; if (!Coord.coordonnees_valides(final)) { _message += "\n\t-> Coordonnées hors échiquier"; } if (!JeuCourant().IsPieceHere(init)) { _message += "\n\t-> Ce n'est pas une pièce de votre équipe"; } if (JeuCourant().IsPieceHere(final)) { _message += "\n\t-> Vous n'avez pas le droit de manger une pièce de votre équipe"; } if (init.Equals(final)) { _message += "\n\t-> Déplacement sur la même case"; } if (!JeuCourant().IsMoveOk(init, final)) { _message += "\n\t-> Déplacement interdit pour cette pièce : " + JeuCourant().GetPieceName(init); } if (ColissionInPath(init, final)) { _message += "\n\t-> Il y a une pièce sur la trajectoire"; } } return rep; }