Veikedo

Untitled

Dec 6th, 2013
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.84 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace Holiday
  6. {
  7.   public abstract class Animal
  8.   {
  9.     public abstract int NailLength { get; set; }
  10.     public bool IsAlive { get; private set; }
  11.  
  12.     public abstract void Move();
  13.  
  14.     public virtual void Eat(Animal animal)
  15.     {
  16.       if (animal != null)
  17.       {
  18.         if (animal.GetType() != GetType())
  19.         {
  20.           animal.Die();
  21.         }
  22.       }
  23.     }
  24.  
  25.     public virtual void Die()
  26.     {
  27.       Console.WriteLine("Ой-ой");
  28.     }
  29.   }
  30.  
  31.   public class Swimming : Animal
  32.   {
  33.     public override int NailLength { get; set; }
  34.  
  35.     public override void Move()
  36.     {
  37.       Console.WriteLine("Буль-буль");
  38.     }
  39.   }
  40.  
  41.   public class Walking : Animal
  42.   {
  43.     public override int NailLength { get; set; }
  44.  
  45.     public override void Move()
  46.     {
  47.       throw new NotImplementedException();
  48.     }
  49.  
  50.     public override void Eat(Animal animal)
  51.     {
  52.       if (animal != null)
  53.       {
  54.         var walking = animal as Walking;
  55.         if (walking != null && walking.NailLength <= NailLength || walking == null)
  56.         {
  57.           animal.Die();
  58.         }
  59.       }
  60.     }
  61.   }
  62.  
  63.   public class God
  64.   {
  65.     public God()
  66.     {
  67.       Animals = new List<Animal>();
  68.     }
  69.  
  70.     public List<Animal> Animals { get; private set; }
  71.  
  72.     public void KillAll()
  73.     {
  74.       foreach (Animal animal in Animals.Where(a => a.IsAlive))
  75.       {
  76.         animal.Die();
  77.       }
  78.     }
  79.   }
  80.  
  81.   public class Factory
  82.   {
  83.     public God God { get; private set; }
  84.  
  85.     public Factory()
  86.     {
  87.       God = new God();
  88.     }
  89.  
  90.     public IEnumerable<Animal> Load(string path)
  91.     {
  92.       for (int i = 0; i < 5; i++)
  93.       {
  94.         var animal = new Swimming();
  95.         God.Animals.Add(animal);
  96.  
  97.         yield return animal;
  98.       }
  99.     }
  100.   }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment