LukasRiedel

Untitled

Mar 14th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.59 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 PriseraVBludisti
  8. {
  9.     class PozicePrisery
  10.     {
  11.         public int X;
  12.         public int Y;
  13.         public char smer;
  14.  
  15.         public PozicePrisery(int X, int Y, char smer)
  16.         {
  17.             this.X = X;
  18.             this.Y = Y;
  19.             this.smer = smer;
  20.         }
  21.     }
  22.  
  23.     class Bludiste
  24.     {
  25.         public bool[,] bludiste;
  26.         private int sirka, vyska;
  27.         public PozicePrisery pozice;
  28.         public Bludiste()
  29.         {
  30.             Int32.TryParse(Console.ReadLine(), out sirka);
  31.             Int32.TryParse(Console.ReadLine(), out vyska);
  32.             bludiste = new bool[sirka, vyska];
  33.             for (int i = 0; i < vyska; i++)
  34.             {
  35.                 for (int j = 0; j < sirka; j++)
  36.                 {
  37.                     char temp = (char)Console.Read();
  38.                     if (temp == 'X')
  39.                         bludiste[j, i] = true;
  40.                     else if (temp == '.')
  41.                         bludiste[j, i] = false;
  42.                     else
  43.                     {
  44.                         bludiste[j, i] = false;
  45.                         pozice = new PozicePrisery(j, i, temp);
  46.                     }
  47.                 }
  48.  
  49.                 Console.Read(); // UNIX
  50.                 Console.Read();
  51.             }
  52.         }
  53.         public void Vypis()
  54.         {
  55.             for (int i = 0; i < vyska; i++)
  56.             {
  57.                 for (int j = 0; j < sirka; j++)
  58.                 {
  59.                     if (bludiste[j, i])
  60.                         Console.Write('X');
  61.                     else if (pozice.X == j && pozice.Y == i)
  62.                         Console.Write(pozice.smer);
  63.                     else
  64.                         Console.Write('.');
  65.                 }
  66.                 Console.WriteLine();
  67.             }
  68.             Console.WriteLine();
  69.         }
  70.         public void Aktualizuj(Prisera prisera)
  71.         {
  72.             pozice.X = prisera.bludiste.pozice.X;
  73.             pozice.Y = prisera.bludiste.pozice.Y;
  74.             pozice.smer = prisera.bludiste.pozice.smer;
  75.         }
  76.     }
  77.  
  78.     class Prisera
  79.     {
  80.         public Bludiste bludiste;
  81.         public Prisera (Bludiste bludiste)
  82.         {
  83.             this.bludiste = bludiste;
  84.         }
  85.         private bool JeVpravoZed(int X, int Y)
  86.         {
  87.             switch (bludiste.pozice.smer)
  88.             {
  89.                 case '>':
  90.                     if (bludiste.bludiste[X, Y + 1])
  91.                         return true;
  92.                     else
  93.                         return false;
  94.                 case '<':
  95.                     if (bludiste.bludiste[X, Y - 1])
  96.                         return true;
  97.                     else
  98.                         return false;
  99.                 case '^':
  100.                     if (bludiste.bludiste[X + 1, Y])
  101.                         return true;
  102.                     else
  103.                         return false;
  104.                 case 'v':
  105.                     if (bludiste.bludiste[X - 1, Y])
  106.                         return true;
  107.                     else
  108.                         return false;
  109.                 default:
  110.                     throw new ArgumentException("Špatně zadaná pozice příšery");
  111.             }
  112.         }
  113.         private bool JePredeMnouZed(int X, int Y)
  114.         {
  115.             switch (bludiste.pozice.smer)
  116.             {
  117.                 case '>':
  118.                     if (bludiste.bludiste[X + 1, Y])
  119.                         return true;
  120.                     else
  121.                         return false;
  122.                 case '<':
  123.                     if (bludiste.bludiste[X - 1, Y])
  124.                         return true;
  125.                     else
  126.                         return false;
  127.                 case '^':
  128.                     if (bludiste.bludiste[X, Y - 1])
  129.                         return true;
  130.                     else
  131.                         return false;
  132.                 case 'v':
  133.                     if (bludiste.bludiste[X, Y + 1])
  134.                         return true;
  135.                     else
  136.                         return false;
  137.                 default:
  138.                     throw new ArgumentException("Špatně zadaná pozice příšery");
  139.             }
  140.         }
  141.         private void ZmenitSmer(int X, int Y)
  142.         {
  143.         }
  144.         private void Popojdi()
  145.         {
  146.             switch (bludiste.pozice.smer)
  147.             {
  148.                 case '>':
  149.                     bludiste.pozice.X++;
  150.                     break;
  151.                 case '<':
  152.                     bludiste.pozice.X--;
  153.                     break;
  154.                 case '^':
  155.                     bludiste.pozice.Y--;
  156.                     break;
  157.                 case 'v':
  158.                     bludiste.pozice.Y++;
  159.                     break;
  160.                 default:
  161.                     throw new ArgumentException("Špatné zadání směru příšery");
  162.             }
  163.         }
  164.         public void Krok(int X, int Y)
  165.         {
  166.             if (!JeVpravoZed(X, Y) || JePredeMnouZed(X, Y))
  167.                 ZmenitSmer(X, Y);
  168.             else
  169.                 Popojdi();
  170.         }
  171.     }
  172.     class Program
  173.     {
  174.         static void Main(string[] args)
  175.         {
  176.             Bludiste bludiste = new Bludiste();
  177.             Prisera prisera = new Prisera(bludiste);
  178.             for (int i = 0; i < 20; i++)
  179.             {
  180.                 prisera.Krok(bludiste.pozice.X, bludiste.pozice.Y);
  181.                 bludiste.Aktualizuj(prisera);
  182.                 bludiste.Vypis();
  183.             }
  184.         }
  185.     }
  186. }
Advertisement
Add Comment
Please, Sign In to add comment