-
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(); } } }
'C# > 수업과제' 카테고리의 다른 글
03/19 2차원 배열 2048 구현 (0) 2021.03.22 03/17 추상클래스, 인터페이스, 속성, 스택, 큐를 사용한 예제 (0) 2021.03.18 03/16 컬렉션을 이용 예제 (0) 2021.03.16 03/12 1주차 주말과제 (0) 2021.03.15 03/11 클래스 생성 -> 인스턴스 생성 연습 (0) 2021.03.11