コード例 #1
0
ファイル: World.cs プロジェクト: Domcik8/University
        public void life(int periodOfLife)
        {
            LifeTools Delegate1 = Consume;
            int       i, j;
            int       found = 0;
            bool      dead;
            Carnivore prototypeOfWolf;
            Herbivore prototypeOfRabbit;
            Plant     prototypeOfFlower;

            Println();
            for (i = 0; i < periodOfLife; i++)
            {
                try
                {
                    Thread.Sleep(500);
                }
                catch (ArgumentOutOfRangeException exc)
                {
                    System.Console.WriteLine("Error while thread was sleeping");
                    System.Console.WriteLine(exc);
                }
                //Println();
                //Wolfs live
                for (j = 0; j < wolf.Count(); j++)
                {
                    dead            = false;
                    prototypeOfWolf = wolf[j];
                    if (prototypeOfWolf.moveToday != 0)
                    {
                        if (prototypeOfWolf.Grow() == 1)
                        {
                            Death(prototypeOfWolf);
                            dead = true;
                        }
                        else
                        {
                            found = FindClosestFormOfLife(prototypeOfWolf);
                            if (found == 0)
                            {
                                MoveToClosest(Delegate1, prototypeOfWolf);
                            }
                        }
                        if (!dead)
                        {
                            if (CheckIllness(prototypeOfWolf))
                            {
                                if (prototypeOfWolf.Grow() == 1)
                                {
                                    Death(prototypeOfWolf);
                                    dead = true;
                                }
                            }
                        }
                        if (found == 0 || dead)
                        {
                            Println();
                            try
                            {
                                Thread.Sleep(500);
                            }
                            catch (ArgumentOutOfRangeException exc)
                            {
                                System.Console.WriteLine("Error while thread was sleeping");
                                System.Console.WriteLine(exc);
                            }
                        }
                    }
                    if (!dead)
                    {
                        prototypeOfWolf.moveToday = prototypeOfWolf.speed;
                    }
                }
                //println();
                //Rabbits live
                for (j = 0; j < rabbit.Count(); j++)
                {
                    dead = false;
                    prototypeOfRabbit = rabbit[j];
                    if (prototypeOfRabbit.moveToday != 0)
                    {
                        if (prototypeOfRabbit.Grow() == 1)
                        {
                            Death(prototypeOfRabbit);
                            dead = true;
                        }
                        else
                        {
                            found = FindClosestFormOfLife(prototypeOfRabbit);
                            if (found == 0)
                            {
                                MoveToClosest(Delegate1, prototypeOfRabbit);
                            }
                        }
                        if (!dead)
                        {
                            if (CheckIllness(prototypeOfRabbit))
                            {
                                if (prototypeOfRabbit.Grow() == 1)
                                {
                                    Death(prototypeOfRabbit);
                                    dead = true;
                                }
                            }
                        }
                        if (found == 0 || dead)
                        {
                            Println();
                            try
                            {
                                Thread.Sleep(500);
                            }
                            catch (ArgumentOutOfRangeException exc)
                            {
                                System.Console.WriteLine("Error while thread was sleeping");
                                System.Console.WriteLine(exc);
                            }
                        }
                    }
                    if (!dead)
                    {
                        prototypeOfRabbit.moveToday = prototypeOfRabbit.speed;
                    }
                }
                //println();
                //Flowers live
                for (j = 0; j < flower.Count; j++)
                {
                    dead = false;
                    prototypeOfFlower = flower[j];
                    if (prototypeOfFlower.reproductedToday == 0)
                    {
                        if (prototypeOfFlower.Grow() == 1)
                        {
                            Death(prototypeOfFlower);
                            dead = true;
                        }
                        else if (!CheckIllness(prototypeOfFlower))
                        {
                            prototypeOfFlower.reproductedToday = Reproduction(prototypeOfFlower);
                        }
                    }
                    if (prototypeOfFlower.reproductedToday > 0 || dead)
                    {
                        Println();
                        try
                        {
                            Thread.Sleep(500);
                        }
                        catch (ArgumentOutOfRangeException exc)
                        {
                            System.Console.WriteLine(exc);
                        }
                    }
                    if (!dead)
                    {
                        prototypeOfFlower.reproductedToday = 0;
                    }
                }
                day++;
                //Println();
            }
        }
