ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 03/22 델리게이트 연습
    C#/수업과제 2021. 3. 22. 18:18

    1.  유닛이 죽으면 인구수 줄이기

     

    Program.cs

    using System;
    
    namespace Study07
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Program");
                new App();
            }
        }
    }
    

     

    App.cs

    using System;
    
    namespace Study07
    {
        public class App
        {
            //생성자 
            public App()
            {
                Unit unit = new Unit();
                unit.die = ReduceThePopulation;
                unit.Die();
            }
            private void ReduceThePopulation()
            {
                Console.WriteLine("인구수가 줄었습니다.");
            }
    
    
        }
    }

     

    Unit.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Study07
    {
        public delegate void Die();
        public class Unit
        {
            public Die die;
            public Unit()
            {
    
            }
            public void Die()
            {
                Console.WriteLine("유닛이 죽었습니다.");
                this.die();
            }
        }
    }
    

     

    2. 업그레이드 완료알기

    Program.cs

    using System;
    
    namespace Study07
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Program");
                new App();
            }
        }
    }
    

     

    App.cs

    using System;
    
    namespace Study07
    {
        public class App
        {
            //생성자 
            public App()
            {
                ScienceFacility scienceFacility = new ScienceFacility();
                scienceFacility.wasItUpgraded = WasItUpgraded;
                scienceFacility.Upgrade(0);
                scienceFacility.Upgrade(1);
            }
            
            private void WasItUpgraded(ScienceFacility scienceFacility)
            {
                foreach(Upgrade upgrade in scienceFacility.listUpgrade)
                {
                    Console.WriteLine("{0}의 업그레이드 상황 : {1}", upgrade.UpgradeName, upgrade.IsUpgrade);
                }
            }
        }
    }

     

     

    ScienceFacility.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Study07
    {
        public class Upgrade
        {
            public string UpgradeName { get; set; }
            public bool IsUpgrade { get; set; }
    
            public Upgrade(string name, bool bol)
            {
                UpgradeName = name;
                IsUpgrade = bol;
            }
        }
        public class ScienceFacility
        {
            public List<Upgrade> listUpgrade;
            public Action<ScienceFacility> wasItUpgraded;
            public ScienceFacility()
            {
                listUpgrade = new List<Upgrade>();
                listUpgrade.Add(new Upgrade("EMP 충격파 연구", false));
                listUpgrade.Add(new Upgrade("방사선 연구", false));
                listUpgrade.Add(new Upgrade("타이탄 반응로 연구", false));
                
            }
    
            public void Upgrade(int num)
            {
                switch(num)
                {
                    case 0:
                        listUpgrade[num].IsUpgrade = true;
                        Console.WriteLine("{0}의 업그레이드를 완료했습니다.", listUpgrade[num].UpgradeName);
                        wasItUpgraded(this);
                        break;
                    case 1:
                        listUpgrade[num].IsUpgrade = true;
                        Console.WriteLine("{0}의 업그레이드를 완료했습니다.", listUpgrade[num].UpgradeName);
                        wasItUpgraded(this);
                        break;
                    case 2:
                        listUpgrade[num].IsUpgrade = true;
                        Console.WriteLine("{0}의 업그레이드를 완료했습니다.", listUpgrade[num].UpgradeName);
                        wasItUpgraded(this);
                        break;
                    default:
                        break;
                }
            }
        }
    }
    

     

    3. 업적달성 알기

     

    Program.cs

    using System;
    
    namespace Study07
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Program");
                new App();
            }
        }
    }
    

     

    App.cs

    using System;
    
    namespace Study07
    {
        public class App
        {
            int num;
            //생성자 
            public App()
            {
                User user = new User();
                user.Achieve(ConfirmAchievements);
                user.Achieve(ConfirmAchievements);
                user.Achieve(ConfirmAchievements);
            }
            
            private void ConfirmAchievements()
            {
                Console.WriteLine("업적을 {0}개 달성하셨습니다.", ++num);
            }
        }
    }

     

    User.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Study07
    {
        public delegate void Callback();
        public class User
        {        
            public User()
            {
    
            }
            public void Achieve(Callback callback)
            {
                Console.WriteLine("업적을 달성하였습니다.");
                callback();
            }
        }
    }
    
Designed by Tistory.