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; } } }
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; }
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; } } }
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++; } } } }