Venciity

[Jumpstart C#] Multidimensional-Arrays 07-Chess

Mar 5th, 2014
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.51 KB | None | 0 0
  1. /*Върху шахматна дъска NxN са фиксирани две полета, за­да­дени с коор­динатите си P1,Q1 и P2,Q2.
  2.  * Посочете пътя за придвижване на цар от пър­во­то зададено поле до второто поле с ми­ни­ма­лен брой хо­до­ве.
  3.  * За целта използвайте матрица като обходените полета обозначите в матрицата с 1 а останалите с 0. */
  4.  
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10.  
  11. namespace _07_Chess
  12. {
  13.     class Program
  14.     {
  15.         static void Main(string[] args)
  16.         {
  17.             int n = 8;
  18.             int p1 = 2;
  19.             int q1 = 2;
  20.             int p2 = 7;
  21.             int q2 = 7;
  22.  
  23.             // 0 0 0 0 0 0 0 0
  24.             // 0 0 0 0 0 0 0 0
  25.             // 0 0 0 0 0 0 0 0
  26.             // 0 0 0 0 0 0 0 0
  27.             // 0 0 0 0 0 0 0 0
  28.             // 0 0 0 0 0 0 0 0
  29.             // 0 0 0 0 0 0 0 0
  30.             // 0 0 0 0 0 0 0 0
  31.  
  32.             int[,] m = new int[n, n];
  33.             m[p1, q1] = 1;
  34.             m[p2, q2] = 1;
  35.  
  36.             int distanceX = Math.Abs(p1 - p2);
  37.             int distanceY = Math.Abs(q1 - q2);
  38.  
  39.             int moveDirX = Math.Sign(p2 - p1);
  40.             int moveDirY = Math.Sign(q2 - q1);
  41.  
  42.             int x = p1;
  43.             int y = q1;
  44.  
  45.             if (distanceX <= distanceY)
  46.             {
  47.                 while (x != p2)
  48.                 {
  49.                     m[x, y] = 1;
  50.                     x += moveDirX;
  51.                     y +=moveDirY;
  52.                 }
  53.  
  54.                 while (y != q2)
  55.                 {
  56.                     m[x, y] = 1;
  57.                     y += moveDirY;
  58.                 }
  59.             }
  60.             else
  61.             {
  62.                 while (y != q2)
  63.                 {
  64.                     m[x, y] = 1;
  65.                     x += moveDirX;
  66.                     y += moveDirY;
  67.                 }
  68.  
  69.                 while (x != p2)
  70.                 {
  71.                     m[x, y] = 1;
  72.                     x += moveDirX;
  73.                 }
  74.             }
  75.  
  76.             for (int row = 0; row < m.GetLength(1); row++)
  77.             {
  78.                 for (int col = 0; col < m.GetLength(0); col++)
  79.                 {
  80.                     Console.Write(m[col, row] + " ");
  81.                 }
  82.                 Console.WriteLine();
  83.             }
  84.         }
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment