RedFlys

Home work - brawe new world

Nov 9th, 2021 (edited)
919
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.25 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 Home_Work
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Console.CursorVisible = false;
  14.  
  15.             bool isWorking = true;
  16.             string userInput;
  17.  
  18.             while (isWorking)
  19.             {
  20.                 ShowMainMenu();
  21.                 userInput = Console.ReadLine();
  22.                 Console.Clear();
  23.  
  24.                 switch (userInput)
  25.                 {
  26.                     case "1":
  27.                         PlayInGame();
  28.                         break;
  29.  
  30.                     case "2":
  31.                         isWorking = false;
  32.                         break;
  33.                 }
  34.  
  35.                 Console.Clear();
  36.             }
  37.         }
  38.  
  39.         static void ShowMainMenu()
  40.         {
  41.             Console.WriteLine("Приветствуем вас в игре \"Лабиринт\"!" +
  42.                     "\nВаша задача пройти до выхода - X, собрав все монетки." +
  43.                    "\nУправление реализовано клавишами WASD или стрелочками." +
  44.                    "\nНажмите 1 для игры и 2, если хотите выйти");
  45.         }
  46.  
  47.         static void PlayInGame()
  48.         {
  49.             int level = 1;
  50.             int maxLevel = 3;            
  51.             int gamePoint = 0;
  52.  
  53.             bool isFinishPosition;
  54.             char[,] map;
  55.             int userPositionX;
  56.             int userPositionY;
  57.  
  58.             while (level <= maxLevel)
  59.             {
  60.                 int levelPoint = 0;
  61.  
  62.                 LoadMap(level, out map);
  63.                 GetUserPosition(map, out userPositionX, out userPositionY);
  64.                
  65.                 isFinishPosition = false;
  66.  
  67.                 while (isFinishPosition == false)
  68.                 {
  69.                     DrawMap(map);
  70.                     DrawPlayer(userPositionX, userPositionY);
  71.  
  72.                     Move(map, ref userPositionX, ref userPositionY);
  73.  
  74.                     TryGetPoint(map, userPositionX, userPositionY, ref levelPoint);
  75.  
  76.                     isFinishPosition = IsFinishPosition(map, userPositionX, userPositionY);
  77.                 }
  78.  
  79.                 gamePoint += levelPoint;
  80.                 level++;
  81.             }
  82.  
  83.             Console.Clear();
  84.             Console.WriteLine("Поздравляем, вы прошли игру.");
  85.             Console.WriteLine("Вы набрали " + gamePoint + " монет.");
  86.             Console.ReadKey();
  87.         }
  88.  
  89.         static void LoadMap(int level, out char[,] map)
  90.         {
  91.             switch (level)
  92.             {
  93.                 default:
  94.                 case 1:
  95.                     map = new char[,] {
  96.                         { '#','#','#','#','#','#','#','#','#','#'},
  97.                         { '#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
  98.                         { '#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
  99.                         { '#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
  100.                         { '#',' ','$',' ',' ',' ','$',' ',' ','#'},
  101.                         { '#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
  102.                         { '#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
  103.                         { '#',' ',' ',' ','@',' ',' ',' ',' ','#'},
  104.                         { '#',' ',' ',' ',' ',' ',' ',' ',' ','X'},
  105.                         { '#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
  106.                         { '#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
  107.                         { '#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
  108.                         { '#',' ','$',' ',' ',' ','$',' ',' ','#'},
  109.                         { '#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
  110.                         { '#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
  111.                         { '#','#','#','#','#','#','#','#','#','#'} };
  112.                     break;
  113.  
  114.                 case 2:
  115.                     map = new char[,] {
  116.                         { '#','#','#','#','#','#','#','#','#','#'},
  117.                         { '#','#','#','#','$','#','#','#','#','#'},
  118.                         { '#','#','#','#',' ','#','#','#','#','#'},
  119.                         { '#','#','#','#',' ','#','#','#','#','#'},
  120.                         { '#','#','#','#',' ','#','#','#','#','#'},
  121.                         { '#','#','#','#',' ','#','#','#','#','#'},
  122.                         { '#','#','#','#',' ',' ',' ',' ','$','#'},
  123.                         { '#','#','#','#','@',' ','#','#','#','#'},
  124.                         { '#','$',' ',' ',' ',' ','#','#',' ','X'},
  125.                         { '#','#','#','#','#',' ','#','#',' ','#'},
  126.                         { '#','#','#','#','#',' ','#','#',' ','#'},
  127.                         { '#','#','#','#','#',' ','#','#',' ','#'},
  128.                         { '#','#','#','#','#',' ','#','#',' ','#'},
  129.                         { '#','#','#','#','#',' ','#','#',' ','#'},
  130.                         { '#',':',')','#','#','$',' ',' ',' ','#'},
  131.                         { '#','#','#','#','#','#','#','#','#','#'} };
  132.                     break;
  133.  
  134.                 case 3:                  
  135.                     map = new char[,] {
  136.                         { '#','#','#','#','#','#','#','#','#','#'},
  137.                         { '#','$','#',' ',' ',' ',' ',' ',' ','#'},
  138.                         { '#',' ',' ',' ','#',' ','#','#',' ','#'},
  139.                         { '#','#','#','#',' ',' ','#','#',' ','#'},
  140.                         { '#',' ','$','#',' ','#','$',' ',' ','#'},
  141.                         { '#',' ','#','#',' ','#','#','#','#','#'},
  142.                         { '#',' ',' ',' ','@',' ',' ',' ','$','#'},
  143.                         { '#',' ','#','#','#','#','#','#','#','#'},
  144.                         { '#',' ','#',' ',' ',' ','#',' ',' ','X'},
  145.                         { '#',' ',' ',' ','#',' ','#',' ','#','#'},
  146.                         { '#','#','#','#',' ',' ',' ',' ','#','#'},
  147.                         { '#','#','$','#',' ','#','#','#','#','#'},
  148.                         { '#',' ',' ','#',' ','#','$',' ',' ','#'},
  149.                         { '#',' ','#','#',' ','#','#','#',' ','#'},
  150.                         { '#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
  151.                         { '#','#','#','#','#','#','#','#','#','#'} };
  152.                     break;
  153.             }
  154.         }
  155.  
  156.         static void GetUserPosition(char[,] map, out int userPositionX, out int userPositionY)
  157.         {
  158.             userPositionX = 0;
  159.             userPositionY = 0;
  160.  
  161.             for (int i = 0; i < map.GetLength(0); i++)
  162.             {
  163.                 for (int j = 0; j < map.GetLength(1); j++)
  164.                 {                    
  165.                     if (map[i, j] == '@')
  166.                     {
  167.                         userPositionX = j;
  168.                         userPositionY = i;
  169.                         map[i, j] = ' ';
  170.                     }
  171.                 }
  172.             }
  173.         }
  174.  
  175.         static bool IsFinishPosition(char[,] map, int userPositionX, int userPositionY)
  176.         {
  177.             return map[userPositionY, userPositionX] == 'X';
  178.         }
  179.  
  180.         static void DrawMap(char [,] map)
  181.         {
  182.             Console.SetCursorPosition(0, 0);
  183.  
  184.             for ( int i = 0; i < map.GetLength(0); i++ )
  185.             {
  186.                 for (int j = 0; j < map.GetLength(1); j++)
  187.                 {
  188.                     Console.Write(map[i, j]);
  189.                 }
  190.  
  191.                 Console.WriteLine();
  192.             }
  193.         }
  194.  
  195.         static void DrawPlayer(int userPositionX, int userPositionY)
  196.         {
  197.             Console.SetCursorPosition(userPositionX, userPositionY);
  198.             Console.Write('@');
  199.         }
  200.  
  201.         static void Move(char[,] map, ref int userPositionX, ref int userPositionY)
  202.         {
  203.             ConsoleKeyInfo key = Console.ReadKey(true);
  204.  
  205.             switch (key.Key)
  206.             {
  207.                 case ConsoleKey.UpArrow:
  208.                 case ConsoleKey.W:
  209.                     if (map[userPositionY - 1, userPositionX] != '#')
  210.                     {
  211.                         userPositionY--;
  212.                     }
  213.                     break;
  214.  
  215.                 case ConsoleKey.DownArrow:
  216.                 case ConsoleKey.S:
  217.                     if (map[userPositionY + 1, userPositionX] != '#')
  218.                     {
  219.                         userPositionY++;
  220.                     }
  221.                     break;
  222.  
  223.                 case ConsoleKey.LeftArrow:
  224.                 case ConsoleKey.A:
  225.                     if (map[userPositionY, userPositionX - 1] != '#')
  226.                     {
  227.                         userPositionX--;
  228.                     }
  229.                     break;
  230.  
  231.                 case ConsoleKey.RightArrow:
  232.                 case ConsoleKey.D:
  233.                     if (map[userPositionY, userPositionX + 1] != '#')
  234.                     {
  235.                         userPositionX++;
  236.                     }
  237.                     break;
  238.             }
  239.         }
  240.  
  241.         static void TryGetPoint(char[,] map, int userPositionX, int userPositionY, ref int levelPoint)
  242.         {
  243.             if (map[userPositionY, userPositionX] == '$')
  244.             {
  245.                 map[userPositionY, userPositionX] = ' ';
  246.                 levelPoint++;                
  247.             }
  248.         }
  249.     }
  250. }
Add Comment
Please, Sign In to add comment