public void CategorizeByModel()
        {   //Method to categorize droids in the order of Astromech, Janitor, Utility, Protocol
            GenericStack <IDroid> protocolStack  = new GenericStack <IDroid>();
            GenericStack <IDroid> utilityStack   = new GenericStack <IDroid>();
            GenericStack <IDroid> janitorStack   = new GenericStack <IDroid>();
            GenericStack <IDroid> astromechStack = new GenericStack <IDroid>();

            foreach (IDroid droid in droidCollection)
            {
                if (droid != null)
                {
                    switch (droid.GetModel())
                    {   //Go through the droidCollection and separate the droids into stacks by Model
                    case "PROTOCOL":
                        protocolStack.Add(droid);
                        break;

                    case "UTILITY":
                        utilityStack.Add(droid);
                        break;

                    case "JANITOR":
                        janitorStack.Add(droid);
                        break;

                    case "ASTROMECH":
                        astromechStack.Add(droid);
                        break;

                    default:
                        break;
                    }
                }
            }

            //Create the queue and add the stacks to it in the desired order
            GenericQueue <IDroid> droidQueue = new GenericQueue <IDroid>();

            droidQueue.AddStack(astromechStack);
            droidQueue.AddStack(janitorStack);
            droidQueue.AddStack(utilityStack);
            droidQueue.AddStack(protocolStack);

            droidCollection = new IDroid[droidQueue.Depth];

            for (int i = 0; i < droidQueue.Depth; i++)
            {
                droidCollection[i] = (IDroid)droidQueue.Retrieve(i + 1).Droid;
            }
        }
Esempio n. 2
0
        public void SortModel()
        {
            GenericStack <UtilityDroid>   UtilityDroidStack   = new GenericStack <UtilityDroid>();
            GenericStack <AstromechDroid> AstromechDroidStack = new GenericStack <AstromechDroid>();
            GenericStack <ProtocolDroid>  ProtocolDroidStack  = new GenericStack <ProtocolDroid>();
            GenericStack <JanitorDroid>   JanitorDroidStack   = new GenericStack <JanitorDroid>();


            foreach (IDroid droids in droidCollection)
            {
                if (droids is UtilityDroid)
                {
                    UtilityDroidStack.Add((UtilityDroid)droids);
                }
                else if (droids is AstromechDroid)
                {
                    AstromechDroidStack.Add((AstromechDroid)droids);
                }
                else if (droids is ProtocolDroid)
                {
                    ProtocolDroidStack.Add((ProtocolDroid)droids);
                }
                else if (droids is JanitorDroid)
                {
                    JanitorDroidStack.Add((JanitorDroid)droids);
                }


                //*****************************************************************************************************************PROBLEM***********************************************************************************************************************************8*************************************************
                //Error	4	Argument 1: cannot convert from 'cis237assignment4.GenericStack<cis237assignment4.UtilityDroid>' to 'cis237assignment4.IDroid'	c:\users\jason\cis237\cis237assignment4\cis237assignment4\droidcollection.cs	174	23	cis237assignment4
                //Error	3	The best overloaded method match for 'cis237assignment4.GenericQueue<cis237assignment4.IDroid>.Add(cis237assignment4.IDroid)' has some invalid arguments	c:\users\jason\cis237\cis237assignment4\cis237assignment4\droidcollection.cs	175	13	cis237assignment4
                /************************************************************************************************************************************************************************************************************************************************/
            }
            GenericQueue <IDroid> Queue = new GenericQueue <IDroid>();
            //Queue.Add(AstromechDroidStack);
            //Queue.Add(UtilityDroidStack);
        }
        //method to organize droids by type
        public bool Organize()
        {
            GenericStack <AstromechDroid> astromechStack = new GenericStack <AstromechDroid>();
            GenericStack <JanitorDroid>   janitorStack   = new GenericStack <JanitorDroid>();
            GenericStack <UtilityDroid>   utilityStack   = new GenericStack <UtilityDroid>();
            GenericStack <ProtocolDroid>  protocolStack  = new GenericStack <ProtocolDroid>();

            GenericQueue <IDroid> droidQueue = new GenericQueue <IDroid>();

            //Add droids to appropriate stack types
            for (int i = 0; i < lengthOfCollection; i++)
            {
                try
                {
                    astromechStack.Add((AstromechDroid)droidCollection[i]);
                }
                catch
                {
                    try
                    {
                        janitorStack.Add((JanitorDroid)droidCollection[i]);
                    }
                    catch
                    {
                        try
                        {
                            utilityStack.Add((UtilityDroid)droidCollection[i]);
                        }
                        catch
                        {
                            try
                            {
                                protocolStack.Add((ProtocolDroid)droidCollection[i]);
                            }
                            catch
                            {
                                return(false);
                            }
                        }
                    }
                }
            }

            //Add droids in order to the queue
            while (astromechStack.Head != null)
            {
                droidQueue.Add((IDroid)astromechStack.Pop());
            }

            while (janitorStack.Head != null)
            {
                droidQueue.Add((IDroid)janitorStack.Pop());
            }

            while (utilityStack.Head != null)
            {
                droidQueue.Add((IDroid)utilityStack.Pop());
            }

            while (protocolStack.Head != null)
            {
                droidQueue.Add((IDroid)protocolStack.Pop());
            }

            //Dequeue droids back into the array
            for (int i = 0; droidQueue.Tail != null; i++)
            {
                droidCollection[i] = (IDroid)droidQueue.Dequeue();
            }

            return(true);
        }