示例#1
0
        public void Move(Possition position)
        {
            if (position.X == 0 && position.Y == 0)
            {
                return;
            }

            ConsoleHelper.Clear(SnakeBody.Tail.Value);

            SnakeBody.ReverseForEach(n =>
            {
                if (n.Previous != null)
                {
                    n.Value.X = n.Previous.Value.X;
                    n.Value.Y = n.Previous.Value.Y;
                }
            });
            SnakeBody.Head.Value.ChangePossition(position);

            for (int i = 0; i < Foods.Count; i++)
            {
                if (Foods[i].Possition == SnakeBody.Head.Value)
                {
                }
            }
        }
示例#2
0
 public Snake(Possition headPossition)
 {
     SnakeBody = new LinkedList();
     SnakeBody.AddHead(new Node(headPossition));
     //this.Head = new Node(headPossition);
     for (int i = 0; i < 10; i++)
     {
         SnakeBody.AddLast(new Node
                               (new Possition(headPossition.X + i, headPossition.Y)));
     }
 }
示例#3
0
        public void Start()
        {
            isStarted = true;
            Possition movement = new Possition(0, 0);

            while (isStarted == true)
            {
                //Console.WriteLine("Playing the game");
                Snake.Move(movement);
                if (Console.KeyAvailable)
                {
                    var key = Console.ReadKey(false).Key;
                    movement = ReadUserInput.GetMovement(key);
                }

                Thread.Sleep(40);
                //Console.Clear();
                gameItems.ForEach(i => i.Draw());
            }
        }
示例#4
0
        public static Possition GetMovement(ConsoleKey key)
        {
            Possition possition = new Possition(0, 0);

            switch (key)
            {
            case ConsoleKey.UpArrow:
                possition = new Possition(0, -1);
                break;

            case ConsoleKey.DownArrow:
                possition = new Possition(0, 1);
                break;

            case ConsoleKey.LeftArrow:
                possition = new Possition(-1, 0);
                break;

            case ConsoleKey.RightArrow:
                possition = new Possition(1, 0);
                break;
            }
            return(possition);
        }
示例#5
0
 public void ChangePossition(Possition possition)
 {
     this.X += possition.X;
     this.Y += possition.Y;
 }
示例#6
0
 public Food(Possition possition, char symbol = '#')
 {
     this.Symbol    = symbol;
     this.Possition = possition;
 }
示例#7
0
 public Node(Possition value)
 {
     this.Value = value;
 }