コード例 #1
0
 public void IdentifyOriginPosition()
 {
     // percorre todo o labirinto verificando se existe algum ponto de origem (X)
     for (int l = 1; l <= Maze.Lines; l++)
     {
         for (int c = 1; c <= Maze.Columns; c++)
         {
             if (Maze.GetComponent(new Position(l, c)).ComponentValue.Equals("X"))
             {
                 CurrentPosition = new Position(l, c);
                 VisitedPositions.Add("O [" + CurrentPosition.Line + ", " + CurrentPosition.Column + "]");
             }
         }
     }
     if (CurrentPosition == null)
     {
         throw new MazeException("O labirinto não possui nenhum ponto de origem (X).");
     }
 }
コード例 #2
0
            private void UpdateCurrentPosition(string movement, bool returning)
            {
                // movimenta-se no labirinto seguindo as regras
                switch (movement)
                {
                case "C":
                    if (returning)
                    {
                        movement = "B";
                        CurrentPosition.Line++;
                    }
                    else
                    {
                        CurrentPosition.Line--;
                    }
                    break;

                case "E":
                    if (returning)
                    {
                        movement = "D";
                        CurrentPosition.Column++;
                    }
                    else
                    {
                        CurrentPosition.Column--;
                    }
                    break;

                case "D":
                    if (returning)
                    {
                        movement = "E";
                        CurrentPosition.Column--;
                    }
                    else
                    {
                        CurrentPosition.Column++;
                    }
                    break;

                case "B":
                    if (returning)
                    {
                        movement = "C";
                        CurrentPosition.Line--;
                    }
                    else
                    {
                        CurrentPosition.Line++;
                    }
                    break;
                }
                // seta e guarda a posição que foi visitada
                VisitedPositions.Add(movement + " [" + CurrentPosition.Line + ", " + CurrentPosition.Column + "]");
                Maze.GetComponent(CurrentPosition).SetVisited();
                // caso seja uma posição que ainda não foi visitada, registra a ocorrência em uma lista que auxiliará a retornar pelo caminho (quando for o caso)
                if (!returning)
                {
                    AuxReturn.Add(movement + " [" + CurrentPosition.Line + ", " + CurrentPosition.Column + "]");
                }
            }