유니티3D 프로그래밍
C# 2주차 3일 수업 내용 : 인터페이스, 상속, Dictionary(21.03.17) 본문
string 배열 연습
using System;
using System.Collections;
using System.Collections.Generic;
namespace Study01
{
class App
{
//생성자
public App()
{
Console.WriteLine("App");
//string 배열 변수 선언
string[] arr;
//string 배열 인스턴스 및 변수에 할당
arr = new string[10];
//string 배열의 요소에 값 할당
for(int i = 0; i < arr.Length; i++)
{
arr[i] = i.ToString();
}
//string 배열의 요소 값 출력 (index : 0 ~ n-1)
Console.WriteLine("{0}", arr[4]);
//string 배열의 길이 출력
Console.WriteLine("{0}", arr.Length);
//for문과 foreach문을 사용해 string 배열의 요소 출력
for(int i = 0; i < arr.Length; i++)
{
Console.Write("{0} ", arr[i]);
}
Console.WriteLine();
foreach(string index in arr)
{
Console.Write("{0} ", index);
}
Console.WriteLine();
}
}
}
using System;
using System.Collections;
using System.Collections.Generic;
namespace Study01
{
class App
{
//생성자
public App()
{
Console.WriteLine("App");
//List<string> 변수 선언
List<string> list;
//List<string> 인스턴스 및 변수에 할당
list = new List<string>();
//List<string> 요소에 값 추가
list.Add("사과");
list.Add("딸기");
list.Add("배");
//List<string> 의 요소의 수 출력
Console.WriteLine(list.Count);
//foreach문을 사용해 List<string>의 요소 출력
foreach(string name in list)
{
Console.WriteLine("{0}", name);
}
}
}
}
using System;
using System.Collections;
using System.Collections.Generic;
namespace Study01
{
class App
{
//생성자
public App()
{
Console.WriteLine("App");
//Dictionary<int, string> 변수 선언
//ex)
//100, "장검"
//101, "단검"
//102, "활"
Dictionary<int, string> dicItem;
//Dictionary<int, string> 인스턴스 및 변수에 할당
dicItem = new Dictionary<int, string>();
//Dictionary<int, string> 요소에 값 할당 (키와 값)
dicItem.Add(100, "장검");
dicItem.Add(101, "장검");
dicItem.Add(102, "장검");
//Dictionary<int, string>의 요소의 수 출력
Console.WriteLine("{0}", dicItem.Count);
//Dictionary<int, string>의 요소 값 출력 (키로 찾아서, 여기서는 ID)
string foundItem = dicItem[100];
Console.WriteLine("Dictionary로 찾는 값 : {0}", foundItem);
//foreach문을 사용해 Dictionary<int, string>의 요소 값 출력
foreach(KeyValuePair<int, string> pair in dicItem)
{
Console.WriteLine("{0}:{1}", pair.Key, pair.Value);
}
}
}
}
using System;
using System.Collections;
using System.Collections.Generic;
namespace Study01
{
class App
{
//생성자
public App()
{
Console.WriteLine("App");
//Item 배열 변수 선언
Item[] item;
//Item 배열 인스턴스 및 변수에 할당
item = new Item[3];
//Item 배열의 요소에 값 할당
item[0] = new Item("장검");
item[1] = new Item("단검");
item[2] = new Item("활");
//Item 배열의 길이 출력
Console.WriteLine("{0}", item.Length);
//Item 배열의 요소 값 출력 (index: 0 ~ n-1)
Console.WriteLine("{0}", item[0].GetName());
//for문과 foreach문을 사용해 Item 배열의 요소 출력 (아이템Id, 아이템이름)
for (int i = 0; i < item.Length; i++)
{
Console.WriteLine("{0}. {1}", i, item[i].GetName());
}
foreach (Item itemName in item)
{
Console.WriteLine("{0}", itemName.GetName());
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Item
{
private string name;
private int ID;
//생성자
public Item()
{
}
public Item(string name, int ID)
{
this.name = name;
this.ID = ID;
}
public string GetName()
{
return this.name;
}
public int GetID()
{
return this.ID;
}
}
}
using System;
using System.Collections;
using System.Collections.Generic;
namespace Study01
{
class App
{
//생성자
public App()
{
Console.WriteLine("App");
//List<Item> 변수 선언
List<Item> items;
//List<Item> 인스턴스 및 변수에 할당
items = new List<Item>();
//List<Item> 요소에 값 추가
Item item = new Item("장검", 100);
items.Add(item);
item = new Item("단검", 101);
items.Add(item);
item = new Item("활", 102);
items.Add(item);
//List<Item> 의 요소의 수 출력
Console.WriteLine(items.Count);
//foreach문을 사용해 List<Item>의 요소 출력 (아이템 ID, 아이템 이름)
foreach(Item itemName in items)
{
if(itemName != null)
{
Console.WriteLine("{0}. {1}", itemName.GetID(), itemName.GetName());
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Item
{
private string name;
private int ID;
//생성자
public Item()
{
}
public Item(string name, int ID)
{
this.name = name;
this.ID = ID;
}
public string GetName()
{
return this.name;
}
public int GetID()
{
return this.ID;
}
}
}
using System;
using System.Collections;
using System.Collections.Generic;
namespace Study01
{
class App
{
//생성자
public App()
{
Console.WriteLine("App");
//Dictionary<int, Item> 변수 선언
Dictionary<int, Item> dicItems;
//Dictionary<int, Item> 인스턴스 및 변수에 할당
dicItems = new Dictionary<int, Item>();
//Dictionary<int, Item> 요소에 값 할당 (키와 값)
Item item = new Item("장검", 100);
dicItems.Add(100, item);
item = new Item("단검", 101);
dicItems.Add(101, item);
item = new Item("활", 102);
dicItems.Add(102, item);
//Dictionary<int, Item>의 요소의 수 출력
Console.WriteLine(dicItems.Count);
//Dictionary<int, Item>의 요소 값 출력 (키로 찾아서, 여기서는 ID)
string itemName = dicItems[100].GetName();
Console.WriteLine("Dictionary로 찾는 값 : {0}",itemName);
//foreach문을 사용해 Dictionary<int, Item>의 요소 값 출력 (아이템 ID, 아이템이름)
foreach(KeyValuePair<int, Item> pair in dicItems)
{
Item items = pair.Value;
if(items != null)
{
Console.WriteLine("{0}:{1}", items.GetID(), items.GetName());
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Item
{
private string name;
private int ID;
//생성자
public Item()
{
}
public Item(string name, int ID)
{
this.name = name;
this.ID = ID;
}
public string GetName()
{
return this.name;
}
public int GetID()
{
return this.ID;
}
}
}
인터페이스 연습
using System;
using System.Collections;
using System.Collections.Generic;
namespace Study01
{
class App
{
//생성자
public App()
{
Console.WriteLine("App");
Lurker lurker = new Lurker();
lurker.Burrow();
lurker.Attack();
Console.WriteLine();
Ultralisk ultralisk = new Ultralisk();
ultralisk.Attack();
Console.WriteLine();
Valkyrie valkyrie = new Valkyrie();
valkyrie.Attack();
Console.WriteLine();
Wraith wraith = new Wraith();
wraith.Attack();
wraith.Cloaking();
Console.WriteLine();
Zealot zealot = new Zealot();
zealot.Move();
Console.WriteLine();
DarkTemplar darkTemplar = new DarkTemplar();
darkTemplar.DoTransparent();
darkTemplar.Move();
Console.WriteLine();
Observer observer = new Observer();
observer.DoTransparent();
observer.Fly();
observer.Move();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class ZergUnit
{
//생성자
public ZergUnit()
{
Console.WriteLine("ZergUnit");
}
public virtual void Attack()
{
Console.WriteLine("Attack");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Lurker : ZergUnit, IBurrow
{
//생성자
public Lurker()
{
Console.WriteLine("Lurker");
}
public override void Attack()
{
Console.WriteLine("까시로 공격");
}
public void Burrow()
{
Console.WriteLine("버로우 했습니다.");
}
}
}
namespace Study01
{
interface IBurrow
{
void Burrow();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Ultralisk : ZergUnit
{
//생성자
public Ultralisk()
{
Console.WriteLine("Ultralisk");
}
public override void Attack()
{
Console.WriteLine("뿔로 공격했습니다.");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class TerranUnit
{
//생성자
public TerranUnit()
{
Console.WriteLine("TerranUnit");
}
public virtual void Attack()
{
Console.WriteLine("Attack");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Valkyrie : TerranUnit
{
//생성자
public Valkyrie()
{
Console.WriteLine("Valkyrie");
}
public override void Attack()
{
Console.WriteLine("스플래쉬 어택");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Wraith : TerranUnit, ICloaking
{
//생성자
public Wraith()
{
Console.WriteLine("Wraith");
}
public override void Attack()
{
Console.WriteLine("미사일 또는 레이저 발사");
}
public void Cloaking()
{
Console.WriteLine("투명해지다");
}
}
}
namespace Study01
{
interface ICloaking
{
void Cloaking();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class ProtossUnit
{
//생성자
public ProtossUnit()
{
Console.WriteLine("ProtossUnit");
}
public virtual void Move()
{
Console.WriteLine("이동하다.");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Zealot : ProtossUnit
{
//생성자
public Zealot()
{
Console.WriteLine("Zealot");
}
public override void Move()
{
Console.WriteLine("빠른 속도로 이동하다.");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class DarkTemplar : ProtossUnit, ITransparent
{
//생성자
public DarkTemplar()
{
Console.WriteLine("DarkTemplar");
}
public override void Move()
{
base.Move();
}
public void DoTransparent()
{
Console.WriteLine("투명해지다");
}
}
}
namespace Study01
{
interface ITransparent
{
void DoTransparent();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Observer : ProtossUnit, ITransparent, IFly
{
public Observer()
{
Console.WriteLine("Observer");
}
public void DoTransparent()
{
Console.WriteLine("투명해지다.");
}
public override void Move()
{
Console.WriteLine("공중에서 이동하다.");
}
public void Fly()
{
Console.WriteLine("날다");
}
}
}
namespace Study01
{
interface IFly
{
void Fly();
}
}
using System;
using System.Collections;
using System.Collections.Generic;
namespace Study01
{
class App
{
//생성자
public App()
{
Console.WriteLine("App");
Valture valture = new Valture();
valture.Move();
valture.MineInstall();
Mine mine = new Mine();
mine.Move();
mine.Attack();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class TerranUnit
{
//생성자
public TerranUnit()
{
Console.WriteLine("TerranUnit");
}
public virtual void Attack()
{
Console.WriteLine("Attack");
}
public virtual void Move()
{
Console.WriteLine("Move");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Valture : TerranUnit, IMineInstall
{
public Valture()
{
Console.WriteLine("Valture");
}
public override void Attack()
{
Console.WriteLine("원거리 공격을 한다.");
}
public override void Move()
{
Console.WriteLine("이동한다.");
}
public void MineInstall()
{
Console.WriteLine("마인을 설치합니다.");
}
}
}
namespace Study01
{
interface IMineInstall
{
void MineInstall();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Mine : Valture
{
public Mine()
{
Console.WriteLine("Mine");
}
public override void Attack()
{
Console.WriteLine("적에게 근접해서 폭발한다.");
}
public override void Move()
{
Console.WriteLine("적이 근처에 오면 움직인다.");
}
}
}
abstract 연습
using System;
using System.Collections;
using System.Collections.Generic;
namespace Study01
{
class App
{
//생성자
public App()
{
Console.WriteLine("App");
Zergling zergling = new Zergling();
zergling.Attack();
zergling.Burrow();
Console.WriteLine();
Lurker lurker = new Lurker();
lurker.Attack();
lurker.Burrow();
lurker.Attack();
lurker.UnBurrow();
Console.WriteLine();
Wraith wraith = new Wraith();
wraith.Attack();
wraith.Cloak();
wraith.UnCloak();
Console.WriteLine();
Ghost ghost = new Ghost();
ghost.Attack();
ghost.Cloak();
ghost.UnCloak();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public abstract class ZergUnit : IBurrow
{
public abstract void Attack();
public abstract void Burrow();
public abstract void UnBurrow();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Zergling : ZergUnit
{
public override void Attack()
{
Console.WriteLine("저글링이 발톱으로 공격합니다");
}
public override void Burrow()
{
Console.WriteLine("저글링이 땅속으로 들어갑니다.");
}
public override void UnBurrow()
{
Console.WriteLine("저글링이 땅속에서 나옵니다.");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Lurker : ZergUnit
{
private bool isBurrow;
public override void Attack()
{
if(this.isBurrow)
{
Console.WriteLine("럴커가 가시로 공격합니다.");
}
else
{
Console.WriteLine("럴커는 Burrow 상태일때만 공격 할 수 있습니다.");
}
}
public override void Burrow()
{
Console.WriteLine("럴커가 땅속으로 들어갑니다.");
this.isBurrow = true;
}
public override void UnBurrow()
{
Console.WriteLine("럴커가 땅속에서 나옵니다.");
this.isBurrow = false;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
interface IBurrow
{
void Burrow();
void UnBurrow();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public abstract class TerranUnit : Cloaking
{
public abstract void Cloak();
public abstract void UnCloak();
public abstract void Attack();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
interface Cloaking
{
void Cloak();
void UnCloak();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Wraith : TerranUnit
{
public Wraith()
{
Console.WriteLine("Wraith");
}
public override void Attack()
{
Console.WriteLine("레이저나 미사일을 발사합니다.");
}
public override void Cloak()
{
Console.WriteLine("클로킹을 실행합니다.");
}
public override void UnCloak()
{
Console.WriteLine("클로킹을 해제합니다.");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Ghost : TerranUnit
{
//생성자
public Ghost()
{
Console.WriteLine("Ghost");
}
public override void Attack()
{
Console.WriteLine("총을 발사합니다.");
}
public override void Cloak()
{
Console.WriteLine("클로킹을 실행합니다.");
}
public override void UnCloak()
{
Console.WriteLine("클로킹을 해제합니다.");
}
}
}
stack 연습
using System;
using System.Collections;
using System.Collections.Generic;
namespace Study01
{
class App
{
//생성자
public App()
{
Console.WriteLine("App");
//Stack<Item> 변수 선언
Stack<Item> items;
//Stack<Item> 인스턴스 생성후 변수 할당
items = new Stack<Item>();
//Item 객체 생성
Item item = new Item("활");
Item item1 = new Item("대검");
Item item2 = new Item("장검");
//Stack에 값 추가 Push
items.Push(item);
items.Push(item1);
items.Push(item2);
//Stack의 요소 출력 (foreach)
foreach(Item name in items)
{
Console.WriteLine(name.GetItemName());
}
Console.WriteLine("--------- pop ----------");
//Stack에서 값 꺼내오기 Pop (출력 : 아이템의 이름)
string itemName = items.Pop().GetItemName();
Console.WriteLine(itemName);
//Stack의 요소의 수 출력
Console.WriteLine(items.Count);
Console.WriteLine("--------- peek ----------");
//Stack의 요소 보기 Peek (출력: 아이템 이름)
itemName = items.Peek().GetItemName();
Console.WriteLine(itemName);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Item
{
private string name;
public Item(string name)
{
this.name = name;
}
public string GetItemName()
{
return this.name;
}
}
}
Queue 연습
using System;
using System.Collections;
using System.Collections.Generic;
namespace Study01
{
class App
{
//생성자
public App()
{
Console.WriteLine("App");
//Queue<Unit> 변수 선언
Queue<Unit> units;
//Queue 객체 생성하고 변수에 할당
units = new Queue<Unit>();
//Unit객체 생성
Unit unit = new Unit("마린1");
Unit unit1 = new Unit("마린2");
Unit unit2 = new Unit("마린3");
Unit unit3 = new Unit("마린4");
//Enqueue
units.Enqueue(unit);
units.Enqueue(unit1);
units.Enqueue(unit2);
units.Enqueue(unit3);
//요소 수 출력
Console.WriteLine("요소 수 출력 : {0}", units.Count);
//요소 출력 (유닛의 이름)
foreach(Unit name in units)
{
Console.WriteLine(name.GetName());
}
Console.WriteLine("***** Dequeue *****");
//Dequeue
Unit dequeueUnit = units.Dequeue();
Console.WriteLine("Dequeue한 유닛 이름 : {0}", dequeueUnit.GetName());
//요소 수 출력
Console.WriteLine("요소 수 출력 : {0}", units.Count);
Console.WriteLine("***** Peek *****");
//보기 (유닛의 이름)
Unit peekUnit = units.Peek();
Console.WriteLine("Peek한 유닛 이름 : {0}", peekUnit.GetName());
//요소 수 출력
Console.WriteLine("요소 수 출력 : {0}", units.Count);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study01
{
public class Unit
{
private string name;
public Unit(string name)
{
this.name = name;
}
public string GetName()
{
return name;
}
}
}
'C# > 수업내용' 카테고리의 다른 글
C# 3주차 1일 수업 내용 : Delegate, Callback (21.03.22) (0) | 2021.03.22 |
---|---|
C# 2주차 4일 수업 내용 (21.03.18) (0) | 2021.03.18 |
C# 2주차 2일 수업 내용 (21.03.16) (0) | 2021.03.16 |
C# 2주차 1일 수업 내용 (21.03.15) (0) | 2021.03.15 |
C# 1주차 5일 수업 내용 (21.03.12) (0) | 2021.03.12 |