Advertisement
mdamyanova

Untitled

Jun 5th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.46 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3.  
  4. namespace _08.RadioactiveBunnies
  5. {
  6.     public class RadioactiveBunnies
  7.     {
  8.         public static void Main()
  9.         {
  10.             var coordinates =
  11.                 Console.ReadLine().Split(new[] {' ', '\t'}, StringSplitOptions.RemoveEmptyEntries).ToArray();
  12.             var rows = int.Parse(coordinates[0]);
  13.             var cols = int.Parse(coordinates[1]);
  14.  
  15.             var matrix = new char[rows, cols];
  16.  
  17.             var playerRow = -1;
  18.             var playerCol = -1;
  19.  
  20.             for (int row = 0; row < rows; row++)
  21.             {
  22.                 var line = Console.ReadLine();
  23.                 var playerColumn = line.IndexOf('P');
  24.  
  25.                 if (playerColumn != -1)
  26.                 {
  27.                     playerCol = playerColumn;
  28.                     playerRow = row;
  29.                 }
  30.  
  31.                 var elements = line.ToCharArray();
  32.                 for (int col = 0; col < elements.Length; col++)
  33.                 {
  34.                     matrix[row, col] = elements[col];
  35.                 }                
  36.             }
  37.  
  38.             var commands = Console.ReadLine().ToCharArray();
  39.             bool hasWon = false;
  40.             bool hasDied = false;
  41.  
  42.             for (int i = 0; i < commands.Length; i++)
  43.             {
  44.                 var currCommand = commands[i];
  45.  
  46.                 switch (currCommand)
  47.                 {
  48.                     case 'U':
  49.                         if (playerRow == 0)
  50.                         {
  51.                             hasWon = true;
  52.                             matrix[playerRow, playerCol] = '.';
  53.                         }
  54.                         else
  55.                         {
  56.                             if (matrix[playerRow - 1, playerCol] == 'B')
  57.                             {
  58.                                 hasDied = true;
  59.                             }
  60.                             else
  61.                             {
  62.                                 matrix[playerRow - 1, playerCol] = 'P';
  63.                                 matrix[playerRow, playerCol] = '.';
  64.                             }
  65.  
  66.                             playerRow--;
  67.                         }
  68.                         break;
  69.                     case 'D':
  70.                         if (playerRow == rows - 1)
  71.                         {
  72.                             hasWon = true;
  73.                             matrix[playerRow, playerCol] = '.';
  74.                         }
  75.                         else
  76.                         {
  77.                             if (matrix[playerRow + 1, playerCol] == 'B')
  78.                             {
  79.                                 hasDied = true;
  80.                             }
  81.                             else
  82.                             {
  83.                                 matrix[playerRow + 1, playerCol] = 'P';
  84.                                 matrix[playerRow, playerCol] = '.';
  85.                             }
  86.  
  87.                             playerRow++;
  88.                         }
  89.                         break;
  90.                     case 'L':
  91.                         if (playerCol == 0)
  92.                         {
  93.                             hasWon = true;
  94.                             matrix[playerRow, playerCol] = '.';
  95.                         }
  96.                         else
  97.                         {
  98.                             if (matrix[playerRow, playerCol - 1] == 'B')
  99.                             {
  100.                                 hasDied = true;
  101.                             }
  102.                             else
  103.                             {
  104.                                 matrix[playerRow, playerCol - 1] = 'P';
  105.                                 matrix[playerRow, playerCol] = '.';
  106.                             }
  107.  
  108.                             playerCol--;
  109.                         }
  110.                         break;
  111.                     case 'R':
  112.                         if (playerCol == cols - 1)
  113.                         {
  114.                             hasWon = true;
  115.                             matrix[playerRow, playerCol] = '.';
  116.                         }
  117.                         else
  118.                         {
  119.                             if (matrix[playerRow, playerCol + 1] == 'B')
  120.                             {
  121.                                 hasDied = true;
  122.                             }
  123.                             else
  124.                             {
  125.                                 matrix[playerRow, playerCol + 1] = 'P';
  126.                                 matrix[playerRow, playerCol] = '.';
  127.                             }
  128.  
  129.                             playerCol++;
  130.                         }
  131.                         break;
  132.                 }
  133.  
  134.                 var tempMatrix = new char[rows, cols];
  135.  
  136.                 for (int row = 0; row < rows; row++)
  137.                 {
  138.                     for (int col = 0; col < cols; col++)
  139.                     {
  140.                         tempMatrix[row, col] = matrix[row, col];
  141.                     }
  142.                 }
  143.  
  144.                 for (int row = 0; row < rows; row++)
  145.                 {
  146.                     for (int col = 0; col < cols; col++)
  147.                     {
  148.                         if (matrix[row, col] == 'B')
  149.                         {
  150.                             if (row > 0)
  151.                             {
  152.                                 if (matrix[row - 1, col] == 'P')
  153.                                 {
  154.                                     hasDied = true;
  155.                                 }
  156.  
  157.                                 tempMatrix[row - 1, col] = 'B';
  158.                             }
  159.                             if (row < rows - 1)
  160.                             {
  161.                                 if (matrix[row + 1, col] == 'P')
  162.                                 {
  163.                                     hasDied = true;
  164.                                 }
  165.  
  166.                                 tempMatrix[row + 1, col] = 'B';
  167.                             }
  168.                             if (col > 0)
  169.                             {
  170.                                 if (matrix[row, col - 1] == 'P')
  171.                                 {
  172.                                     hasDied = true;
  173.                                 }
  174.  
  175.                                 tempMatrix[row, col - 1] = 'B';
  176.                             }
  177.                             if (col < cols - 1)
  178.                             {
  179.                                 if (matrix[row, col + 1] == 'P')
  180.                                 {
  181.                                     hasDied = true;
  182.                                 }
  183.  
  184.                                 tempMatrix[row, col + 1] = 'B';
  185.                             }
  186.                         }
  187.                     }
  188.                 }
  189.  
  190.                 matrix = tempMatrix;
  191.  
  192.                 if (hasWon)
  193.                 {
  194.                     hasDied = false;
  195.                     break;
  196.                 }
  197.                 if (hasDied)
  198.                 {
  199.                     break;
  200.                 }
  201.             }
  202.  
  203.             for (int row = 0; row < rows; row++)
  204.             {
  205.                 for (int col = 0; col < cols; col++)
  206.                 {
  207.                     Console.Write(matrix[row, col]);
  208.                 }
  209.  
  210.                 Console.WriteLine();
  211.             }
  212.  
  213.             if (hasWon)
  214.             {
  215.                 Console.WriteLine($"won: {playerRow} {playerCol}");
  216.             }
  217.             else
  218.             {
  219.                 Console.WriteLine($"dead: {playerRow} {playerCol}");
  220.             }
  221.         }
  222.     }
  223. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement