Advertisement
Spocoman

03. Man O War

Nov 11th, 2023 (edited)
925
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.20 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. namespace ManOWar
  6. {
  7.     class Program
  8.     {
  9.         static bool IsIndexValid(int i, List<int> l)
  10.         {
  11.             return i >= 0 && i < l.Count;
  12.         }
  13.         static void Main(string[] args)
  14.         {
  15.             var pirateShip = Console.ReadLine().Split('>').Select(int.Parse).ToList();
  16.             var warShip = Console.ReadLine().Split('>').Select(int.Parse).ToList();
  17.             int maxSectionHealth = int.Parse(Console.ReadLine());
  18.             string input;
  19.  
  20.             while ((input = Console.ReadLine()) != "Retire")
  21.             {
  22.                 var tokens = input.Split(' ');
  23.                 string command = tokens[0];
  24.  
  25.                 if (command == "Fire")
  26.                 {
  27.                     int index = int.Parse(tokens[1]);
  28.                     if (IsIndexValid(index, warShip))
  29.                     {
  30.                         int damage = int.Parse(tokens[2]);
  31.                         warShip[index] -= damage;
  32.                         if (warShip[index] <= 0)
  33.                         {
  34.                             Console.WriteLine("You won! The enemy ship has sunken.");
  35.                             warShip.Clear();
  36.                             break;
  37.                         }
  38.                     }  
  39.                 }
  40.                 else if (command == "Defend")
  41.                 {
  42.                     int startIndex = int.Parse(tokens[1]);
  43.                     int finalIndex = int.Parse(tokens[2]);
  44.                     if (IsIndexValid(startIndex, pirateShip) && IsIndexValid(finalIndex, pirateShip))
  45.                     {
  46.                         int damage = int.Parse(tokens[3]);
  47.                         for (int i = startIndex; i <= finalIndex; i++)
  48.                         {
  49.                             pirateShip[i] -= damage;
  50.                             if (pirateShip[i] <= 0)
  51.                             {
  52.                                 Console.WriteLine("You lost! The pirate ship has sunken.");
  53.                                 pirateShip.Clear();
  54.                                 Environment.Exit(0);
  55.                             }
  56.                         }
  57.                     }
  58.                 }
  59.                 else if (command == "Repair")
  60.                 {
  61.                     int index = int.Parse(tokens[1]);
  62.                     if (IsIndexValid(index, pirateShip)) {
  63.                         int health = int.Parse(tokens[2]);
  64.                         pirateShip[index] += health;
  65.                         if (pirateShip[index] > maxSectionHealth)
  66.                         {
  67.                             pirateShip[index] = maxSectionHealth;
  68.                         }
  69.                     }
  70.                 }
  71.                 else if (command == "Status")
  72.                 {
  73.                     int count = pirateShip.Where(x => x < maxSectionHealth / 5).Count();
  74.                     Console.WriteLine($"{count} sections need repair.");
  75.                 }
  76.             }
  77.  
  78.             if (pirateShip.Count > 0 && warShip.Count > 0)
  79.             {
  80.                 Console.WriteLine($"Pirate ship status: {pirateShip.Sum()}\nWarship status: {warShip.Sum()}");
  81.             }
  82.         }
  83.     }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement