void TreatImun()//излечиться силами иммунитета { if (Ill.typePass != 1) { int tmp = GetProb(this.immun + this.dopimmun, this.ill.strong); if (tmp > 0) { dopimmun += 5; this.isSick = false; this.ill = null; } if (tmp == 0) { Random r = new Random(); int rand = r.Next(0, 2); if (rand == 0) { dopimmun += 5; this.isSick = false; this.ill = null; } } } }
//Данная функция предназначена для передачи болезни от одной особи к другой. //Для этого функция создает копию материнской болезни, а затем мутирует ее. Функция возвращает итоговый вариант болезни //Функция вызывается следующим способом: Особь2.ILL = Особь1.ILL.GetIll() public Ill GetIll()//передать болезнь другой особи, при передае болезнь мутирует { Ill newIll = new Ill(); newIll.deadly = this.deadly; newIll.contagation = this.contagation; newIll.strong = this.strong; newIll.passDict = this.passDict; newIll.MutateChanse = this.MutateChanse; newIll.Mutate(); return(newIll); }
public void TryBeginSick(Ill ill)//заразить особь { int tmp = GetProb(ill.contagation, this.immun); if (tmp > 0) { this.isSick = true; this.ill = ill.GetIll(); Life.LI.Add(this.ill); } if (tmp == 0) { Random r = new Random(); int rand = r.Next(0, 2); if (rand == 0) { this.isSick = true; this.ill = ill.GetIll(); Life.LI.Add(this.ill); } } }
public void TreatDrugs()//излечить особь лекарством { int tmp = GetProb(Drugs.strong, this.ill.strong); if (tmp > 0) { dopimmun += 5; this.isSick = false; this.ill = null; } if (tmp == 0) { Random r = new Random(); int rand = r.Next(0, 2); if (rand == 0) { dopimmun += 5; this.isSick = false; this.ill = null; } } }
public void GenereteIll() //Генерируем болезни { int deadly = tbDead.Value; //смертоносность int spDeadly = Convert.ToInt32(tbd.Text); //разброс смртоносности int muteC = tbMuteChanseIll.Value; //мутация при передаче int spMuteC = Convert.ToInt32(tbmci.Text); //разброс мутации int con = tbCon.Value; //заразность int spCon = Convert.ToInt32(tbc.Text); //разброс заразности int strong = tbStrong.Value; //сила int spStrong = Convert.ToInt32(tbs.Text); //разброс силы int nIll = Convert.ToInt32(tbIllSp.Text); //кол-во зараженных int passD = tbDistInfect.Value; //расстояние передачи int spPassD = Convert.ToInt32(tbpd.Text); //разброс расстояния int nSP = Convert.ToInt32(tbSize.Text); //если пользователь хочет заразить больше особей, чем есть - заражаем всех if (nIll > nSP) { nIll = nSP; } for (int i = 0; i < nIll; i++) { Random r = new Random(); int ndeadly = deadly + r.Next(-spDeadly, spDeadly + 1); if (ndeadly < 0) { ndeadly = 0; } int nMuteC = muteC + r.Next(-spMuteC, spMuteC + 1); if (nMuteC < 1) { nMuteC = 1; } int ncon = con + r.Next(-spCon, spCon + 1); if (ncon < 1) { ncon = 1; } int nstrong = strong + r.Next(-spStrong, spStrong + 1); if (nstrong < 1) { nstrong = 1; } int nPassDist = passD + r.Next(-spPassD, spPassD + 1); if (nPassDist < 1) { nPassDist = 1; } Ill newIll = new Ill(); newIll.deadly = ndeadly; newIll.MutateChanse = nMuteC; newIll.contagation = ncon; newIll.strong = nstrong; newIll.passDict = nPassDist; Life.LI.Add(newIll); Life.LS[i].ill = newIll; Life.LS[i].isSick = true; Random r1 = new Random(); int t = r1.Next(1, 50); System.Threading.Thread.Sleep(t);//чтобы генератор успел змениться } }