Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace PriseraVBludisti
- {
- class PozicePrisery
- {
- public int X;
- public int Y;
- public char smer;
- public PozicePrisery(int X, int Y, char smer)
- {
- this.X = X;
- this.Y = Y;
- this.smer = smer;
- }
- }
- class Bludiste
- {
- public bool[,] bludiste;
- private int sirka, vyska;
- public PozicePrisery pozice;
- public Bludiste()
- {
- Int32.TryParse(Console.ReadLine(), out sirka);
- Int32.TryParse(Console.ReadLine(), out vyska);
- bludiste = new bool[sirka, vyska];
- for (int i = 0; i < vyska; i++)
- {
- for (int j = 0; j < sirka; j++)
- {
- char temp = (char)Console.Read();
- if (temp == 'X')
- bludiste[j, i] = true;
- else if (temp == '.')
- bludiste[j, i] = false;
- else
- {
- bludiste[j, i] = false;
- pozice = new PozicePrisery(j, i, temp);
- }
- }
- Console.Read(); // UNIX
- Console.Read();
- }
- }
- public void Vypis()
- {
- for (int i = 0; i < vyska; i++)
- {
- for (int j = 0; j < sirka; j++)
- {
- if (bludiste[j, i])
- Console.Write('X');
- else if (pozice.X == j && pozice.Y == i)
- Console.Write(pozice.smer);
- else
- Console.Write('.');
- }
- Console.WriteLine();
- }
- Console.WriteLine();
- }
- public void Aktualizuj(Prisera prisera)
- {
- pozice.X = prisera.bludiste.pozice.X;
- pozice.Y = prisera.bludiste.pozice.Y;
- pozice.smer = prisera.bludiste.pozice.smer;
- }
- }
- class Prisera
- {
- public Bludiste bludiste;
- public Prisera (Bludiste bludiste)
- {
- this.bludiste = bludiste;
- }
- private bool JeVpravoZed(int X, int Y)
- {
- switch (bludiste.pozice.smer)
- {
- case '>':
- if (bludiste.bludiste[X, Y + 1])
- return true;
- else
- return false;
- case '<':
- if (bludiste.bludiste[X, Y - 1])
- return true;
- else
- return false;
- case '^':
- if (bludiste.bludiste[X + 1, Y])
- return true;
- else
- return false;
- case 'v':
- if (bludiste.bludiste[X - 1, Y])
- return true;
- else
- return false;
- default:
- throw new ArgumentException("Špatně zadaná pozice příšery");
- }
- }
- private bool JePredeMnouZed(int X, int Y)
- {
- switch (bludiste.pozice.smer)
- {
- case '>':
- if (bludiste.bludiste[X + 1, Y])
- return true;
- else
- return false;
- case '<':
- if (bludiste.bludiste[X - 1, Y])
- return true;
- else
- return false;
- case '^':
- if (bludiste.bludiste[X, Y - 1])
- return true;
- else
- return false;
- case 'v':
- if (bludiste.bludiste[X, Y + 1])
- return true;
- else
- return false;
- default:
- throw new ArgumentException("Špatně zadaná pozice příšery");
- }
- }
- private void ZmenitSmer(int X, int Y)
- {
- }
- private void Popojdi()
- {
- switch (bludiste.pozice.smer)
- {
- case '>':
- bludiste.pozice.X++;
- break;
- case '<':
- bludiste.pozice.X--;
- break;
- case '^':
- bludiste.pozice.Y--;
- break;
- case 'v':
- bludiste.pozice.Y++;
- break;
- default:
- throw new ArgumentException("Špatné zadání směru příšery");
- }
- }
- public void Krok(int X, int Y)
- {
- if (!JeVpravoZed(X, Y) || JePredeMnouZed(X, Y))
- ZmenitSmer(X, Y);
- else
- Popojdi();
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Bludiste bludiste = new Bludiste();
- Prisera prisera = new Prisera(bludiste);
- for (int i = 0; i < 20; i++)
- {
- prisera.Krok(bludiste.pozice.X, bludiste.pozice.Y);
- bludiste.Aktualizuj(prisera);
- bludiste.Vypis();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment