Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading;
- namespace JustSnake
- {
- struct Position
- {
- public int row;
- public int column;
- public Position(int row, int col)
- {
- this.row = row;
- this.column = col;
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- byte right = 0;
- byte left = 1;
- byte down = 2;
- byte up = 3;
- int lastcandyTime = 0;
- int candyDissapearTime = 10000;
- Console.BackgroundColor = ConsoleColor.Black;
- Console.CursorVisible = (false);
- Console.Title = "Spimle Snake ALPHA";
- Position[] directions = new Position[]
- {
- new Position(0, 1), // prawo
- new Position(0, -1), // lewo
- new Position(1, 0), // w dół
- new Position(-1, 0), // w górę
- };
- double sleepTime = 100;
- int direction = right;
- Random randomNumbersGenerator = new Random();
- Console.BufferHeight = Console.WindowHeight;
- lastcandyTime = Environment.TickCount;
- List<Position> obstacles =
- new List<Position>()
- {
- new Position(1, 4),
- new Position(3, 12),
- new Position(5, 20),
- new Position(7, 28),
- new Position(9, 36),
- new Position(11, 44),
- new Position(13, 52),
- new Position(15, 60),
- new Position(17, 68),
- new Position(19, 76),
- new Position(21, 84),
- new Position(23, 92),
- new Position(25, 100),
- new Position(27, 108),
- };
- foreach (Position obstacle in obstacles) //Przeszkody
- {
- Console.ForegroundColor = ConsoleColor.DarkRed;
- Console.SetCursorPosition(obstacle.column, obstacle.row);
- Console.Write("X");
- }
- Queue<Position> snakeElements =
- new Queue<Position>();
- for (int i = 0; i <= 5; i++)
- {
- snakeElements.Enqueue(new Position(0, i));
- }
- Position candy;
- do
- {
- candy = new Position(
- randomNumbersGenerator.Next(0, Console.WindowHeight),
- randomNumbersGenerator.Next(0, Console.WindowWidth));
- }
- while (snakeElements.Contains(candy) || obstacles.Contains(candy));
- Console.SetCursorPosition(candy.column, candy.row);
- Console.ForegroundColor = ConsoleColor.DarkGreen;
- Console.Write("o");
- foreach (Position position in snakeElements)
- {
- Console.SetCursorPosition(position.column,position.row);
- Console.ForegroundColor = ConsoleColor.DarkGray;
- Console.Write("■");
- }
- while (true)
- {
- if (Console.KeyAvailable)
- {
- ConsoleKeyInfo userInput = Console.ReadKey();
- if (userInput.Key == ConsoleKey.LeftArrow)
- {
- if (direction != right) direction = left;
- }
- if (userInput.Key == ConsoleKey.RightArrow)
- {
- if (direction != left) direction = right;
- }
- if (userInput.Key == ConsoleKey.UpArrow)
- {
- if (direction != down) direction = up;
- }
- if (userInput.Key == ConsoleKey.DownArrow)
- {
- if (direction != up) direction = down;
- }
- }
- Position snakeHead = snakeElements.Last();
- Position nextDirection = directions[direction];
- Position snakeNewHead = new Position(snakeHead.row + nextDirection.row,snakeHead.column + nextDirection.column);
- if (snakeNewHead.column < 0) snakeNewHead.column = Console.WindowWidth - 1;
- if (snakeNewHead.row < 0)snakeNewHead.row = Console.WindowHeight - 1;
- if (snakeNewHead.row >= Console.WindowHeight)snakeNewHead.row = 0;
- if (snakeNewHead.column >= Console.WindowWidth)snakeNewHead.column = 0;
- if (snakeElements.Contains(snakeNewHead)
- || obstacles.Contains(snakeNewHead))
- {
- Console.SetCursorPosition(0, 0);
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine("KONIEC GRY!!!");
- int userPoints = (snakeElements.Count - 6);
- if (userPoints > 5)
- {
- Console.WriteLine("Liczba uzyskanych punktów to {0}, gratulacje!", userPoints);
- }
- else
- Console.WriteLine("musisz sie postarac ;/ liczba twoich punktow nie przekroszyla 5! Twoj wynik to {0}", userPoints);
- Console.ReadLine();
- return;
- }
- Console.SetCursorPosition(snakeHead.column,snakeHead.row);
- Console.ForegroundColor = ConsoleColor.DarkGray;
- Console.Write("=");
- snakeElements.Enqueue(snakeNewHead);
- Console.SetCursorPosition(snakeNewHead.column,snakeNewHead.row);
- Console.ForegroundColor = ConsoleColor.Gray;
- if (direction == right) Console.Write(">");
- if (direction == left) Console.Write("<");
- if (direction == up) Console.Write("^");
- if (direction == down) Console.Write("v");
- if (snakeNewHead.column == candy.column &&snakeNewHead.row == candy.row)
- {
- // Karmienie snake'a
- do
- {
- candy = new Position(randomNumbersGenerator.Next(0, Console.WindowHeight), randomNumbersGenerator.Next(0, Console.WindowWidth));
- }
- while (snakeElements.Contains(candy) || obstacles.Contains(candy));
- lastcandyTime = Environment.TickCount;
- Console.SetCursorPosition(candy.column, candy.row);
- Console.ForegroundColor = ConsoleColor.DarkGreen;
- Console.Write("o");
- sleepTime--;
- Position obstacle = new Position();
- do
- {
- obstacle = new Position(randomNumbersGenerator.Next(0, Console.WindowHeight), randomNumbersGenerator.Next(0, Console.WindowWidth));
- }
- while (snakeElements.Contains(obstacle) || obstacles.Contains(obstacle) || (candy.row != obstacle.row && candy.column != obstacle.row));
- obstacles.Add(obstacle);
- Console.SetCursorPosition(obstacle.column,obstacle.row);
- Console.ForegroundColor = ConsoleColor.Red;
- Console.Write("X");
- }
- else
- {
- // poruszanie się
- Position last = snakeElements.Dequeue();
- Console.SetCursorPosition(last.column, last.row);
- Console.Write(" ");
- }
- if (Environment.TickCount - lastcandyTime >= candyDissapearTime)
- {
- Console.SetCursorPosition(candy.column, candy.row);
- Console.Write(" ");
- do
- {
- candy = new Position(randomNumbersGenerator.Next(0, Console.WindowHeight),randomNumbersGenerator.Next(0, Console.WindowWidth));
- }
- while (snakeElements.Contains(candy) || obstacles.Contains(candy));
- lastcandyTime = Environment.TickCount;
- }
- Console.SetCursorPosition(candy.column, candy.row);
- Console.ForegroundColor = ConsoleColor.DarkGreen;
- Console.Write("o");
- sleepTime -= 0.01;
- Thread.Sleep((int)sleepTime);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement