Advertisement
Guest User

CrueltyPlan

a guest
Jul 9th, 2016
477
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.47 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace MordorsCrueltyPlan
  6. {
  7.     public class MordorsCrueltyPlanMain
  8.     {
  9.         public static void Main()
  10.         {
  11.             string input = Console.ReadLine();
  12.  
  13.             var gandalf = new Gandalf();
  14.  
  15.             var foods = FoodFactory.ProduceFood(input);
  16.             MoodFactory.ChangeMood(gandalf, foods);
  17.  
  18.             Console.WriteLine(gandalf);
  19.         }
  20.     }
  21.  
  22.     public static class FoodFactory
  23.     {
  24.         public static IList<IFood> ProduceFood(string input)
  25.         {
  26.             var foods = new List<IFood>();            
  27.             var inputData = input.ToLower().Split(new char[] {' ', ','}, StringSplitOptions.RemoveEmptyEntries);
  28.  
  29.             foreach (var entry in inputData)
  30.             {
  31.                 switch (entry)
  32.                 {
  33.                     case "cram":
  34.                         foods.Add(new Cram());
  35.                         break;
  36.                     case "lembas":
  37.                         foods.Add(new Lembas());
  38.                         break;
  39.                     case "apple":
  40.                         foods.Add(new Apple());
  41.                         break;
  42.                     case "melon":
  43.                         foods.Add(new Melon());
  44.                         break;
  45.                     case "honeycake":
  46.                         foods.Add(new HoneyCake());
  47.                         break;
  48.                     case "mushrooms":
  49.                         foods.Add(new Mushrooms());
  50.                         break;
  51.                     default:
  52.                         foods.Add(new OtherFood());
  53.                         break;
  54.                 }
  55.             }
  56.  
  57.             return foods;
  58.         }
  59.     }
  60.  
  61.     public static class MoodFactory
  62.     {
  63.         public static void ChangeMood(IMood person, IList<IFood> foods)
  64.         {
  65.             foreach (var food in foods)
  66.             {
  67.                 person.Mood += food.Happiness;
  68.             }
  69.         }
  70.     }
  71.  
  72.     public interface IMood
  73.     {
  74.         int Mood { get; set; }
  75.     }
  76.  
  77.     public class Gandalf : IMood
  78.     {
  79.         public Gandalf(int mood = 0)
  80.         {
  81.             this.Mood = mood;
  82.         }
  83.  
  84.         public int Mood { get; set; }
  85.  
  86.         private string MoodType()
  87.         {
  88.             if (this.Mood < -5)
  89.             {
  90.                 return "Angry";
  91.             }
  92.             if (this.Mood >= -5 && this.Mood < 0)
  93.             {
  94.                 return "Sad";
  95.             }
  96.             if (this.Mood >= 0 && this.Mood <= 15)
  97.             {
  98.                 return "Happy";
  99.             }
  100.  
  101.             return "JavaScript";
  102.         }
  103.  
  104.         public override string ToString()
  105.         {
  106.             var builder = new StringBuilder();
  107.             builder.Append(this.Mood)
  108.                 .Append(Environment.NewLine)
  109.                 .Append(this.MoodType());
  110.  
  111.             return builder.ToString();
  112.         }
  113.     }
  114.  
  115.     public interface IFood
  116.     {
  117.         int Happiness { get; }
  118.     }
  119.  
  120.     public abstract class Food : IFood
  121.     {
  122.         protected Food(int happiness)
  123.         {
  124.             this.Happiness = happiness;
  125.         }
  126.  
  127.         public int Happiness { get; set; }
  128.     }
  129.  
  130.     public class Cram : Food
  131.     {
  132.         private const int CramHappiness = 2;
  133.  
  134.         public Cram()
  135.             : base(CramHappiness)
  136.         {
  137.         }
  138.     }
  139.  
  140.     public class Lembas : Food
  141.     {
  142.         private const int LembasHappiness = 3;
  143.  
  144.         public Lembas()
  145.             : base(LembasHappiness)
  146.         {
  147.         }
  148.     }
  149.  
  150.     public class Apple : Food
  151.     {
  152.         private const int AppleHappiness = 1;
  153.  
  154.         public Apple()
  155.             : base(AppleHappiness)
  156.         {
  157.         }
  158.     }
  159.  
  160.     public class Melon : Food
  161.     {
  162.         private const int MelonHappiness = 1;
  163.  
  164.         public Melon()
  165.             : base(MelonHappiness)
  166.         {
  167.         }
  168.     }
  169.  
  170.     public class HoneyCake : Food
  171.     {
  172.         private const int HoneyCakeHappiness = 5;
  173.  
  174.         public HoneyCake()
  175.             : base(HoneyCakeHappiness)
  176.         {
  177.         }
  178.     }
  179.  
  180.     public class Mushrooms : Food
  181.     {
  182.         private const int MushroomsHappiness = -10;
  183.  
  184.         public Mushrooms()
  185.             : base(MushroomsHappiness)
  186.         {
  187.         }
  188.     }
  189.  
  190.     public class OtherFood : Food
  191.     {
  192.         private const int OtherFoodHappiness = -1;
  193.  
  194.         public OtherFood()
  195.             : base(OtherFoodHappiness)
  196.         {
  197.         }
  198.     }
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement