Guest User

https://ehazi.hu/q/22111

a guest
Mar 6th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.96 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace P00
  8. {
  9.     class Program
  10.     {
  11.         // m - a táblázat mérete - változtatható
  12.         static int m = 15;
  13.  
  14.         // arány - azt határozza meg, hogy mennyi legyen a falmennyiség (0 - full fal, m*m-2 vagy -1 üresség , elfogadható 2.4)
  15.         static double arany = 2.4;
  16.         static int[,] T = new int[m, m];
  17.         static int[,] H = new int[m, m];
  18.         static int Aoszlop, Asor, Boszlop, Bsor;
  19.  
  20.         static void beallitasok()
  21.         {
  22.             Random vszam = new Random();
  23.             int poszlop, psor;
  24.             for (int sor = 0; sor < m; sor++)
  25.             {
  26.                 for (int oszlop = 0; oszlop < m; oszlop++)
  27.                 {
  28.                     T[oszlop, sor] = 0;
  29.                     H[oszlop, sor] = 0;
  30.                 }
  31.             }
  32.  
  33.  
  34.             //
  35.             for (int db = 0; db <= m*m/arany-1; db++)
  36.             {
  37.                 poszlop = vszam.Next(m); psor = vszam.Next(m);
  38.                 while (T[poszlop, psor] != 0)
  39.                 {
  40.                     poszlop = vszam.Next(m); psor = vszam.Next(m);
  41.                 }
  42.                 T[poszlop, psor] = 1;
  43.             }
  44.  
  45.             Aoszlop = vszam.Next(m); Asor = vszam.Next(m);
  46.             H[Aoszlop, Asor] = 1;
  47.             poszlop = vszam.Next(m); psor = vszam.Next(m);
  48.             while (poszlop==Aoszlop && psor==Asor)
  49.             {
  50.                 poszlop = vszam.Next(m); psor = vszam.Next(m);
  51.             }
  52.             Boszlop = poszlop; Bsor = psor;
  53.             T[Aoszlop, Asor] = 0;
  54.             T[Boszlop, Bsor] = 0;
  55.         }
  56.  
  57.         static void labkep()
  58.         {
  59.             for (int sor = 0; sor < m; sor++)
  60.             {
  61.                 for (int oszlop = 0; oszlop < m; oszlop++)
  62.                 {
  63.                     if (T[oszlop, sor]==0)
  64.                     {
  65.                         Console.Write("  ");
  66.                     }
  67.                     else
  68.                     {
  69.                         Console.Write("██");
  70.                     }
  71.                 }
  72.                 Console.WriteLine();
  73.             }
  74.             Console.ForegroundColor = ConsoleColor.Yellow;
  75.             Console.SetCursorPosition(Aoszlop * 2 , Asor); Console.Write(" A");
  76.             Console.SetCursorPosition(Boszlop * 2 , Bsor); Console.Write(" B");
  77.             Console.SetCursorPosition(0, m+1);
  78.             Console.ForegroundColor = ConsoleColor.Gray;
  79.         }
  80.  
  81.         static void feldolgozas()
  82.         {
  83.  
  84.             int R = 0;
  85.             bool rak = true;
  86.  
  87.             while (rak) {
  88.                 R++;
  89.                 rak = false;
  90.                 for (int sor = 0; sor < m; sor++)
  91.                 {
  92.                     for (int oszlop = 0; oszlop < m; oszlop++)
  93.                     {
  94.                        
  95.                         // fenn
  96.                         if (sor - 1 >= 0 && H[oszlop, sor] == R && T[oszlop, sor - 1] == 0 && H[oszlop, sor - 1] == 0)
  97.                         {
  98.                             H[oszlop, sor - 1] = R + 1;
  99.                             rak = true;
  100.                         }
  101.                         // lenn
  102.                         if (sor + 1 < m && H[oszlop, sor] == R && T[oszlop, sor + 1] == 0 && H[oszlop, sor + 1] == 0)
  103.                         {
  104.                             H[oszlop, sor + 1] = R + 1;
  105.                             rak = true;
  106.                         }
  107.                         // balra
  108.                         if (oszlop - 1 >= 0 && H[oszlop, sor] == R && T[oszlop - 1, sor] == 0 && H[oszlop - 1, sor] == 0)
  109.                         {
  110.                             H[oszlop - 1, sor] = R + 1;
  111.                             rak = true;
  112.                         }
  113.                         // jobbra
  114.                         if (oszlop + 1 < m && H[oszlop, sor] == R && T[oszlop + 1, sor] == 0 && H[oszlop + 1, sor] == 0)
  115.                         {
  116.                             H[oszlop + 1, sor] = R + 1;
  117.                             rak = true;
  118.                         }
  119.                     }
  120.                 }
  121.             }
  122.            
  123.         }
  124.  
  125.  
  126.         static void lab2kep()
  127.         {
  128.             for (int sor = 0; sor < m; sor++)
  129.             {
  130.                 for (int oszlop = 0; oszlop < m; oszlop++)
  131.                 {
  132.                     if (H[oszlop, sor] > 0)
  133.                     {
  134.                         Console.SetCursorPosition(oszlop * 2, sor + m + 1); Console.Write("{0,2}",H[oszlop,  sor]);
  135.                     }
  136.                     else
  137.                     {
  138.                         if (T[oszlop, sor]==0)
  139.                         {
  140.                             Console.SetCursorPosition(oszlop * 2, sor + m + 1); Console.Write("  ");
  141.                         }
  142.                         else
  143.                         {
  144.                             Console.SetCursorPosition(oszlop * 2, sor + m + 1); Console.Write("██");
  145.                         }
  146.                     }
  147.                 }
  148.             }
  149.  
  150.  
  151.             Console.ForegroundColor = ConsoleColor.Yellow;
  152.             Console.BackgroundColor = ConsoleColor.Red;
  153.             Console.SetCursorPosition(Aoszlop * 2, Asor + m + 1); Console.Write(" 1");
  154.             Console.SetCursorPosition(Boszlop * 2, Bsor + m + 1); Console.Write(" {0}",H[Boszlop, Bsor]);
  155.             Console.BackgroundColor = ConsoleColor.Black;
  156.             Console.SetCursorPosition(0, 2 * m + 2);
  157.         }
  158.  
  159.  
  160.  
  161.         static void Main(string[] args)
  162.         {
  163.             beallitasok();
  164.             labkep();
  165.             feldolgozas();
  166.             lab2kep();
  167.             if (H[Boszlop, Bsor] != 0)
  168.             {
  169.                 Console.WriteLine("A B pozíció elérhető, {0} lépéssel", H[Boszlop, Bsor] - 1);
  170.             }
  171.             else
  172.             {
  173.                 Console.WriteLine("A B pozíció nem érhető el...");
  174.             }
  175.             Console.ReadKey();
  176.         }
  177.     }
  178. }
Add Comment
Please, Sign In to add comment