public string AttackMachines(string attackingMachineName, string defendingMachineName) { BaseMachine attackingMachine = (BaseMachine)this.machines.FirstOrDefault(x => x.Name == attackingMachineName); if (attackingMachine == null) { return($"Machine {attackingMachineName} could not be found"); } if (attackingMachine.HealthPoints == 0) { return($"Dead machine {attackingMachineName} cannot attack or be attacked"); } BaseMachine defendingMachine = (BaseMachine)this.machines.FirstOrDefault(x => x.Name == defendingMachineName); if (defendingMachine == null) { return($"Machine {defendingMachineName} could not be found"); } if (defendingMachine.HealthPoints == 0) { return($"Dead machine {defendingMachineName} cannot attack or be attacked"); } attackingMachine.Attack(defendingMachine); return($"Machine {defendingMachineName} was attacked by machine {attackingMachineName} - current health: {defendingMachine.HealthPoints:F2}"); }