Ejemplo n.º 1
0
        /// <summary>
        /// Determines whether the snake is intersecting with itself
        /// </summary>
        /// <returns>Whether the snake is intersecting with itself</returns>
        public bool IsSelfIntersecting()
        {
            // Check each snake body part with every other snake body part
            for (int i = 0; i < m_SnakeParts.Count; i++)
            {
                for (int j = i + 1; j < m_SnakeParts.Count; j++)
                {
                    BodyPart part1 = m_SnakeParts[i];
                    BodyPart part2 = m_SnakeParts[j];

                    // Collision check logic
                    if ((new Rectangle(part1.GetPosition().X, part1.GetPosition().Y, m_CircleRadius, m_CircleRadius)).IntersectsWith(
                            new Rectangle(part2.GetPosition().X, part2.GetPosition().Y, m_CircleRadius, m_CircleRadius)))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
Ejemplo n.º 2
0
        // 偵測自撞
        public bool IsSelfIntersecting()
        {
            // 檢查每一部位與其他部位是否香蕉
            for (int i = 0; i < m_SnakeParts.Count; i++)
            {
                for (int j = 0; j < m_SnakeParts.Count; j++)
                {
                    if (i == j)
                    {
                        continue;
                    }
                    BodyPart part1 = m_SnakeParts[i];
                    BodyPart part2 = m_SnakeParts[j];

                    if ((new Rectangle(part1.GetPosition().X, part1.GetPosition().Y, m_CircleRadius, m_CircleRadius)).IntersectsWith(
                            new Rectangle(part2.GetPosition().X, part2.GetPosition().Y, m_CircleRadius, m_CircleRadius)))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }