private void btnRand_Click(object sender, EventArgs e) { var cube = new Cube(); var rand = new Random(); var twists = new List <Twist>(); for (int i = 0; i < 100; i++) { var t = Twist.Twists[rand.Next(0, Twist.Twists.Length - 1)]; cube.twist(t); twists.Add(t); // ce modèle ne respecte pas la norme où les movement u,l,d,r,b bougent 2 couronnes. Ici la fonction twist n'en bouge qu'une. Le 2eme est bougé artificiellement if (char.IsLower(t.Name[0])) { var t2 = Twist.Twists.First(x => x.Name == t.Name.ToUpper()); cube.twist(t2); } } var colorCube = new ColorCube(); colorCube.setColors(cube); using (var state = GlobalState.GetState()) { state.InitialCube = colorCube; } }
public static ColorCube GetCube(IList <Color> colors) { var result = Classify(colors); result.Groups.ForEach((x) => x.UpdateAverageColor()); var orderedRGroups = result.Groups.OrderBy((x) => x.AverageColor.R).ToList(); if (orderedRGroups[0].AverageColor.B < orderedRGroups[1].AverageColor.B) { orderedRGroups[0].TheoreticalColor = Color.Green; orderedRGroups[1].TheoreticalColor = Color.Blue; } else { orderedRGroups[0].TheoreticalColor = Color.Blue; orderedRGroups[1].TheoreticalColor = Color.Green; } orderedRGroups[5].TheoreticalColor = Color.Orange; var orderedGGroups = orderedRGroups.Skip(2).Take(3).OrderBy((x) => x.AverageColor.G).ToList(); orderedGGroups[0].TheoreticalColor = Color.Red; if (orderedGGroups[1].AverageColor.B < orderedGGroups[2].AverageColor.B) { orderedGGroups[1].TheoreticalColor = Color.Yellow; orderedGGroups[2].TheoreticalColor = Color.White; } else { orderedGGroups[1].TheoreticalColor = Color.White; orderedGGroups[2].TheoreticalColor = Color.Yellow; } var cube = new ColorCube(); Console.WriteLine("R;G;B;ID;Color"); result.Points.ForEach((x) => Console.WriteLine(x.MeasuredColor.R + ";" + x.MeasuredColor.G + ";" + x.MeasuredColor.B + ";" + x.Group.ID + ";" + x.Group.TheoreticalColor.Name)); cube.setColors(result.Points.Select((x) => x.Group.TheoreticalColor).ToArray()); return(cube); }
private void btnGenerate_Click(object sender, EventArgs e) { var cube = new Cube(); var rand = new Random(); var twists = new List <Twist>(); for (int i = 0; i < udMoves.Value; i++) { var t = Twist.Twists[rand.Next(0, Twist.Twists.Length - 1)]; cube.twist(t); twists.Add(t); // ce modèle ne respecte pas la norme où les movement u,l,d,r,b bougent 2 couronnes. Ici la fonction twist n'en bouge qu'une. Le 2eme est bougé artificiellement if (char.IsLower(t.Name[0])) { var t2 = Twist.Twists.First(x => x.Name == t.Name.ToUpper()); cube.twist(t2); } } var colorCube = new ColorCube(); colorCube.setColors(cube); var c1 = string.Join("", colorCube.FaceColors.Select(x => x.ToString())); var c1Split = Enumerable.Range(0, c1.Length / 16).Select(i => c1.Substring(i * 16, 16)).ToArray(); // le solver java attend les couleurs des faces dans l'ordre URFDLB alors que le modèle renvoi ULFRBD donc on split la chaine en 6 et on réordonne txtColors.Text = string.Join("", c1Split[0], c1Split[3], c1Split[2], c1Split[5], c1Split[1], c1Split[4]); txtMoves.Text = string.Join(" ", twists.Select(x => x.Name)); btnGo_Click(sender, e); }