Esempio n. 1
0
        public static void Main(string[] args)
        {
            //Setup
            Random random = new Random();

            //Initalize Switches
            ISwitch switchOne = new Switch(new IntIdentifier(1), (SwitchPosition)random.Next(2));
            ISwitch switchTwo = new Switch(new IntIdentifier(2), (SwitchPosition)random.Next(2));

            //Initalize SwitchRoom
            ISwitchRoom switchRoom = new SwitchRoom(new List <ISwitch>()
            {
                switchOne, switchTwo
            });

            //Initalize Prisoners
            ILeader          leader    = new Leader(new IntIdentifier(1));
            List <IPrisoner> prisoners = new List <IPrisoner>()
            {
                leader
            };

            for (int prisonerId = 2; prisonerId <= 23; prisonerId++)
            {
                prisoners.Add(new Prisoner(new IntIdentifier(prisonerId)));
            }

            //Initalize Warden
            IWarden warden = new Warden(switchRoom, prisoners);

            //Execute
            do
            {
                warden.Action();
            } while (!warden.FreePrisoners());

            //Finalize
            Console.WriteLine("Prisoners are Free!");
        }