private IEnumerable <IGameAction> GetPossiblePushActions() { for (var index = 0; index < MyUnits.Count; index++) { var unit = MyUnits[index]; if (unit.X < 0) { continue; } foreach (var targetDir in Directions.All8) { var target = unit + targetDir; if (HisUnits.Any(u => u.X >= 0 && u.Equals(target))) { foreach (var pushDir in targetDir.PushDirections()) { if (CanMove(target, target + pushDir)) { var action = new PushAndBuildAction(index, targetDir, pushDir); EnsureMoveValid(action); yield return(action); } } } } } }
public override string ToString() { var map = Size.Times(y => Size.Times(x => heights[y, x]).StrJoin("")).StrJoin("\n"); var my = MyUnits.StrJoin("; "); var his = HisUnits.StrJoin("; "); return($"{map}\n{my}\n{his}\n{CurrentPlayer}"); }
public string Serialize() { var map = Size.Times(y => Size.Times(x => heights[y, x]).StrJoin("")).StrJoin("|"); var my = MyUnits.StrJoin("|"); var his = HisUnits.StrJoin("|"); return(string.Join("|", map, my, his)); }
public override string ToString() { var map = heights.StrJoin("\n", row => row.StrJoin("")); var my = MyUnits.StrJoin("; "); var his = HisUnits.StrJoin("; "); return($"{map}\n{my}\n{his}\n{CurrentPlayer}"); }
public string Serialize() { var map = heights.StrJoin("|", row => row.StrJoin("")); var my = MyUnits.StrJoin("|"); var his = HisUnits.StrJoin("|"); return(string.Join("|", map, my, his)); }