Advertisement
vvsvvs

Untitled

May 19th, 2022
625
136 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace Miner
  6. {
  7.     class Miner
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             int n = int.Parse(Console.ReadLine());
  12.  
  13.             char[,] mineGalleries = new char[n, n];
  14.  
  15.             Queue<string> commands = new Queue<string>(Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries));
  16.  
  17.             int countCoal = 0;
  18.             int minerRow = 0;
  19.             int minerCol = 0;
  20.  
  21.             for (int row = 0; row < mineGalleries.GetLength(0); row++)
  22.             {
  23.                 char[] temp = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries).Select(char.Parse).ToArray();
  24.                
  25.                 for (int col = 0; col < mineGalleries.GetLength(1); col++)
  26.                 {
  27.                     mineGalleries[row, col] = temp[col];
  28.  
  29.                     if (temp[col].Equals('c'))
  30.                     {
  31.                         countCoal++;
  32.                     }
  33.  
  34.                     if (temp[col].Equals('s'))
  35.                     {
  36.                         minerRow = row;
  37.                         minerCol = col;
  38.                     }
  39.  
  40.                 }
  41.             }
  42.  
  43.             int collectedCoal = 0;
  44.             bool isExitLoop = false;
  45.             bool isGameOver = false;
  46.  
  47.             while ((commands.Count > 0) && (!isExitLoop))
  48.             {
  49.                 int colStep = 0;
  50.                 int rowStep = 0;
  51.  
  52.                 switch (commands.Dequeue().ToLower())
  53.                 {
  54.                     case "left":
  55.                         colStep--;
  56.                         break;
  57.                     case "right":
  58.                         colStep++;
  59.                         break;
  60.                     case "up":
  61.                         rowStep--;
  62.                         break;
  63.                     case "down":
  64.                         rowStep++;
  65.                         break;
  66.                     default:
  67.                         break;
  68.                 }
  69.  
  70.                 if (ValidIndex(mineGalleries.GetLength(0), mineGalleries.GetLength(1), minerRow + rowStep, minerCol + colStep))
  71.                 {
  72.                     mineGalleries[minerRow, minerCol] = '*';
  73.                     if (mineGalleries[minerRow + rowStep, minerCol + colStep].Equals('c'))
  74.                     {
  75.                         collectedCoal++;
  76.                         countCoal--;
  77.                     }
  78.  
  79.                     if (mineGalleries[minerRow + rowStep, minerCol + colStep].Equals('e'))
  80.                     {
  81.                         isGameOver = true;
  82.                         isExitLoop = true;
  83.                     }
  84.  
  85.                     if (countCoal.Equals(0))
  86.                     {
  87.                         isExitLoop = true;
  88.                     }
  89.  
  90.                     minerRow += rowStep;
  91.                     minerCol += colStep;
  92.  
  93.                     mineGalleries[minerRow, minerCol] = 's';
  94.                 }
  95.             }// while (commands.Count > 0)
  96.            
  97.             if (countCoal.Equals(0))
  98.             {
  99.                 Console.WriteLine($"You collected all coals! ({minerRow}, {minerCol})");
  100.             }
  101.             else if (isGameOver)
  102.             {
  103.                 Console.WriteLine($"Game over! ({minerRow}, {minerCol})");
  104.             }
  105.             else
  106.             {
  107.                 Console.WriteLine($"{countCoal} coals left. ({minerRow}, {minerCol})");
  108.             }          
  109.         }// void Main(string[] args)
  110.  
  111.         static bool ValidIndex(int maxRow, int maxCol, int newRow, int newCol)
  112.         {
  113.             bool result = ((newRow >= 0) && (newCol >= 0));
  114.             result = ((result) && (newRow < maxRow) && (newCol < maxCol));
  115.  
  116.             return result;
  117.         }// bool ValidIndex(int maxRow, int maxCol, int newRow, int newCol)
  118.     }
  119. }
Advertisement
RAW Paste Data Copied
Advertisement