private IEnumerator ScrambleCube() { gc.SetGuideNum(Guides.BLANK); playPauseButton.GetComponent <Button>().interactable = nextButton.GetComponent <Button>().interactable = lastButton.GetComponent <Button>().interactable = slowerButton.GetComponent <Button>().interactable = fasterButton.GetComponent <Button>().interactable = false; Pair <string, bool>[] moves = CubeSolver.Scramble(); period = SCRAMBLE_PERIOD; for (int i = 0; i < moves.Length; i++) { Pair <string, bool> move = moves[i]; UpdateScrambleFPR((double)i / moves.Length); ct.finishedRotation = false; ct.Rotate(move); yield return(new WaitUntil(() => ct.finishedRotation)); } StartCoroutine(SolveCube()); }
//Gets other components void Start() { Reference reference = GetComponent <Reference>(); cube = reference.solver; visualizer = reference.visualizer; }
void OnDestroy() { if (instance == this) { instance = null; } }
private IEnumerator ColorCube() { gc.SetGuideNum(Guides.COLORING); gameObject.AddComponent <CubeColorer>(); //All buttons except play/pause button are disabled nextButton.GetComponent <Button>().interactable = lastButton.GetComponent <Button>().interactable = fasterButton.GetComponent <Button>().interactable = slowerButton.GetComponent <Button>().interactable = false; playPauseButton.GetComponent <Button>().interactable = true; playPauseButton.GetComponent <Image>().sprite = play; isPaused = true; while (true) { yield return(new WaitUntil(() => !isPaused)); if (CubeSolver.IsValidConfiguration(ct.GetBlocks())) { CubeColorer cc = gameObject.GetComponent <CubeColorer>(); if (cc != null) { Destroy(cc); } StartCoroutine(SolveCube(false)); yield break; } } }
static void Main(string[] args) { CubeSolver solver = new CubeSolver(); solver.Run(); Console.WriteLine("Running."); Console.ReadKey(true); }
void Start() { Reference reference = GetComponent <Reference>(); cube = reference.solver; previous = new List <GameObject>(); UpdateVisualization(); }
public void OnScrambleClick() { if (!isPaused) { isPaused = true; } StopAllCoroutines(); ct.MakeUnscrambled(true); CubeSolver.Reset(); StartCoroutine(ScrambleCube()); }
public void OnRecolorClick() { if (!isPaused) { isPaused = true; } StopAllCoroutines(); CubeSolver.Reset(); ct.Blacken(); StartCoroutine(ColorCube()); }
static void Main(string[] args) { Cube cube = new Cube(); DrawFlatCube(cube); if (RESOLVE) { do { DrawFlatCube(cube); cube.Scramble(30); CubeSolver solver = new CubeSolver(cube); AlgorithmCollection solution = solver.Solve(); solution.Optimize(); foreach (AlgorithmViewPair pair in solution) { cube.SetView(pair.View); DrawFlatCube(cube); Wait(); foreach (Move move in pair.Algorithm) { cube.ExecuteMove(move); Console.Clear(); DrawFlatCube(cube); Wait(); } } }while (Console.ReadKey().Key == ConsoleKey.Enter); } else { while (true) { Console.Write("Inserisci mossa: "); Move m = (Move)Enum.Parse(typeof(Move), Console.ReadLine()); cube.ExecuteMove(m); DrawFlatCube(cube); } } Console.ReadLine(); }
void Awake() { for (int i = 0; i < 3 /*aww*/; i++) { cubeMatrix[i] = new CubeEntry[3][]; for (int j = 0; j < 3 /*aww*/; j++) { cubeMatrix[i][j] = new CubeEntry[3]; } } // generate initial cube matrix GenerateMatrix(); GenerateResetPositions(); solver = gameObject.GetComponent <CubeSolver>(); }
public void OnResetClick() { if (!isPaused) { isPaused = true; } StopAllCoroutines(); CubeSolver.Reset(); ct.MakeUnscrambled(true); playPauseButton.GetComponent <Button>().interactable = nextButton.GetComponent <Button>().interactable = lastButton.GetComponent <Button>().interactable = slowerButton.GetComponent <Button>().interactable = fasterButton.GetComponent <Button>().interactable = false; gc.SetGuideNum(Guides.BLANK); }
private void AddStepLabels(CubeSolver solver) { this.lblSolvingMethod.Text = solver.Name; // Start pos 15,62 int y = 62, x = 15; foreach (KeyValuePair <string, Tuple <Action, SolutionStepType> > step in solver.SolutionSteps) { Label l = new Label(); l.AutoSize = true; l.Font = new Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); l.Location = new Point(x, y); l.Name = string.Format("label{0}", step.Key); l.Text = step.Key; panel1.Controls.Add(l); PictureBox p = new PictureBox(); p.Location = new Point(200, y); p.Name = string.Format("pb{0}", step.Key); p.Size = new Size(17, 15); p.SizeMode = PictureBoxSizeMode.StretchImage; p.TabStop = false; panel1.Controls.Add(p); stepImgs.Add(p); l = new Label(); l.AutoSize = true; l.Font = new Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); l.Location = new Point(217, y); l.Name = string.Format("labelMoves{0}", step.Key); panel1.Controls.Add(l); stepLabels.Add(l); y += 18; } y += 10; this.lblTimeHeader.Location = new Point(10, y); y += 18; this.lblMovesHeader.Location = new Point(10, y); this.Size = new Size(338, y + 103); }
public DialogSolutionFinder(CubeSolver solver, Rubik rubik, Form parent = null) { this.solver = solver; InitializeComponent(); if (parent != null) { this.Owner = parent; this.StartPosition = FormStartPosition.CenterParent; } this.ShowInTaskbar = false; AddStepLabels(solver); solver.TrySolveAsync(rubik); solver.OnSolutionStepCompleted += solver_OnSolutionStepCompleted; solver.OnSolutionError += solver_OnSolutionError; stepLabels[currentIndex].Text = "In progress ..."; stepImgs[currentIndex].Image = Properties.Resources.refresh; }
private void Awake() { instance = this; rubikCube = GameObject.Find("RubikCube"); }
void OnApplicationQuit() { CubeSolver.RequestStop(); }
void Awake() { solver = gameObject.GetComponent <CubeSolver>(); visualizer = gameObject.GetComponent <CubeVisualizer>(); user = gameObject.GetComponent <UserControls>(); }
private IEnumerator SolveCube(bool ip = true) { int moves = 0; CubeSolver.Solve(); finishedRotation = true; isPaused = ip; ct.SetRotationSpeedIndex(4); playPauseButton.GetComponent <Button>().interactable = true; nextButton.GetComponent <Button>().interactable = lastButton.GetComponent <Button>().interactable = true; fasterButton.GetComponent <Button>().interactable = slowerButton.GetComponent <Button>().interactable = true; playPauseButton.GetComponent <Image>().sprite = play; yield return(new WaitUntil(() => CubeSolver.solution.Count > 0 && CubeSolver.guides.Count > 0)); int solutionIndex = -1; int guideIndex = 0; gc.SetGuideNum(CubeSolver.guides[guideIndex].Item2); while (true) { ct.finishedRotation = false; yield return(new WaitUntil(() => !isPaused || stepForward || stepBackward)); if (!isPaused || stepForward) { if (solutionIndex < CubeSolver.solution.Count - 1) { solutionIndex++; ct.Rotate(CubeSolver.solution[solutionIndex]); if (guideIndex < CubeSolver.guides.Count - 1 && CubeSolver.guides[guideIndex + 1].Item1 == solutionIndex) { gc.SetGuideNum(CubeSolver.guides[++guideIndex].Item2); } } else { ct.finishedRotation = true; } } else { if (solutionIndex >= 0) { ct.Rotate(CubeSolver.solution[solutionIndex].Item1, !CubeSolver.solution[solutionIndex].Item2); solutionIndex--; if (guideIndex > 0 && CubeSolver.guides[guideIndex].Item1 > solutionIndex) { gc.SetGuideNum(CubeSolver.guides[--guideIndex].Item2); } } else { ct.finishedRotation = true; } } stepForward = stepBackward = false; yield return(new WaitUntil(() => ct.finishedRotation)); yield return(new WaitForSeconds(0.1f)); } }
static void Main(string[] args) { CubeSolver.main(null); }