Advertisement
IvanOseledko

Homework32

Mar 31st, 2024 (edited)
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.08 KB | None | 0 0
  1. using System;
  2.  
  3. namespace Homework31
  4. {
  5.     class Progam
  6.     {
  7.         static void Main()
  8.         {
  9.             Console.CursorVisible = false;
  10.  
  11.             bool isOpen = true;
  12.  
  13.             int playerX = 3;
  14.             int playerY = 5;
  15.             int score = 0;
  16.  
  17.             char[,] map =
  18.             {
  19.                 {'#', '#','#','#','#','#','#','#','#', '#','#','#','#','#', '#','#','#','#','#','#','#','#', '#','#','#','#'},
  20.                 {'#', ' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ', '#','.',' ','#'},
  21.                 {'#', ' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ', '#','.',' ','#'},
  22.                 {'#', ' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ', '#','.',' ','#'},
  23.                 {'#', '#','#','#','#','#','#','#','#', '#','#',' ','.','.', '.','.','.',' ',' ',' ',' ',' ', '#','#',' ','#'},
  24.                 {'#', ' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ','#'},
  25.                 {'#', ' ',' ',' ',' ',' ',' ',' ',' ', ' ','#',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ','#'},
  26.                 {'#', '#','#','#','#','#','#','#','#', '#','#',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ','#'},
  27.                 {'#', ' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ','#'},
  28.                 {'#', ' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ','#'},
  29.                 {'#', ' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ','.', ' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ','#'},
  30.                 {'#', '#','#','#','#','#','#','#','#', ' ',' ',' ',' ','.', ' ',' ',' ','#','#','#','#','#', '#','#','#','#'},
  31.                 {'#', '.','.','.','.','.','.','.','#', ' ',' ',' ',' ','.', ' ',' ',' ','#',' ',' ',' ',' ', ' ',' ',' ','#'},
  32.                 {'#', '.','.','.','.','.','.','.','#', ' ',' ',' ',' ','.', ' ',' ',' ','#',' ',' ',' ',' ', ' ',' ',' ','#'},
  33.                 {'#', ' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ','.', ' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ','#'},
  34.                 {'#', '#','#','#','#','#','#','#','#', '#','#','#','#','#', '#','#','#','#','#','#','#','#', '#','#','#','#'}
  35.             };
  36.  
  37.             while (isOpen)
  38.             {
  39.                 DrawMap(map, ConsoleColor.Magenta);
  40.  
  41.                 DrawPlayer(playerX, playerY, ConsoleColor.Yellow);
  42.  
  43.                 ShowScore(score);
  44.  
  45.                 HandleInput(ref playerX, ref playerY, map, ref score);
  46.  
  47.                 Console.Clear();
  48.             }
  49.         }
  50.  
  51.         static void DrawMap(char[,] map, ConsoleColor color = ConsoleColor.Blue)
  52.         {
  53.             Console.ForegroundColor = color;
  54.  
  55.             for (int i = 0; i < map.GetLength(0); i++)
  56.             {
  57.                 for (int j = 0; j < map.GetLength(1); j++)
  58.                 {
  59.                     Console.Write(map[i, j]);
  60.                 }
  61.  
  62.                 Console.WriteLine();
  63.             }
  64.         }
  65.  
  66.         static void HandleInput(ref int playerX, ref int playerY, char[,] map, ref int score)
  67.         {
  68.             int[] direction = GetDirection();
  69.  
  70.             int nextPlayerPositionX = playerX + direction[0];
  71.             int nextPlayerPositionY = playerY + direction[1];
  72.  
  73.             TryMovePlayer(ref playerX, ref playerY, nextPlayerPositionX, nextPlayerPositionY, map);
  74.             score = IncreaseNumberOfPlayerPoints(nextPlayerPositionX, nextPlayerPositionY, map, score);
  75.         }
  76.          
  77.         static int[] GetDirection()
  78.         {
  79.             const ConsoleKey MoveUpKey = ConsoleKey.W;
  80.             const ConsoleKey MoveDownKey = ConsoleKey.S;
  81.             const ConsoleKey MoveLeftKey = ConsoleKey.A;
  82.             const ConsoleKey MoveRightKey = ConsoleKey.D;
  83.  
  84.             int[] direction = { 0, 0 };
  85.  
  86.             Console.SetCursorPosition(0, 17);
  87.             Console.ForegroundColor = ConsoleColor.DarkCyan;
  88.             Console.WriteLine($"{MoveRightKey} - Передвинуть игрока вправо\n{MoveLeftKey} - Передвинуть игрока влево\n{MoveUpKey} - Передвинуть игрока вверх\n{MoveDownKey} - Передвинуть игрока вниз");
  89.  
  90.             ConsoleKeyInfo pressedKey = Console.ReadKey();
  91.  
  92.             if (pressedKey.Key == MoveUpKey)
  93.                 direction[1] = -1;
  94.             else if (pressedKey.Key == MoveDownKey)
  95.                 direction[1] = 1;
  96.             else if (pressedKey.Key == MoveLeftKey)
  97.                 direction[0] = -1;
  98.             else if (pressedKey.Key == MoveRightKey)
  99.                 direction[0] = 1;
  100.  
  101.             return direction;
  102.         }
  103.  
  104.         static void DrawPlayer(int playerX, int playerY, ConsoleColor color = ConsoleColor.Red)
  105.         {
  106.             char player = '@';
  107.            
  108.             Console.SetCursorPosition(playerX, playerY);
  109.             Console.ForegroundColor = color;
  110.             Console.Write(player);
  111.         }
  112.        
  113.         static void ShowScore(int score)
  114.         {
  115.             Console.SetCursorPosition(36, 0);
  116.             Console.Write($"Количество собранных очков: {score}.");
  117.         }
  118.  
  119.         static void TryMovePlayer(ref int playerX, ref int playerY, int nextPlayerPositionX, int nextPlayerPositionY, char[,] map)
  120.         {
  121.             char emptiness = ' ';
  122.            
  123.             if (map[nextPlayerPositionY, nextPlayerPositionX] == emptiness)
  124.             {
  125.                 playerX = nextPlayerPositionX;
  126.                 playerY = nextPlayerPositionY;
  127.             }
  128.         }
  129.  
  130.         static int IncreaseNumberOfPlayerPoints(int nextPlayerPositionX, int nextPlayerPositionY, char[,] map, int score)
  131.         {
  132.             char emptiness = ' ';
  133.             char berry = '.';
  134.  
  135.             if (map[nextPlayerPositionY, nextPlayerPositionX] == berry)
  136.             {
  137.                 score++;
  138.                 map[nextPlayerPositionY, nextPlayerPositionX] = emptiness;
  139.             }
  140.  
  141.             return score;
  142.         }
  143.     }
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement