public static DeltaData GetPaoDelta(PointData offset) { DeltaData delta = null; if (offset.x == 0 && offset.y > 0) { delta = Constant.PaoZouFaDelta[0]; } else if (offset.x == 0 && offset.y < 0) { delta = Constant.PaoZouFaDelta[0]; } else if (offset.x > 0 && offset.y == 0) { delta = Constant.PaoZouFaDelta[0]; } else if (offset.x < 0 && offset.y == 0) { delta = Constant.PaoZouFaDelta[0]; } else { throw new AppException(ErrorMessage.AE0005); } return(delta); }
/// <summary> /// Main Class /// </summary> /// <param name="args">Argumentos de entrada por liena de comandos</param> static void Main(string[] args) { // Control del directorio a analizar string rootFolder = args[0]; if (String.IsNullOrEmpty(args[0])) { rootFolder = Directory.GetCurrentDirectory(); } //Cargar los datos de los ficheros en las estructuras de cada exchange List <DeltaData> deltaOperations = new List <DeltaData>(); foreach (string folder in Directory.GetDirectories(rootFolder)) { foreach (string file in Directory.GetFiles(folder)) { switch (Path.GetFileName(folder)) { case "binance": Console.WriteLine(Path.GetFileName(folder)); break; case "bittrex": try { using (StreamReader sr = new StreamReader(file)) { sr.ReadLine(); //Descarte de la primera line de cabecera string line = string.Empty; while (!sr.EndOfStream) { line = sr.ReadLine(); deltaOperations.Add(new BittrexData(line)); } } } catch (Exception e) { Console.WriteLine("The File could not be read:"); Console.WriteLine(e.Message); Console.ReadLine(); } Console.WriteLine(Path.GetFileName(file)); break; case "coinbase": Console.WriteLine(Path.GetFileName(folder)); break; case "kraken": Console.WriteLine(Path.GetFileName(folder)); break; case "poloniex": Console.WriteLine(Path.GetFileName(folder)); break; } } } DeltaData.PojoToCSV(deltaOperations, rootFolder); }
public ResultData CheckPao() { ResultData result = new ResultData(); //最新走法 MoveData move = fen.moves[0]; //没按直线移动 if ((move.end - move.start) == PointData.Zero) { throw new AppException(ErrorMessage.AE0005); } //自己部队碰撞 else if ((fen.current & (int)fen[move.end]) != 0x0000) { throw new AppException(ErrorMessage.AE0007); } else { PointData offset = move.end - move.start; DeltaData delta = Utility.GetPaoDelta(offset); PointData p = move.start + delta.target; int paotai = 0; while (p == move.end) { if (fen[p] != Qizi.KONGZI) { paotai++; } p = p + delta.target; } if (paotai == 0 && fen[move.end] == Qizi.KONGZI) { //空白移动 result.result = true; result.pgn.fen = fen; } else if (paotai == 1 && ((fen.current & (int)fen[move.end]) == 0x0000)) { result.result = true; result.caneat = true; result.pgn.fen = fen; } else { throw new AppException(ErrorMessage.AE0007); } } return(result); }
/// <summary> /// Validate a delta /// </summary> private void ValidateDelta(DeltaData delta) { if (String.IsNullOrEmpty(delta.Name)) { throw new InvalidOperationException("Delta set Delta must provide a name"); } foreach (var constraint in delta.Constraint) { ValidateConstraint(constraint); } if (delta is ClassDeltaData) { if ((delta as ClassDeltaData).Deltas != null) { foreach (var subDelta in (delta as ClassDeltaData).Deltas) { ValidateDelta(subDelta.Value); } } } }