Exemplo n.º 1
0
    bool checkForwardCircuits(NodePosition sourcePosition, ref Type[,] connections, Direction initialDirection, ref HashSet <NodePosition> discovered)
    {
        shortCircuit = false;
        bool finished = false;

        validPath = new Stack <NodePosition>();

        //checks if children made a correct connection to goal or not
        bool notConnected = false;

        //begin initializing Stack search case with first source node


        List <NodePosition> adjacentConnectors = CircuitComponent.adjMatrix(sourcePosition, initialDirection);

        switch (initialDirection)
        {
        case Direction.Left:


            break;

        case Direction.Up:
            break;

        case Direction.Right:
            break;

        case Direction.Down:

            break;
        }

        return(false);
    }
Exemplo n.º 2
0
    void Dfs(NodePosition position, Direction dir)
    {
        List <NodePosition> list = CircuitComponent.adjMatrix(position, dir);
        int dirRep = 0;

        switch (dir)
        {
        case Direction.Left:
            dirRep = 0;
            break;

        case Direction.Up:
            dirRep = 1;
            break;

        case Direction.Right:
            dirRep = 2;
            break;

        case Direction.Down:
            dirRep = 3;
            break;
        }
        int count = 0;

        foreach (NodePosition pos in list)
        {
            if (connections[pos.x, pos.y] == Type.Wires)
            {
                Dfs(pos, direction [dirRep][count]);
                break;
            }
            else if (connections[pos.x, pos.y] == Type.Goal)
            {
                lightBulbPass++;
                Dfs(pos, direction [dirRep][count]);
                break;
            }
            else if (connections[pos.x, pos.y] == Type.Battery)
            {
                if (lightBulbPass >= numberOfLightBulb)
                {
                    Debug.Log(lightBulbPass);
                    win = true;
                }
                else
                {
                    win = false;
                }
            }
            else if (count <= 2)
            {
                count++;
            }
        }
    }
Exemplo n.º 3
0
    bool checkForwardCircuits(NodePosition sourcePosition, ref Type[,] connections, Direction initialDirection, ref HashSet <NodePosition> discovered)
    {
        //NOTE: adjacentConnectors must start at lenght of 3; conditionals and loops assume the initial size to be 3
        List <NodePosition> adjacentConnectors;

        path = new Stack <NodePosition>();
        Direction    direction        = initialDirection;
        Direction    currentDirection = initialDirection;
        NodePosition currentPosition  = sourcePosition;
        int          x           = 0;
        int          conditional = 0;

        shortCircuit = false;
        bool finished = false;

        //checks if children made a correct connection to goal or not
        bool notConnected = false;

        //begin initializing Stack search case with first source node
        positionStack.Push(sourcePosition);
        directionStack.Push(direction);
        while ((positionStack.Count > 0) && (!finished))
        {
            adjacentConnectors = CircuitComponent.adjMatrix(currentPosition, direction);
            initialDirection   = directionSequence[(int)direction][x];
            switch (direction)
            {
            case Direction.Left:
                foreach (NodePosition nextPosition in adjacentConnectors)
                {
                    conditional = validateConnections(nextPosition, ref connections, direction, ref discovered);
                    if (conditional % 2 == 0)
                    {
                        if (conditional == 0)
                        {
                            notConnected = false;
                        }
                        else
                        {
                            notConnected = false;
                            path.Push(nextPosition);
                            positionStack.Push(nextPosition);
                            directionStack.Push(direction);
                            discovered.Add(nextPosition);
                        }
                    }
                    else
                    {
                        if (conditional < 0)
                        {
                            shortCircuit = true;
                            finished     = true;
                        }
                        else
                        {
                            //nextPosition already added to discovered in validateConnections() method (only if it wasn't already in the discovered set)
                        }
                    }
                    x++;
                }
                break;

            case Direction.Up:
                break;

            case Direction.Right:
                break;

            case Direction.Down:

                break;
            }
            if (notConnected)
            {
                path.Pop();
            }
        }

        return(false);
    }