Ejemplo n.º 1
0
        private void ActionSquare()
        {
            for (int i = 0; i < 10; i++)
            {
                if (currentBio.Brain[currentBio.Pointer] < 8)
                {
                    Move(); break;
                }

                if (currentBio.Brain[currentBio.Pointer] > 7 && currentBio.Brain[currentBio.Pointer] < 16)
                {
                    Turn(); continue;
                }

                if (currentBio.Brain[currentBio.Pointer] > 15 && currentBio.Brain[currentBio.Pointer] < 24)
                {
                    Convert(); break;
                }

                if (currentBio.Brain[currentBio.Pointer] > 23 && currentBio.Brain[currentBio.Pointer] < 32)
                {
                    Check(currentBio.Brain[currentBio.Pointer] - 24); continue;
                }

                if (currentBio.Brain[currentBio.Pointer] > 31)
                {
                    currentBio.Pointer += currentBio.Brain[currentBio.Pointer];
                    if (currentBio.Pointer >= constants.SizeBrain)
                    {
                        currentBio.Pointer -= constants.SizeBrain;
                    }
                    continue;
                }
            }

            currentBio.Health--;

            if (currentBio.Health > 99)
            {
                currentBio.Health = 99;
            }
            if (currentBio.Health <= 0)
            {
                currentBio.Health = 0;
            }

            if (currentBio.Health <= 0)
            {
                currentBio.PointX = -1;
                currentBio.PointY = -1;
                Counter.CountLiveBio--;

                if (Counter.CountLiveBio == (constants.CountBio / 8))
                {
                    minCountLive = true;
                    currentBio   = null;
                }
            }
        }
Ejemplo n.º 2
0
 public ViewModelBio(BioSquare model) : base(model)
 {
     this.model = model;
     Brain      = model.Brain;
     this.model.ChangeHealth  += (sender, square) => RaisePropertyChanged(nameof(Health));
     this.model.ChangePointX  += (sender, X) => PointX = X;
     this.model.ChangePointY  += (sender, Y) => PointY = Y;
     this.model.ChangePointer += (sender, squarePointer) => Pointer = squarePointer;
     IsSelected = false;
 }
Ejemplo n.º 3
0
        private void StartAction()
        {
            for (int i = 0; i < constants.CountBio; i++)
            {
                if (worldMap[i].PointX == -1 && worldMap[i].PointY == -1)
                {
                    continue;
                }

                currentBio   = worldMap[i] as BioSquare;
                currentIndex = i;

                ActionSquare();

                if (minCountLive)
                {
                    return;
                }
            }
        }
Ejemplo n.º 4
0
        public void AddChild(BaseSquare[] worldMap)
        {
            BioSquare[] parents     = new BioSquare[constants.CountBio / 8];
            int         indexParent = 0;

            for (int i = 0; i < constants.CountBio; i++)
            {
                if (worldMap[i].PointX != -1 && worldMap[i].PointY != -1)
                {
                    parents[indexParent++] = (BioSquare)(worldMap[i] as BioSquare).Clone();
                }
            }

            for (int i = 0; i < parents.Length; i++)
            {
                int count = 0;

                while (count < 7)
                {
                    int y = random.Next(1, constants.WorldSizeY - 1);
                    int x = random.Next(1, constants.WorldSizeX - 1);

                    if (!CheckIndex(worldMap, x, y))
                    {
                        int index    = FindIndexAdd(worldMap, "Bio", 0, constants.CountBio);
                        var children = worldMap[index] as BioSquare;

                        children.PointX    = x;
                        children.PointY    = y;
                        children.Pointer   = 0;
                        children.Health    = constants.HealthSquare;
                        children.Direction = (Direction)random.Next(8);
                        children.Brain     = BrainGeneratorChild(parents[i].Brain);

                        Counter.CountLiveBio++;
                        count++;
                    }
                }
            }
        }