/* * 0 = Pas le droit d'avancer * 1 = Champ libre * 2 = Pion adverse présente & possibilité de l'attaquer */ public static int freeField(Client isPlaying, bool playerTop, int x1, int y1, int x2, int y2, bool attacking = true) { int IndexClient = ClientManager.byPseudo(isPlaying.info_main.pseudo); if (IndexClient == -1) { return(0); } Point coeffCoords = Maths.getCoeffDiff(x1, y1, x2, y2); int addCoeffX = coeffCoords.X; int addCoeffY = coeffCoords.Y; for (int i = 1; i < Math.Abs(x1 - x2); i++) { int xA = x2 + (i * addCoeffX); int yA = y2 + (i * addCoeffY); if (xA >= 0 && xA <= 9 && yA >= 0 && yA <= 9) { if (ClientManager.ListClient[IndexClient].info_game.plateauCases[yA][xA].pawnExist) { if (ClientManager.ListClient[IndexClient].info_game.plateauCases[yA][xA].pawnTop == playerTop) { return(0); } else { int xData = xA + addCoeffX; int yData = yA + addCoeffY; for (int e = 1; e < Math.Abs(xA - x1) + 1; e++) { xData = xA + (addCoeffX * e); yData = yA + (addCoeffY * e); /*Console.WriteLine("xData = " + xData + " | yData = " + yData); * Console.WriteLine("addCoeffX = " + addCoeffX + " | addCoeffY = " + addCoeffY); * Console.WriteLine("Abs(x1 - x1) + 1 = " + (Math.Abs(xA - x1) + 1)); * Console.WriteLine("e = " + e);*/ if (xData >= 0 && xData <= 9 && yData >= 0 && yData <= 9) { if (ClientManager.ListClient[IndexClient].info_game.plateauCases[yData][xData].pawnExist) { return(0); } if (xData == x1 && yData == y1) { if (attacking) { xPawn = xA; yPawn = yA; } return(2); } } } } } } } return(1); }