AleksandarKostadinov

10. The Heigan Dance

Jun 5th, 2017
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.97 KB | None | 0 0
  1. namespace _10.TheHeiganDance
  2. {
  3.     using System;
  4.     using System.Collections.Generic;
  5.  
  6.     public class TheLastBattle
  7.     {
  8.         public static Player player;
  9.         public static int[,,] chamber;
  10.  
  11.         public static void Main()
  12.         {
  13.             var playerDamage = double.Parse(Console.ReadLine().Trim());
  14.             player = new Player();
  15.  
  16.             player.Damage = playerDamage;
  17.             player.Row = 7;
  18.             player.Col = 7;
  19.             player.IsAlive = true;
  20.             player.HitPoints = 18500;
  21.             player.KilledBy = string.Empty;
  22.             player.IsHitFromCloud = false;
  23.  
  24.             var heigansHitPoints = 3000000d;
  25.  
  26.             chamber = new int[15, 15, 3];
  27.  
  28.             while (player.IsAlive)
  29.             {
  30.                 DamageFromLastTurn();
  31.                 heigansHitPoints -= player.Damage;
  32.  
  33.                 if (heigansHitPoints <= 0 || !player.IsAlive)
  34.                 {
  35.                     break;
  36.                 }
  37.                 var spellTokens = Console.ReadLine().Split(" \t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
  38.  
  39.                 var currentSpell = spellTokens[0];
  40.                 var spellRow = int.Parse(spellTokens[1]);
  41.                 var spellCol = int.Parse(spellTokens[2]);
  42.  
  43.                 SpellIsCasted(currentSpell, spellRow, spellCol);
  44.                 PlayerTurn();
  45.                 PlayerTakesDamage();
  46.                 DamageDissipates(currentSpell, spellRow, spellCol);
  47.             }
  48.  
  49.             Console.Write($"Heigan: ");
  50.             if (heigansHitPoints > 0)
  51.             {
  52.                 Console.WriteLine($"{heigansHitPoints:f2}");
  53.             }
  54.             else
  55.             {
  56.                 Console.WriteLine("Defeated!");
  57.             }
  58.  
  59.             Console.Write("Player: ");
  60.             if (player.IsAlive)
  61.             {
  62.                 Console.WriteLine(player.HitPoints);
  63.             }
  64.             else
  65.             {
  66.                 Console.WriteLine($"Killed by {player.KilledBy}");
  67.             }
  68.  
  69.             Console.WriteLine($"Final position: {player.Row}, {player.Col}");
  70.         }
  71.  
  72.         private static void DamageFromLastTurn()
  73.         {
  74.             if (player.IsHitFromCloud)
  75.             {
  76.                 player.HitPoints -= 3500;
  77.                 if (player.HitPoints <= 0)
  78.                 {
  79.                     player.IsAlive = false;
  80.                     player.KilledBy = "Plague Cloud";
  81.                 }
  82.                 player.IsHitFromCloud = false;
  83.             }
  84.         }
  85.  
  86.         public static void DamageDissipates(string spell, int spellRow, int spellCol)
  87.         {
  88.             for (int row = 0; row < chamber.GetLength(0); row++)
  89.             {
  90.                 for (int col = 0; col < chamber.GetLength(1); col++)
  91.                 {
  92.                     if (chamber[row, col, 1] > 0)
  93.                     {
  94.                         chamber[row, col, 1] -= 3500;
  95.                     }
  96.                 }
  97.             }
  98.  
  99.             try
  100.             {
  101.                 for (int row = spellRow - 1; row <= spellRow + 1; row++)
  102.                 {
  103.                     for (int col = spellCol - 1; col <= spellCol + 1; col++)
  104.                     {
  105.                         if (spell == "Cloud")
  106.                         {
  107.                             chamber[row, col, 1] += 3500;
  108.                             chamber[row, col, 0] = 0;
  109.                         }
  110.                         else
  111.                         {
  112.                             chamber[row, col, 2] = 0;
  113.                         }
  114.                     }
  115.                 }
  116.             }
  117.             catch { }
  118.         }
  119.  
  120.         public static void PlayerTakesDamage()
  121.         {
  122.             player.HitPoints -= chamber[player.Row, player.Col, 0];
  123.             if (chamber[player.Row, player.Col, 0] > 0)
  124.             {
  125.                 player.IsHitFromCloud = true;
  126.             }
  127.  
  128.             if (player.HitPoints <= 0)
  129.             {
  130.                 player.IsAlive = false;
  131.                 player.KilledBy = "Plague Cloud";
  132.                 return;
  133.             }
  134.  
  135.             player.HitPoints -= chamber[player.Row, player.Col, 2];
  136.  
  137.             if (player.HitPoints < 0)
  138.             {
  139.                 player.IsAlive = false;
  140.                 player.KilledBy = "Eruption";
  141.             }
  142.         }
  143.  
  144.         public static void PlayerTurn()
  145.         {
  146.             var playerIsUnderAttack = chamber[player.Row, player.Col, 0] > 0
  147.                 || chamber[player.Row, player.Col, 2] > 0;
  148.  
  149.             if (playerIsUnderAttack)
  150.             {
  151.                 if (player.Row != 0
  152.                     && chamber[player.Row - 1, player.Col, 0] == 0
  153.                     && chamber[player.Row - 1, player.Col, 2] == 0)
  154.                 {
  155.                     player.Row--;
  156.                 }
  157.                 else if (player.Col != chamber.GetLength(1) - 1
  158.                     && chamber[player.Row, player.Col + 1, 0] == 0
  159.                     && chamber[player.Row, player.Col + 1, 2] == 0)
  160.                 {
  161.                     player.Col++;
  162.                 }
  163.                 else if (player.Row != chamber.GetLength(0) - 1
  164.                    && chamber[player.Row + 1, player.Col, 0] == 0
  165.                    && chamber[player.Row + 1, player.Col, 2] == 0)
  166.                 {
  167.                     player.Row++;
  168.                 }
  169.                 else if (player.Col != 0
  170.                    && chamber[player.Row, player.Col - 1, 0] == 0
  171.                    && chamber[player.Row, player.Col - 1, 2] == 0)
  172.                 {
  173.                     player.Col--;
  174.                 }
  175.             }
  176.         }
  177.  
  178.         public static void SpellIsCasted(string currentSpell, int spellRow, int spellCol)
  179.         {
  180.             if (currentSpell == "Cloud")
  181.             {
  182.                 try
  183.                 {
  184.                     for (int row = spellRow - 1; row <= spellRow + 1; row++)
  185.                     {
  186.                         for (int col = spellCol - 1; col <= spellCol + 1; col++)
  187.                         {
  188.                             chamber[row, col, 0] += 3500;
  189.                         }
  190.                     }
  191.                 }
  192.                 catch { }
  193.             }
  194.             else if (currentSpell == "Eruption")
  195.             {
  196.                 try
  197.                 {
  198.                     for (int row = spellRow - 1; row <= spellRow + 1; row++)
  199.                     {
  200.                         for (int col = spellCol - 1; col <= spellCol + 1; col++)
  201.                         {
  202.                             chamber[row, col, 2] = 6000;
  203.                         }
  204.                     }
  205.                 }
  206.                 catch { }
  207.             }
  208.         }
  209.     }
  210.  
  211.     public class Player
  212.     {
  213.         public int Row { get; set; }
  214.         public int Col { get; set; }
  215.         public bool IsAlive { get; set; }
  216.         public int HitPoints { get; set; }
  217.         public double Damage { get; set; }
  218.         public string KilledBy { get; set; }
  219.         public bool IsHitFromCloud { get; set; }
  220.     }
  221. }
Advertisement
Add Comment
Please, Sign In to add comment