public Direction ChangeDirection(ISnake snake, ISpace space, IReadOnlyCollection <ISnake> snakes) { // Si no me choco adelante, sigo igual IPosition pos = snake.MoveNew(); if (pos.IsValid(space.TopX, space.TopY) && (space[pos.X, pos.Y] == 0)) { return(snake.Direction); } //Busco nueva dirección clockwise para no chocarme foreach (Direction dir in new[] { 0, 1, 2, 3 }) { pos = snake.MoveNew(dir); if (!pos.IsValid(space.TopX, space.TopY)) { continue; } if (space[pos.X, pos.Y] > 0) { continue; } return(dir); } return(snake.Direction); //TODO: no meterse en callejones }