Advertisement
voldmaks

BRAVE NEW WORLD

Jul 18th, 2021
1,474
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.56 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. using System.IO;
  7.  
  8. namespace BRAVE_NEW_WORLD
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             Console.CursorVisible = false;
  15.  
  16.             int playerСoordinatesX;
  17.             int playerСoordinatesY;
  18.             int playerDirectionX = 1;
  19.             int playerDirectionY = 0;
  20.  
  21.             char[,] map = ReadMap("map_1", out playerСoordinatesX, out playerСoordinatesY);
  22.  
  23.             DrawMap(map);
  24.  
  25.             while (true)
  26.             {
  27.                 if (Console.KeyAvailable)
  28.                 {
  29.                     ConsoleKeyInfo key = Console.ReadKey(true);
  30.  
  31.                     ChangeDirection(key, ref playerDirectionX, ref playerDirectionY);
  32.  
  33.                     if (map[playerСoordinatesX + playerDirectionX, playerСoordinatesY + playerDirectionY] != '#')
  34.                     {
  35.                         MovementPlayer(ref playerСoordinatesX, ref playerСoordinatesY, playerDirectionX, playerDirectionY);
  36.                     }
  37.                 }
  38.             }
  39.         }
  40.  
  41.         static char[,] ReadMap(string nameMap, out int playerСoordinatesX, out int playerСoordinatesY)
  42.         {
  43.             playerСoordinatesX = 0;
  44.             playerСoordinatesY = 0;
  45.  
  46.             string[] newFile = File.ReadAllLines($"maps/{nameMap}.txt");
  47.             char[,] map = new char[newFile.Length, newFile[0].Length];
  48.  
  49.             for (int i = 0; i < map.GetLength(0); i++)
  50.             {
  51.                 for (int j = 0; j < map.GetLength(1); j++)
  52.                 {
  53.                     map[i, j] = newFile[i][j];
  54.  
  55.                     if (map[i, j] == '@')
  56.                     {
  57.                         playerСoordinatesX = i;
  58.                         playerСoordinatesY = j;
  59.                     }
  60.                 }
  61.             }
  62.             return map;
  63.         }
  64.  
  65.         static void DrawMap(char[,] map)
  66.         {
  67.             for (int i = 0; i < map.GetLength(0); i++)
  68.             {
  69.                 for (int j = 0; j < map.GetLength(1); j++)
  70.                 {
  71.                     Console.Write(map[i, j]);
  72.                 }
  73.                 Console.WriteLine();
  74.             }
  75.         }
  76.  
  77.         static void MovementPlayer(ref int playerСoordinatesX, ref int playerСoordinatesY, int playerDirectionX, int playerDirectionY)
  78.         {
  79.             Console.SetCursorPosition(playerСoordinatesY, playerСoordinatesX);
  80.             Console.Write(" ");
  81.  
  82.             playerСoordinatesX += playerDirectionX;
  83.             playerСoordinatesY += playerDirectionY;
  84.  
  85.             Console.SetCursorPosition(playerСoordinatesY, playerСoordinatesX);
  86.             Console.Write('@');
  87.         }
  88.  
  89.         static void ChangeDirection(ConsoleKeyInfo key, ref int playerDirectionX, ref int playerDirectionY)
  90.         {
  91.             switch (key.Key)
  92.             {
  93.                 case ConsoleKey.UpArrow:
  94.                     playerDirectionX = -1;
  95.                     playerDirectionY = 0;
  96.                     break;
  97.                 case ConsoleKey.DownArrow:
  98.                     playerDirectionX = 1;
  99.                     playerDirectionY = 0;
  100.                     break;
  101.                 case ConsoleKey.LeftArrow:
  102.                     playerDirectionX = 0;
  103.                     playerDirectionY = -1;
  104.                     break;
  105.                 case ConsoleKey.RightArrow:
  106.                     playerDirectionX = 0;
  107.                     playerDirectionY = 1;
  108.                     break;
  109.             }
  110.         }
  111.     }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement