예제 #1
0
        public override void Rainfall(WaterDrop waterDrop)
        {
            Random rnd       = new Random();
            int    nextState = rnd.Next(0, 3);

            switch (nextState)
            {
            case 0:
                waterDrop.currentState = new PlantState();
                break;

            case 1:
                waterDrop.currentState = new WellState();
                break;

            case 2:
                waterDrop.currentState = new RiverState();
                break;
            }
        }
예제 #2
0
 public override void Breathing(WaterDrop waterDrop)
 {
 }
예제 #3
0
 public override void Flow(WaterDrop waterDrop)
 {
 }
예제 #4
0
 public override void Drinking(WaterDrop waterDrop)
 {
 }
예제 #5
0
 public override void Purification(WaterDrop waterDrop)
 {
     waterDrop.currentState = new RiverState();
 }
예제 #6
0
 public override void Breathing(WaterDrop waterDrop)
 {
     waterDrop.currentState = new CloudState();
 }
예제 #7
0
 public override void Flow(WaterDrop waterDrop)
 {
     waterDrop.currentState = new OceanState();
 }
예제 #8
0
 public override void Drinking(WaterDrop waterDrop)
 {
     waterDrop.currentState = new AnimalState();
 }
예제 #9
0
 public abstract void Excretion(WaterDrop waterDrop);
예제 #10
0
 public abstract void Drinking(WaterDrop waterDrop);
예제 #11
0
 public abstract void Evaporation(WaterDrop waterDrop);
예제 #12
0
 public abstract void Rainfall(WaterDrop waterDrop);
예제 #13
0
 public abstract void Breathing(WaterDrop waterDrop);
예제 #14
0
        static void Main(string[] args)
        {
            WaterDrop wd = new WaterDrop();

            for (int i = 0; i <= 10; i++)
            {
                Console.WriteLine(wd.currentState.Info());
                switch (wd.currentState.Info())
                {
                case "Cloud":
                    wd.Rainfall();
                    break;

                case "Plant":
                    wd.Breathing();
                    break;

                case "Well":
                    wd.Drinking();
                    break;

                case "Sewage":
                    wd.Purification();
                    break;

                case "Ocean":
                    wd.Evaporation();
                    break;

                case "River":
                    Random rndR       = new Random();
                    int    nextStateR = rndR.Next(0, 3);
                    switch (nextStateR)
                    {
                    case 0:
                        wd.Evaporation();
                        break;

                    case 1:
                        wd.Flow();
                        break;

                    case 2:
                        wd.Drinking();
                        break;
                    }
                    break;

                case "Human":
                    Random rndHuman       = new Random();
                    int    nextStateHuman = rndHuman.Next(0, 2);
                    switch (nextStateHuman)
                    {
                    case 0:
                        wd.Breathing();
                        break;

                    case 1:
                        wd.Excretion();
                        break;
                    }
                    break;

                case "Animal":
                    Random rndAnimal       = new Random();
                    int    nextStateAnimal = rndAnimal.Next(0, 2);
                    switch (nextStateAnimal)
                    {
                    case 0:
                        wd.Breathing();
                        break;

                    case 1:
                        wd.Excretion();
                        break;
                    }
                    break;
                }
            }
        }
예제 #15
0
 public override void Rainfall(WaterDrop waterDrop)
 {
 }
예제 #16
0
 public abstract void Flow(WaterDrop waterDrop);
예제 #17
0
 public override void Evaporation(WaterDrop waterDrop)
 {
     waterDrop.currentState = new CloudState();
 }
예제 #18
0
 public abstract void Purification(WaterDrop waterDrop);
예제 #19
0
 public override void Excretion(WaterDrop waterDrop)
 {
 }
예제 #20
0
 public override void Evaporation(WaterDrop waterDrop)
 {
 }
예제 #21
0
 public override void Purification(WaterDrop waterDrop)
 {
 }
예제 #22
0
 public override void Excretion(WaterDrop waterDrop)
 {
     waterDrop.currentState = new SewageState();
 }