using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Snake { public class Worm { public List Body = new List(); public Worm(Cell startCell) { Body.Add(startCell); startCell.Color = ColorFromHue((float)(Body.Count * 8)); } public void Move(int x, int y, Map map) { Cell swapCell = map.Cells[x, y]; for (int i = 1; i < Body.Count; i++) { map.SwapCells(swapCell, Body[i]); swapCell = Body[i]; } } public void Eat(ref Cell cell) { cell.Type = CellTypes.Snake; cell.Color = ColorFromHue((float)(Body.Count * 8)); Body.Insert(1, cell); } public Color ColorFromHue(float hue) { hue = hue % 360f; float c = 1f; float x = c * (1 - Math.Abs((hue / 60f) % 2 - 1)); float m = 0f; float r = 0, g = 0, b = 0; if (hue < 60) { r = c; g = x; } else if (hue < 120) { r = x; g = c; } else if (hue < 180) { g = c; b = x; } else if (hue < 240) { g = x; b = c; } else if (hue < 300) { r = x; b = c; } else { r = c; b = x; } return Color.FromArgb( (int)((r + m) * 255), (int)((g + m) * 255), (int)((b + m) * 255) ); } } }