private void Print()
        {
            foreach (Rabbit Rabbit in Rabbits)
            {
                FieldArray[Rabbit.GetX() - 1, Rabbit.GetY() - 1] = 3;
            }

            foreach (Wolf Wolf in Wolfs)
            {
                FieldArray[Wolf.GetX() - 1, Wolf.GetY() - 1] = 1;
            }
            foreach (FemaleWolf femaleWolf in FemaleWolfs)
            {
                FieldArray[femaleWolf.GetX() - 1, femaleWolf.GetY() - 1] = 2;
            }
        }
示例#2
0
        public void InitializationRabbits()
        {
            var rand = new Random(9);
            int x    = 0;
            int y    = 0;

            for (int i = 0; i < CountRabbits; i++)
            {
                x = rand.Next(1, 21);
                y = rand.Next(1, 21);
                Rabbit newRabbit = new Rabbit(x, y);
                if (!Rabbits.Contains(newRabbit))
                {
                    Rabbits.Add(newRabbit);
                }
                else
                {
                    i--;
                }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Object rabbitNeighbor     = null;
            Object femaleWolfNeighbor = null;



            for (int i = 0; i < Wolfs.Count(); i++)    //Wolf
            {
                if (Wolfs[i].GetScore() <= 0)
                {
                    Wolfs.Remove(Wolfs[i]);
                }
                else
                {
                    foreach (Rabbit rabbit in Rabbits)
                    {
                        rabbitNeighbor = Wolfs[i].CheckNeighbors <Rabbit>(rabbit, rabbit.GetX(), rabbit.GetY());
                        if (rabbitNeighbor != null)
                        {
                            bool caughtКabbit = Wolfs[i].СhaseForRabbit(rabbit.GetX(), rabbit.GetY());
                            if (caughtКabbit)
                            {
                                Rabbits.Remove(rabbit);
                                FieldArray[rabbit.GetX() - 1, rabbit.GetY() - 1] = 4;
                            }
                            break;
                        }
                    }
                    if (rabbitNeighbor == null)
                    {
                        foreach (FemaleWolf femaleWolf in FemaleWolfs)
                        {
                            femaleWolfNeighbor = Wolfs[i].CheckNeighbors <FemaleWolf>(femaleWolf, femaleWolf.GetX(), femaleWolf.GetY());
                            if (femaleWolfNeighbor != null)
                            {
                                bool birth = Wolfs[i].СhaseForFemaleWolf(femaleWolf.GetX(), femaleWolf.GetY());
                                if (birth)
                                {
                                    var rand = new Random();
                                    int x    = rand.Next(1, 21);
                                    int y    = rand.Next(1, 21);

                                    for (int j = 0; j < CountWolf; j++)
                                    {
                                        while (Wolfs[i].GetX() == x && Wolfs[i].GetY() == y)
                                        {
                                            x = rand.Next(1, 21);
                                            y = rand.Next(1, 21);
                                        }
                                    }
                                    Wolfs.Add(new Wolf(x, y));
                                }
                                break;
                            }
                        }
                    }
                    if (femaleWolfNeighbor == null && rabbitNeighbor == null)
                    {
                        Wolfs[i].Step();
                        for (int j = 0; j < Wolfs.Count(); j++)
                        {
                            if ((j != i))
                            {
                                while (Wolfs[j].GetX() == Wolfs[i].GetX() && Wolfs[j].GetY() == Wolfs[i].GetY())
                                {
                                    Wolfs[i].Step();
                                }
                            }
                        }
                    }
                }
            }

            foreach (Wolf Wolf in Wolfs)
            {
                if (FieldArray[Wolf.GetX() - 1, Wolf.GetY() - 1] == 1)
                {
                    FieldArray[Wolf.GetX() - 1, Wolf.GetY() - 1] = 4;
                }
                else
                {
                    FieldArray[Wolf.GetX() - 1, Wolf.GetY() - 1] = 1;
                }
            }


            rabbitNeighbor = null;

            for (int i = 0; i < FemaleWolfs.Count(); i++)    //FemaleWolfs
            {
                if (FemaleWolfs[i].GetScore() <= 0)
                {
                    FemaleWolfs.Remove(FemaleWolfs[i]);
                }
                else
                {
                    foreach (Rabbit rabbit in Rabbits)
                    {
                        rabbitNeighbor = FemaleWolfs[i].CheckNeighbors <Rabbit>(rabbit, rabbit.GetX(), rabbit.GetY());
                        if (rabbitNeighbor != null)
                        {
                            bool caughtКabbit = FemaleWolfs[i].СhaseForRabbit(rabbit.GetX(), rabbit.GetY());


                            if (caughtКabbit)
                            {
                                Rabbits.Remove(rabbit);
                                FieldArray[rabbit.GetX() - 1, rabbit.GetY() - 1] = 4;
                            }
                            break;
                        }
                    }


                    if (rabbitNeighbor == null)
                    {
                        bool Empty = false;
                        while (!Empty)
                        {
                            FemaleWolfs[i].Step();
                            for (int j = 0; j < FemaleWolfs.Count(); j++)
                            {
                                if ((j != i))
                                {
                                    while (FemaleWolfs[j].GetX() == FemaleWolfs[i].GetX() && FemaleWolfs[j].GetY() == FemaleWolfs[i].GetY())
                                    {
                                        FemaleWolfs[i].Step();
                                    }
                                }
                            }
                            Empty = Model.IsFree(FemaleWolfs[i].GetX(), FemaleWolfs[i].GetY(), FieldArray);
                        }
                    }
                }
            }


            foreach (FemaleWolf femaleWolf in FemaleWolfs)
            {
                if (FieldArray[femaleWolf.GetX() - 1, femaleWolf.GetY() - 1] == 1 || FieldArray[femaleWolf.GetX() - 1, femaleWolf.GetY() - 1] == 4 || FieldArray[femaleWolf.GetX() - 1, femaleWolf.GetY() - 1] == 2)
                {
                    FieldArray[femaleWolf.GetX() - 1, femaleWolf.GetY() - 1] = 4;
                }
                else
                {
                    FieldArray[femaleWolf.GetX() - 1, femaleWolf.GetY() - 1] = 2;
                }
            }



            for (int i = 0; i < Rabbits.Count(); i++)    //Rabbits
            {
                bool Empty = false;
                while (!Empty)
                {
                    Rabbits[i].Step();
                    for (int j = 0; j < Rabbits.Count(); j++)
                    {
                        if ((j != i))
                        {
                            while (Rabbits[j].GetX() == Rabbits[i].GetX() && Rabbits[j].GetY() == Rabbits[i].GetY())
                            {
                                Rabbits[i].Step();
                            }
                        }
                    }
                    Empty = Model.IsFree(Rabbits[i].GetX(), Rabbits[i].GetY(), FieldArray);
                }
                if (Rabbits[i].Birth())
                {
                    var rand = new Random();
                    int x    = rand.Next(1, 21);
                    int y    = rand.Next(1, 21);

                    for (int j = 0; j < countRabbit; j++)
                    {
                        while (Rabbits[i].GetX() == x && Rabbits[i].GetY() == y)
                        {
                            x = rand.Next(1, 21);
                            y = rand.Next(1, 21);
                        }
                    }
                    Rabbits.Add(new Rabbit(x, y));
                }
            }

            foreach (Rabbit Rabbit in Rabbits)
            {
                if (FieldArray[Rabbit.GetX() - 1, Rabbit.GetY() - 1] == 1 || FieldArray[Rabbit.GetX() - 1, Rabbit.GetY() - 1] == 2 || FieldArray[Rabbit.GetX() - 1, Rabbit.GetY() - 1] == 4)
                {
                    FieldArray[Rabbit.GetX() - 1, Rabbit.GetY() - 1] = 4;
                }
                else
                {
                    FieldArray[Rabbit.GetX() - 1, Rabbit.GetY() - 1] = 3;
                }
            }

            CountWolf   = Wolfs.Count();
            countRabbit = Rabbits.Count();
            UpdatePanels();
            PrintScore();
            PrintCount();
            label11.Text = "";
            if (Rabbits.Count() > 400)
            {
                label11.Text += "Rabbits - win";
                label11.Text += "\r\n";
                label11.Text += "please click initialization";
                ClearField();
            }
            if (Rabbits.Count() == 0)
            {
                label11.Text += "Wolfs and  FemaleWolfs - win";
                label11.Text += "\r\n";
                label11.Text += "please click initialization";
                ClearField();
            }
        }