/// <summary> /// Funkcja ataku magicznego, jest prawie analogiczna do funkcji /// Gryzienia, ale ma o wiele większą moc /// </summary> /// <param name="z">Cel ataku</param> public void AtakujMagicznie(Zwierzę z) { if (this.Mana > 0) { // tworzenie generatora liczb losowych Random r = new Random(); // losuje liczbę z zakresu od 0 do maksymalnego ataku obecnego obiektu var moc = r.Next(this.Damage * 100); this.Mana = this.Mana - 1; // zwierzęciu przekazanemu jako parametr odejmuje od punktów HP tyle, ile wyniosła moc ataku z.HP = z.HP - moc; } }
/// <summary> /// Funkcja ataku magicznego, jest prawie analogiczna do funkcji /// Gryzienia, ale ma o wiele większą moc /// </summary> /// <param name="z">Cel ataku magicznego</param> /// <exception cref="NoManaException">Rzucane jeśli nie ma many</exception> public void AtakujMagicznie(Zwierzę z) { if (this.Mana > 0) { // tworzenie generatora liczb losowych Random r = new Random(); // losuje liczbę z zakresu od 0 do maksymalnego ataku obecnego obiektu var moc = r.Next(this.Damage * 100); this.Mana = this.Mana - 1; // zwierzęciu przekazanemu jako parametr odejmuje od punktów HP tyle, ile wyniosła moc ataku z.HP = z.HP - moc; } else // w sytuacji, gdy próbuje się wywołać tę metodę, ale mana wynosi // 0, rzucany jest wyjątek NoManaException throw new NoManaException(); }
/// <summary> /// Ta funkcja atakuje inne zwierzę - podawane jest jako parametr wykonania tej funkcji. /// </summary> /// <param name="z">Zwierzę do zaatakowania</param> public virtual void Gryź(Zwierzę z) { Random r = new Random(); if (r.Next(5) >= z.Agility) { var moc = r.Next(this.Damage); z.HP = z.HP - moc; } }
/// <summary> /// Ta funkcja atakuje inne zwierzę - podawane jest jako parametr wykonania tej funkcji. /// </summary> /// <param name="z">Zwierzę do zaatakowania</param> public virtual void Gryź(Zwierzę z) { // tworzenie generatora liczb losowych Random r = new Random(); // losuje liczbę z zakresu od 0 do maksymalnego ataku obecnego obiektu var moc = r.Next(this.Damage); // gryzienie powodzi się tylko w sytuacji, kiedy uda nam się wylosować liczbę // powyżej wartości zwinności celu if (r.NextDouble() * 10 > z.Agility) z.HP = z.HP - moc; }
/// <summary> /// Własna implementacja dla ataku - atakują przeciwnika wszystkie chomiki /// </summary> /// <param name="z">Przeciwnik do zaatakowania</param> public override void Gryź(Zwierzę z) { Random r = new Random(); foreach (var c in chomiki) { if (r.Next(5) >= z.Agility) { var moc = r.Next(c.Damage); z.HP = z.HP - moc; } } }