C#/C#언어

0322 _ delegates 연습예제

minquu 2021. 3. 22. 12:21
반응형

1. 버튼을 눌르면 팝업창 뜨기

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study10
{
    public class Button
    {
        public delegate void OnClickBtton();
        public OnClickBtton onClick;
        public Button()
        {

        }

        public void Click()
        {
            Console.WriteLine("[Button] 클릭을 하였습니다.");
            this.onClick();
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study10
{
    public class App
    {
        public App() {
            Button btn = new Button();
            //버튼을 눌럿다면 알려줘
            btn.onClick = this.OnClickButton;
            //유저가 버튼을 누럴ㅆ다.
            btn.Click();
        }

        public void OnClickButton() {
            //설정 팝업을 연다.
            Console.WriteLine("[App]설정 팝업을 엽니다.");
        }
    }
}

 

2.건설완료 알기

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study10
{
    public class Building
    {
        public delegate void OnComplete();
        public OnComplete onComplete;
        public Building()
        {


        }

        public void Build() {
            Console.WriteLine("[Building] 건물을 짓기 시작합니다.");
            this.onComplete();
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study10
{
    public class App
    {
        public App() {
            Building building = new Building();
            building.onComplete = this.OnComplete;
            building.Build();
        }

        private void OnComplete()
        {
            Console.WriteLine("[app] 건물이 완료 되었습니다.");
        }
    }
}

 

3.파일열기

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study10
{
    public class FileManager
    {
        public delegate void OnOpenComplete();
        public OnOpenComplete onOpenComplete;
        public FileManager() { 
        
        }
        public void Open(string file) {
            Console.WriteLine("[manager] {0}의 경로의 파일을 엽니다.",file);
            this.onOpenComplete();

        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study10
{
    public class App
    {
        public App() {
            FileManager fileManager = new FileManager();
            fileManager.onOpenComplete = this.OnOpenComplete;
            fileManager.Open("C 드라이브");
        }
        public void OnOpenComplete()
        {
            Console.WriteLine("[App]파일이 열려씁니다.");
        }
    }
}

 

4.씬 장면 로드하기

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study10
{
    public class SceneManager
    {
        public delegate void OnLoaded();
        public OnLoaded onLoaded;
        public SceneManager()
        {


        }

        public void OnLoadedNew()
        {
            Console.WriteLine("[SceneManager] 새로운 씬을 로드합니다.");
            this.onLoaded();
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study10
{
    public class App
    {
        public App() {
            SceneManager sceneManager = new SceneManager();
            sceneManager.onLoaded = this.OnLoaded;
            sceneManager.OnLoadedNew();
        
        }

        private void OnLoaded()
        {
            Console.WriteLine("[App] 씬이 모두 로드 되었습니다.");

        }
    }
}

 

5. 게임 시작하고 끝내기

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study10
{
    public class Launcher
    {
        public delegate void OnEndGame();
        public OnEndGame onEndGame;
        public Launcher()
        {


        }
        public void StartGame() {
            Console.WriteLine("[Laucher] 게임이 시작 되었습니다.");
            Console.WriteLine("[Laucher] 캐릭터가 죽었습니다.");
            this.onEndGame();
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study10
{
    public class App
    {
        public App() {
            Launcher launcher = new Launcher();
            launcher.onEndGame = this.EndGame;
            launcher.StartGame();
        }

        private void EndGame() {
            Console.WriteLine("[App] 게임을 종료합니다.");
        }

    }

 

6.업그레이드 완료알기

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study10
{
    public class Upgrade
    {
        public delegate void OnUpgrade();
        public OnUpgrade onUpgrade;
        public Upgrade() { 
        
        }

        public void StartUpgrade()
        {
            Console.WriteLine("[Upgrade] 업그레이드를 시작합니다.");
            this.onUpgrade();
        }

    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study10
{
    public class App
    {
        public App() {
            Upgrade upgrade = new Upgrade();
            upgrade.onUpgrade = this.EndUpgrade;
            upgrade.StartUpgrade();
        }

        public void EndUpgrade()
        {
            Console.WriteLine("[App] 업그레이드가 완료 되었습니다.");
        }
    }
}
반응형

'C# > C#언어' 카테고리의 다른 글

0324_ ★ 이벤트의 구조 !!  (0) 2021.03.24
0324 _ 복습 //  (0) 2021.03.24
0318_ 다차원 _ 2차원 배열 isometric view  (0) 2021.03.18
0318 _ 다차원 배열 _ 맵 바꾸기 예제  (0) 2021.03.18
0318 _ 다차원 연습 문제 1 _ 10개  (0) 2021.03.18