Advertisement
Danny_Berova

fixedDangerousFloor

Feb 7th, 2018
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.56 KB | None | 0 0
  1. namespace DangerousFloor
  2. {
  3.     using System;
  4.     using System.Linq;
  5.     public class Program
  6.     {
  7.         public static void Main(string[] args)
  8.         {
  9.             var gameboard = new char[8, 8];
  10.  
  11.             for (int rows = 0; rows < gameboard.GetLength(0); rows++)
  12.             {
  13.                 var input = Console.ReadLine()
  14.                     .Split(new char[] { ',' }, StringSplitOptions.None)
  15.                     .Select(char.Parse)
  16.                     .ToArray();
  17.  
  18.  
  19.                 for (int cols = 0; cols < gameboard.GetLength(1); cols++)
  20.                 {
  21.                     gameboard[rows, cols] = input[cols];
  22.                 }
  23.             }
  24.  
  25.             var command = Console.ReadLine();
  26.             while (command != "END")
  27.             {
  28.                 var piece = char.Parse(command.Substring(0, 1));
  29.                 var pieceRow = int.Parse(command.Substring(1, 1));
  30.                 var pieceCol = int.Parse(command.Substring(2, 1));
  31.                 var rowToMove = int.Parse(command.Substring(4, 1));
  32.                 var colToMove = int.Parse(command.Substring(5, 1));
  33.  
  34.                 if (gameboard[pieceRow, pieceCol] == piece)
  35.                 {
  36.                     var isValidMove = TryMove(gameboard, piece, pieceRow, pieceCol, rowToMove, colToMove);
  37.                     if (isValidMove)
  38.                     {
  39.                         if (rowToMove >= 0 && rowToMove < gameboard.GetLength(0) && colToMove >= 0 && colToMove < gameboard.GetLength(1))
  40.                         {
  41.                             gameboard[pieceRow, pieceCol] = 'x';
  42.                             gameboard[rowToMove, colToMove] = piece;
  43.                         }
  44.                         else
  45.                         {
  46.                             Console.WriteLine("Move go out of board!");
  47.                         }
  48.                     }
  49.                     else
  50.                     {
  51.                         Console.WriteLine("Invalid move!");
  52.                     }
  53.  
  54.                 }
  55.                 else
  56.                 {
  57.                     Console.WriteLine("There is no such a piece!");
  58.                 }
  59.                 command = Console.ReadLine();
  60.             }
  61.         }
  62.  
  63.         public static bool TryMove(char[,] matrix, char piece, int pieceRow, int pieceCol, int rowToMove, int colToMove)
  64.         {
  65.  
  66.             switch (piece)
  67.             {
  68.  
  69.                 case 'K':
  70.                     if ((rowToMove == pieceRow - 1 && colToMove == pieceCol - 1)
  71.                                    || (rowToMove == pieceRow - 1 && colToMove == pieceCol)
  72.                                    || (rowToMove == pieceRow - 1 && colToMove == pieceCol + 1)
  73.                                    || (rowToMove == pieceRow && colToMove == pieceCol + 1)
  74.                                    || (rowToMove == pieceRow + 1 && colToMove == pieceCol + 1)
  75.                                    || (rowToMove == pieceRow + 1 && colToMove == pieceCol)
  76.                                    || (rowToMove == pieceRow + 1 && colToMove == pieceCol - 1)
  77.                                     || (rowToMove == pieceRow && colToMove == pieceCol - 1))
  78.                     {
  79.                         return true;
  80.                     }
  81.                     return false;
  82.  
  83.                 case 'R':
  84.  
  85.                     if (rowToMove == pieceRow || colToMove == pieceCol)
  86.                     {
  87.                         return true;
  88.                     }
  89.                     return false;
  90.  
  91.                 case 'B':
  92.  
  93.                     if (rowToMove != pieceRow && colToMove != pieceCol)
  94.                     {
  95.                         return true;
  96.                     }
  97.                     return false;
  98.  
  99.                 case 'Q':
  100.  
  101.                     //if (rowToMove != pieceRow && colToMove != pieceCol)
  102.                     //{
  103.                     //    return true;
  104.                     //}
  105.                     if (rowToMove == pieceRow || colToMove == pieceCol)
  106.                     {
  107.                         return true;
  108.                     }
  109.                     else if (Math.Abs(pieceRow - rowToMove) == Math.Abs(pieceCol - colToMove))
  110.                     {
  111.                         return true;
  112.                     }
  113.                     return false;
  114.  
  115.                 case 'P':
  116.                     if (pieceRow - 1 == rowToMove && colToMove == pieceCol)
  117.                     {
  118.                         return true;
  119.                     }
  120.                     return false;
  121.  
  122.                 default:
  123.                     break;
  124.             }
  125.             return false;
  126.         }
  127.     }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement