Пример #1
0
 // start와 goal state를 정해준다.
 public void set_start_goal_state()
 {
     this.algorithm             = gameObject.GetComponent <A_star>();
     this.algorithm.start_state = this.start_state;          //this.sample;
     this.algorithm.goal_state  = this.goal_state;
 }
Пример #2
0
 //***************************************************
 public void Astar_solving()
 {
     if (detect.detect_puzzle(_2D, puzzle_size, zeroplace[0]))
     {
         A_star A = new A_star();
         start = new node(_2D, puzzle_size, 0, zeroplace, puzzle_string, false);
         path  = new node();
         if (manhattenradio.Enabled)
         {
             path = A.solve(start, false);
         }
         else
         {
             path = A.solve(start, true);
         }
         numberofmoves = path.moves;
         stepslist.Items.Clear();
         stepslist.Items.Add("Number Of Moves = " + numberofmoves.ToString());
         while (path.parent != null)
         {
             stepsstack.Push(path);
             path = path.parent;
         }
         stepsstack.Push(start);
         //*******************************************
         int    s = stepsstack.Count;
         String steps = "";
         int    x, y;
         for (int i = 1; i < s; i++)
         {
             if (stepsstack.ElementAt(i).node_direction == "right")
             {
                 x     = stepsstack.ElementAt(i).zero_placeXY[0];
                 y     = stepsstack.ElementAt(i).zero_placeXY[1];
                 steps = (i).ToString() + "- Move " + stepsstack.ElementAt(i).puzzle2D[x, y - 1].ToString() + " left";
                 stepslist.Items.Add(steps);
             }
             else if (stepsstack.ElementAt(i).node_direction == "left")
             {
                 x     = stepsstack.ElementAt(i).zero_placeXY[0];
                 y     = stepsstack.ElementAt(i).zero_placeXY[1];
                 steps = (i).ToString() + "- Move " + stepsstack.ElementAt(i).puzzle2D[x, y + 1].ToString() + " right";
                 stepslist.Items.Add(steps);
                 //----------------------------------------------------
             }
             else if (stepsstack.ElementAt(i).node_direction == "up")
             {
                 x     = stepsstack.ElementAt(i).zero_placeXY[0];
                 y     = stepsstack.ElementAt(i).zero_placeXY[1];
                 steps = (i).ToString() + "- Move " + stepsstack.ElementAt(i).puzzle2D[x + 1, y].ToString() + " Down";
                 stepslist.Items.Add(steps);
                 //----------------------------------------------------
             }
             else if (stepsstack.ElementAt(i).node_direction == "down")
             {
                 x     = stepsstack.ElementAt(i).zero_placeXY[0];
                 y     = stepsstack.ElementAt(i).zero_placeXY[1];
                 steps = (i).ToString() + "- Move " + stepsstack.ElementAt(i).puzzle2D[x - 1, y].ToString() + " Up";
                 stepslist.Items.Add(steps);
                 //------------------------------------------
             }
         }
     }
     else
     {
         MessageBox.Show("Unsolvable");
     }
     this.Enabled = true;
 }