Esempio n. 1
0
        static void Main(string[] args)
        {
            Personagem leao  = new Personagem("Leão");
            Personagem cabra = new Personagem("Cabra");
            Personagem feno  = new Personagem("Feno");

            cabra.EhComidoPor = leao;
            feno.EhComidoPor  = cabra;

            Margem            margemDireita  = new Margem("Direita");
            Margem            margemEsquerda = new Margem("Esquerda");
            List <Personagem> personagens    = new List <Personagem>
            {
                leao,
                cabra,
                feno
            };

            margemEsquerda.Items = personagens;

            rio = new Rio(margemDireita, margemEsquerda);

            while (rio.MargemDireita.Items.Count < 3)
            {
                Personagem selecionado = null;

                while (selecionado == null && (rio.Atual.Items.Count > 1 || rio.Atual == rio.MargemEsquerda))
                {
                    selecionado = rio.Atual.Items[new Random().Next(0, rio.Atual.Items.Count - 1)];

                    List <Personagem> restante = rio.Atual.Items.FindAll(p => p != selecionado);

                    if (restante.Count > 1)
                    {
                        if (restante[0].EhComidoPor == restante[1] || restante[1].EhComidoPor == restante[0])
                        {
                            selecionado = null;
                        }
                    }
                    else
                    {
                        if (restante.Count > 0)
                        {
                            if (restante[0].EhComidoPor != selecionado && selecionado.EhComidoPor != restante[0] && rio.Atual == rio.MargemDireita)
                            {
                                selecionado = null;
                                break;
                            }
                        }
                    }
                }

                Mover(selecionado);
            }

            Console.ReadKey();
        }
Esempio n. 2
0
        public Rio(Margem margemDireita, Margem margemEsquerda)
        {
            MargemDireita  = margemDireita;
            MargemEsquerda = margemEsquerda;

            if (MargemDireita.Items == null)
            {
                MargemDireita.Items = new List <Personagem>();
            }
            if (MargemEsquerda.Items == null)
            {
                MargemEsquerda.Items = new List <Personagem>();
            }

            this.Atual = MargemEsquerda;
        }