/// <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); }
// 偵測自撞 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); }