예제 #1
0
파일: Snake.cs 프로젝트: lyyka/snake-game
        public void Move()
        {
            // Move the head part
            Head.Position_X += Head.MovementDirection[0];
            Head.Position_Y += Head.MovementDirection[1];

            // Adapt head to the borders
            Head.AdaptOutOfBorder(Game.Game_Matrix);
            // Check if head colided with something
            CheckNewPositionForCollisions(Head);

            // go through parts, starting from the part after Head
            SnakePart current_part = Head.PrevPart;

            while (current_part != null)
            {
                // set last direction to movement direction
                current_part.LastDirection = current_part.MovementDirection;
                // If there is next part, get it's last movement direction and set it on this part
                current_part.FollowNext();
                // Move part
                current_part.Position_X += current_part.MovementDirection[0];
                current_part.Position_Y += current_part.MovementDirection[1];
                // Adapt the part if it crosses the border
                current_part.AdaptOutOfBorder(Game.Game_Matrix);
                // Update matrix for moved part
                UpdateMatrix(current_part);

                // get next part to move
                current_part = current_part.PrevPart;
            }

            Head.LastDirection = Head.MovementDirection;
        }