コード例 #2
0
ファイル: World.cs プロジェクト: Domcik8/University
        void MoveToClosest(LifeTools consuming, Animal seeker)
        {
            int i, j = 0;
            int movable = 0;

            if (seeker.x != xClosest && seeker.moveToday != 0)
            {
                j = seeker.moveToday;
                for (i = 0; i < j; i++)
                {
                    if (seeker.x < xClosest)
                    {
                        if (world[seeker.x + 1, seeker.y] == 'r' && seeker.symbol == 'w')
                        {
                            seeker.moveToday = 1;
                            consuming(seeker);
                            movable = 1;
                        }
                        else if (world[seeker.x + 1, seeker.y] == 177 && seeker.symbol == 'r')
                        {
                            seeker.moveToday = 1;
                            consuming(seeker);
                            movable = 1;
                        }
                        else if (world[seeker.x + 1, seeker.y] == 177 && seeker.symbol == 'w')
                        {
                            seeker.moveToday          = 1;
                            world[seeker.x, seeker.y] = '.';
                            Destroy(seeker.x + 1, seeker.y);
                            movable = 1;
                        }
                        else if (world[seeker.x + 1, seeker.y] == '.')
                        {
                            world[seeker.x, seeker.y] = '.';
                            movable = 1;
                        }
                        if (movable == 1)
                        {
                            seeker.moveToday--;
                            world[seeker.x + 1, seeker.y] = seeker.symbol;
                            seeker.x++;
                            movable = 0;
                        }
                    }
                }
                j = seeker.moveToday;
                for (i = 0; i < j; i++)
                {
                    if (seeker.x > xClosest)
                    {
                        if (world[seeker.x - 1, seeker.y] == 'r' && seeker.symbol == 'w')
                        {
                            seeker.moveToday = 1;
                            consuming(seeker);
                            movable = 1;
                        }
                        else if (world[seeker.x - 1, seeker.y] == 177 && seeker.symbol == 'r')
                        {
                            seeker.moveToday = 1;
                            consuming(seeker);
                            movable = 1;
                        }
                        else if (world[seeker.x - 1, seeker.y] == 177 && seeker.symbol == 'w')
                        {
                            seeker.moveToday          = 1;
                            world[seeker.x, seeker.y] = '.';
                            Destroy(seeker.x - 1, seeker.y);
                            movable = 1;
                        }
                        else if (world[seeker.x - 1, seeker.y] == '.')
                        {
                            world[seeker.x, seeker.y] = '.';
                            movable = 1;
                        }
                        if (movable == 1)
                        {
                            seeker.moveToday--;
                            world[seeker.x - 1, seeker.y] = seeker.symbol;
                            seeker.x--;
                            movable = 0;
                        }
                    }
                }
            }
            if (seeker.y != yClosest && seeker.moveToday != 0)
            {
                j = seeker.moveToday;
                for (i = 0; i < j; i++)
                {
                    if (seeker.y < yClosest)
                    {
                        if (world[seeker.x, seeker.y + 1] == 'r' && seeker.symbol == 'w')
                        {
                            seeker.moveToday = 1;
                            consuming(seeker);
                            movable = 1;
                        }
                        else if (world[seeker.x, seeker.y + 1] == 177 && seeker.symbol == 'r')
                        {
                            seeker.moveToday = 1;
                            consuming(seeker);
                            movable = 1;
                        }
                        else if (world[seeker.x, seeker.y + 1] == 177 && seeker.symbol == 'w')
                        {
                            seeker.moveToday          = 1;
                            world[seeker.x, seeker.y] = '.';
                            Destroy(seeker.x, seeker.y + 1);
                            movable = 1;
                        }
                        else if (world[seeker.x, seeker.y + 1] == '.')
                        {
                            world[seeker.x, seeker.y] = '.';
                            movable = 1;
                        }
                        if (movable == 1)
                        {
                            seeker.moveToday--;
                            world[seeker.x, seeker.y + 1] = seeker.symbol;
                            seeker.y++;
                            movable = 0;
                        }
                    }
                }
                j = seeker.moveToday;
                for (i = 0; i < j; i++)
                {
                    if (seeker.y > yClosest)
                    {
                        if (world[seeker.x, seeker.y - 1] == 'r' && seeker.symbol == 'w')
                        {
                            seeker.moveToday = 1;
                            consuming(seeker);
                            movable = 1;
                        }
                        else if (world[seeker.x, seeker.y - 1] == 177 && seeker.symbol == 'r')
                        {
                            seeker.moveToday = 1;
                            consuming(seeker);
                            movable = 1;
                        }
                        else if (world[seeker.x, seeker.y - 1] == 177 && seeker.symbol == 'w')
                        {
                            seeker.moveToday          = 1;
                            world[seeker.x, seeker.y] = '.';
                            Destroy(seeker.x, seeker.y - 1);
                            movable = 1;
                        }
                        else if (world[seeker.x, seeker.y - 1] == '.')
                        {
                            world[seeker.x, seeker.y] = '.';
                            movable = 1;
                        }
                        if (movable == 1)
                        {
                            seeker.moveToday--;
                            world[seeker.x, seeker.y - 1] = seeker.symbol;
                            seeker.y--;
                            movable = 0;
                        }
                    }
                }
            }
        }