private int DistanceCalc(Case_Echiquier target) // Calcule la distance entre la case sur laquelle se trouve le soldat et une case visée (en nombre de cases) { int distance = Math.Abs(this.position.IndexX - target.IndexX) + Math.Abs(this.position.IndexY - target.IndexY); // DEBUG Console.WriteLine("Distance = " + distance); return(distance); }
Random tir = new Random(); // Permet de tirer des nombres entre 0 et 100 pour déterminer si un tir touche ou non public Soldat(int classe, Case_Echiquier _position) { this._classe = classe; this.position = _position; switch (_classe) { case 0: // Fantassin this._damage = 5; this._precision = 5; this._HP = 10; this._evasion = 4; this._mobility = 5; break; case 1: // Sniper this._damage = 6; this._precision = 6; this._HP = 8; this._evasion = 5; this._mobility = 4; break; case 2: // Lourd this._damage = 4; this._precision = 3; this._HP = 15; this._evasion = 2; this._mobility = 3; break; case 3: // Leger this._damage = 4; this._precision = 4; this._HP = 5; this._evasion = 8; this._mobility = 8; break; default: // Erreur -> Pas de classe assignée error = true; break; } }
public int Move(Case_Echiquier targetPos) // Se déplace vers une case ciblée, renvoie 0 si pas d'erreur, 1 si la case ciblée est trop loin et 2 si la case ciblée est déjà occupée { if (targetPos.soldier == null) // On vérifie que la case sélectionnée est vide { if (DistanceCalc(targetPos) <= this._mobility) // On vérifie que le soldat a assez de mobilité pour atteindre la case { this.position.soldier = null; this.position = targetPos; targetPos.soldier = this; this.played = true; return(0); } else { return(1); } } else { return(2); } }