C#/수업 내용

[C#] delegate callback

JSH1 2021. 9. 6. 18:20
    class App
    {
            UI ui = new UI();
            Hud hud = new Hud();

        public App()
        {
            Hero hero = new Hero(20);
            hero.StepOnTrap(3, StepOnTrapHandler);
        }

        private void StepOnTrapHandler(float per)
        {
            this.ui.UpdateHeroHpGauge(per);
            this.hud.UpdateHeroHpGauge(per);
        }
    }
    class Hero
    {
        private int maxHp;
        private int hp;

        public delegate void Del(float hp);

        public Hero(int hp)
        {
            this.maxHp = hp;
            this.hp = hp;
        }

        public void StepOnTrap(int damage, Del callback)
        {
            this.hp -= damage;
            float per = (float)hp / maxHp;
            callback(per);
        }
    }
    class UI
    {
        public void UpdateHeroHpGauge(float per)
        {
            Console.WriteLine("UI 남은 체력: {0}%", per * 100);
        }
    }
    class Hud
    {
        public void UpdateHeroHpGauge(float per)
        {
            Console.WriteLine("HUD 남은 체력: {0}%", per * 100);
        }
    }


    class App
    {

        public App()
        {
            SCV scv = new SCV(100);
            scv.Build(BuildCompleteHandler);
        }

        void BuildCompleteHandler(int id)
        {
            Console.WriteLine("complete!: {0}", id);
        }
    }
    class SCV
    {
        int id;
        public delegate void Del(int id);

        public SCV(int id)
        {
            this.id = id;
        }

        public void Build(Del del)
        {
            del(id);
        }
    }

 

'C# > 수업 내용' 카테고리의 다른 글

[C#] Func 람다식 연습문제  (0) 2021.09.07
[C#] Action 람다식 연습문제  (0) 2021.09.07
[C#] Delegate 대리자  (0) 2021.09.06
[C#] try/catch 예외 및 예외 처리  (0) 2021.09.06
[C#] 2021-09-06 Dictionary 인벤토리  (0) 2021.09.06