Advertisement
marto9119

Untitled

Jan 14th, 2023
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.15 KB | Source Code | 0 0
  1. using System;
  2. using System.Linq.Expressions;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using System.Collections;
  6. using System.Linq;
  7. using System.Threading;
  8.  
  9. namespace MyApp // Note: actual namespace depends on the project name.
  10. {
  11.     struct Position
  12.     {
  13.         public int row;
  14.         public int col;
  15.         public Position(int row, int col)
  16.         {
  17.             this.row = row;
  18.             this.col = col;
  19.         }
  20.     }
  21.     internal class Program
  22.     {
  23.         static void Main(string[] args)
  24.         {
  25.             int lastFoodTime = 0;
  26.             int FoodDisspearTime = 8000;
  27.             int negativePoints = 0;
  28.  
  29.  
  30.  
  31.             Position[] directions = new Position[] // block positions
  32.             {
  33.                 new Position(0, 1), // right
  34.                 new Position(0, -1), // left
  35.                 new Position(1, 0), //down
  36.                 new Position(-1, 0), //up
  37.             };
  38.             double sleeptime = 100;
  39.             int direction = 0; //0
  40.             Random randomNubersGenerator = new Random();
  41.             Console.BufferHeight = Console.WindowHeight;
  42.             Console.BufferWidth = Console.WindowWidth;
  43.             Position food = new Position(randomNubersGenerator.Next(0, Console.WindowHeight),
  44.                 randomNubersGenerator.Next(0, Console.WindowWidth));
  45.  
  46.             lastFoodTime = Environment.TickCount;
  47.             Console.SetCursorPosition(food.col, food.row);
  48.             Console.ForegroundColor = ConsoleColor.Green;
  49.             Console.Write("@");
  50.  
  51.             List<Position> obstacles = new List<Position>();
  52.             {
  53.                 new Position(12, 21);
  54.                 new Position(12, 21);
  55.                 new Position(21, 6);
  56.             }
  57.             foreach (Position obstacle in obstacles)
  58.             {
  59.                 Console.ForegroundColor = ConsoleColor.Blue;
  60.                 Console.SetCursorPosition(obstacle.col, obstacle.row);
  61.                 Console.Write("M");
  62.             }
  63.  
  64.             Queue<Position> snakeelements = new Queue<Position>();
  65.             for (int i = 0; i <= 5; i++)
  66.             {
  67.                 snakeelements.Enqueue(new Position(0, i));
  68.             }
  69.             foreach (Position position in snakeelements)
  70.             {
  71.                 Console.SetCursorPosition(position.col, position.row);
  72.                 Console.ForegroundColor = ConsoleColor.DarkGreen;
  73.                 Console.Write("G");
  74.             }
  75.  
  76.             while (true)
  77.             {
  78.                 negativePoints++;
  79.  
  80.                 if (Console.KeyAvailable)
  81.                 {
  82.                     ConsoleKeyInfo userInput = Console.ReadKey();
  83.                     if (userInput.Key == ConsoleKey.LeftArrow)
  84.                     {
  85.                         if (direction != 0) direction = 1;
  86.                     }
  87.                     if (userInput.Key == ConsoleKey.RightArrow)
  88.                     {
  89.                         if (direction != 1) direction = 0;
  90.                     }
  91.                     if (userInput.Key == ConsoleKey.UpArrow)
  92.                     {
  93.                         if (direction != 2) direction = 3;
  94.                     }
  95.                     if (userInput.Key == ConsoleKey.DownArrow)
  96.                     {
  97.                         if (direction != 3) direction = 2;
  98.                     }
  99.                 }
  100.                 Position snakeHead = snakeelements.Last();
  101.                 Position nextDirections = directions[direction];
  102.                 Position snakeNewHead = new Position(snakeHead.row + nextDirections.row,
  103.                     snakeHead.col + nextDirections.col);
  104.  
  105.                 if (snakeNewHead.col < 0) snakeNewHead.col = Console.WindowWidth - 1;
  106.                 if (snakeNewHead.row < 0) snakeNewHead.row = Console.WindowWidth - 1;
  107.                 if (snakeNewHead.row >= Console.WindowHeight) snakeNewHead.row = 0;
  108.                 if (snakeNewHead.col >= Console.WindowWidth) snakeNewHead.col = 0;
  109.  
  110.                 if (snakeelements.Contains(snakeNewHead))
  111.                 {
  112.                     Console.SetCursorPosition(0, 0);
  113.                     Console.ForegroundColor = ConsoleColor.Red;
  114.                     Console.WriteLine("Game olver!");
  115.                     int usersPoints = ((snakeelements.Count - 6) * 100) - negativePoints;
  116.                     usersPoints = Math.Max(usersPoints, 0); // взима по голямата стойност
  117.                     Console.ForegroundColor = ConsoleColor.DarkRed;
  118.                     Console.WriteLine("Your points are : {0}", usersPoints);
  119.                     return;
  120.                 }
  121.  
  122.                 Console.SetCursorPosition(snakeHead.col, snakeHead.row);
  123.                 Console.ForegroundColor = ConsoleColor.DarkGreen;
  124.                 Console.Write("G");
  125.  
  126.                 snakeelements.Enqueue(snakeNewHead);
  127.                 Console.SetCursorPosition(snakeNewHead.col, snakeNewHead.row);
  128.                 //if (direction == 0) Console.Write(">");
  129.                 // if (direction == 1) Console.Write("<");
  130.                 // if (direction == 3) Console.Write("^");
  131.                 // if (direction == 2) Console.Write("v");
  132.                 Console.ForegroundColor = ConsoleColor.DarkGreen;
  133.                 Console.Write("G");
  134.  
  135.                 if (snakeNewHead.col == food.col && snakeNewHead.row == food.row)
  136.                 {
  137.                     do
  138.                     {
  139.                         // feeding yhe snake
  140.                         food = new Position(randomNubersGenerator.Next(0, Console.WindowHeight),
  141.                         randomNubersGenerator.Next(0, Console.WindowWidth));
  142.                     }
  143.                     while (snakeelements.Contains(food));
  144.                     lastFoodTime = Environment.TickCount;
  145.                     Console.SetCursorPosition(food.col, food.row);
  146.                     Console.ForegroundColor = ConsoleColor.Green;
  147.                     Console.Write("@");
  148.                     sleeptime--;
  149.                 }
  150.                 else
  151.                 {
  152.                     // moving
  153.                     Position last = snakeelements.Dequeue();
  154.                     Console.SetCursorPosition(last.col, last.row);
  155.                     Console.Write(" ");
  156.                 }
  157.  
  158.                 if (Environment.TickCount - lastFoodTime >= FoodDisspearTime)
  159.                 {
  160.                     negativePoints = negativePoints + 50;
  161.                     Console.SetCursorPosition(food.col, food.row);
  162.                     Console.Write(" ");
  163.                     do
  164.                     {
  165.                         // feeding yhe snake
  166.                         food = new Position(randomNubersGenerator.Next(0, Console.WindowHeight),
  167.                         randomNubersGenerator.Next(0, Console.WindowWidth));
  168.                     }
  169.                     while (snakeelements.Contains(food));
  170.                     lastFoodTime = Environment.TickCount;
  171.                 }
  172.  
  173.                 Console.SetCursorPosition(food.col, food.row);
  174.                 Console.ForegroundColor = ConsoleColor.Green;
  175.                 Console.Write("@");
  176.  
  177.                 sleeptime -= 0.01;
  178.  
  179.                 Thread.Sleep((int)sleeptime);
  180.             }
  181.  
  182.         }
  183.     }
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement