유니티3D 프로그래밍
C# 2주차 1일 수업 내용 (21.03.15) 본문
배열 연습
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study00
{
public class App
{
public App()
{
Console.WriteLine("App");
//string 배열 변수 선언
string[] itemNames;
//배열 인스턴스 생성하고 변수에 할당
//string[] itemNames = {"장검", "단검" };
//-빈배열
//itemNames = new string[3];
//-요소가 있는 배열
//itemNames = new string[] {"장검", "단검" };
itemNames = new string[3] {"장검", "단검", null };
//배열의 요소는 인덱스 0 ~ n-1
//배열의 길이 출력
Console.WriteLine(itemNames.Length);
//배열의 x인덱스에 값 할당
itemNames[itemNames.Length - 1] = "활";
//배열의 x인덱스의 요소 출력
string lastIndexOfItemName = itemNames[itemNames.Length - 1];
Console.WriteLine(lastIndexOfItemName);
//for문을 사용해서 배열의 요소 값 출력
for(int i = 0; i < itemNames.Length; i++)
{
string itemName = itemNames[i];
Console.WriteLine(itemName);
}
//foreach문을 사용해서 배열의 요소 값 출력
foreach(string itemName in itemNames)
{
Console.WriteLine(itemName);
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study00
{
public class App
{
public App()
{
Console.WriteLine("App");
//int 배열 변수 선언
int[] damages;
string[] itemNames;
//배열 인스턴스 생성하고 변수에 할당
//int[] damages = {20, 32, 55, 12};
//-빈배열
//damages = new int[4];
//-요소가 있는 배열
itemNames = new string[] {"장검", "단검", "활", "도끼"};
damages = new int[] {20, 32, 55, 12};
//배열의 요소는 인덱스 0 ~ n-1
//배열의 길이 출력
Console.WriteLine(itemNames.Length);
Console.WriteLine(damages.Length);
Enum.GetValues(typeof(0));
//배열의 x인덱스에 값 할당
//itemNames[itemNames.Length - 1] = "대검";
//배열의 x인덱스의 요소 출력
//string indexOfItemName = itemNames[itemNames.Length - 1];
//for문을 사용해서 배열의 요소 값 출력
for(int i = 0; i < itemNames.Length; i++)
{
Console.WriteLine("{0}, {1}", itemNames[i], damages[i]);
}
Console.WriteLine();
//foreach문을 사용해서 배열의 요소 값 출력
int index = 0;
foreach(string itemName in itemNames)
{
Console.WriteLine("{0}, {1}", itemName, damages[index]);
index++;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study00
{
public class App
{
public enum ItemGrade
{
NORMAL,
MAGIC,
LEGEND
}
public App()
{
Console.WriteLine("App");
//int 배열 변수 선언
int[] damages;
string[] itemNames;
int[] itemGrade;
ItemGrade itemGrade1;
//배열 인스턴스 생성하고 변수에 할당
//int[] damages = {20, 32, 55, 12};
//-빈배열
//damages = new int[4];
//-요소가 있는 배열
itemNames = new string[] {"장검", "단검", "활", "도끼"};
damages = new int[] {20, 32, 55, 12};
itemGrade = new int[] {0, 1, 2, 0};
//배열의 요소는 인덱스 0 ~ n-1
//배열의 길이 출력
Console.WriteLine(itemNames.Length);
Console.WriteLine(damages.Length);
Console.WriteLine(itemGrade.Length);
//배열의 x인덱스에 값 할당
//itemNames[itemNames.Length - 1] = "대검";
//배열의 x인덱스의 요소 출력
//string indexOfItemName = itemNames[itemNames.Length - 1];
//for문을 사용해서 배열의 요소 값 출력
for(int i = 0; i < itemNames.Length; i++)
{
ItemGrade itemGradeToString = (ItemGrade)itemGrade[i];
Console.WriteLine("{0}, {1}, {2}", itemNames[i], damages[i], itemGradeToString);
}
Console.WriteLine();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study00
{
public class App
{
public App()
{
//string 배열 선언
string[] itemName = new string[4] {"장검", "단검", "활", "도끼"};
string findItem = Console.ReadLine();
for(int i = 0; i < itemName.Length; i++)
{
if (itemName[i].Equals(findItem))
{
Console.WriteLine("단검을 찾았습니다. index : {0}", i);
break;
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study00
{
public class App
{
public App()
{
//string 배열 선언
string[] itemName = new string[4] {"장검", "단검", "활", "도끼"};
string findItem = Console.ReadLine();
for(int i = 0; i < itemName.Length; i++)
{
if (itemName[i].Equals(findItem))
{
Console.WriteLine("{0}을 찾았습니다. index : {1}", findItem, i);
break;
}
}
Console.WriteLine("{0}을 찾을 수 없습니다.", findItem);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study00
{
public class App
{
public App()
{
Item item = new Item();
item.ItemInfo();
string itemName = Console.ReadLine();
Console.WriteLine(item.FindItem(itemName));
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study00
{
public class Item
{
public enum ItemGrade
{
NORMAL,
MAGIC,
LEGEND
}
private int[] damages = new int[] { 20, 32, 55, 12 };
private string[] itemNames = new string[] { "장검", "단검", "활", "도끼" };
private int[] itemGrade = new int[] { 0, 1, 2, 0 };
//생성자
public Item()
{
Console.WriteLine("Item");
}
public void ItemInfo()
{
for (int i = 0; i < itemNames.Length; i++)
{
ItemGrade itemGradeToString = (ItemGrade)itemGrade[i];
Console.WriteLine("{0}, {1}, {2}", itemNames[i], damages[i], itemGradeToString);
}
}
public string FindItem(string findItem)
{
for (int i = 0; i < itemNames.Length; i++)
{
if (itemNames[i].Equals(findItem))
{
Console.WriteLine();
return findItem + "을/를 찾았습니다. index : " + i;
}
}
return findItem+"을/를 찾을 수 없습니다.";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study00
{
public class App
{
public App()
{
Item item = new Item();
item.ItemInfo();
Console.WriteLine("찾을 아이템을 입력하세요.");
string itemName = Console.ReadLine();
Console.WriteLine(item.FindItem(itemName));
//아이템 추가
Console.WriteLine("표창 아이템을 추가합니다.");
int damages = 10;
string itemNames = "표창";
int itemGrade = 0;
item = item.AddItemInfo(item, damages, itemNames, itemGrade, 0);
item.ItemInfo();
Console.WriteLine();
ItemReinforce itemReinforce = new ItemReinforce();
Console.WriteLine("아이템을 합성합니다.");
item = itemReinforce.Systhesis(item, 3, 0);
item.ItemInfo();
Console.WriteLine();
Console.WriteLine("아이템을 강화합니다.");
itemReinforce.Reinforce(item);
Console.WriteLine("강화한 아이템 단계 : {0}", item.upgrade[0]);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study00
{
public class Item
{
public enum ItemGrade
{
NORMAL,
MAGIC,
RARE,
LEGEND
}
public int[] damages = new int[] { 20, 32, 55, 12 };
public string[] itemNames = new string[] { "장검", "단검", "활", "도끼" };
public int[] itemGrade = new int[] { 0, 1, 3, 0 };
public int[] upgrade = new int[] { 0, 0, 0, 0 };
//생성자
public Item()
{
Console.WriteLine("Item");
}
public void ItemInfo()
{
for (int i = 0; i < itemNames.Length; i++)
{
ItemGrade itemGradeToString = (ItemGrade)itemGrade[i];
Console.WriteLine("{0}, {1}, {2}, 아이템 강화 단계 : {3}", itemNames[i], damages[i], itemGradeToString, upgrade[i]);
}
}
public string FindItem(string findItem)
{
for (int i = 0; i < itemNames.Length; i++)
{
if (itemNames[i].Equals(findItem))
{
Console.WriteLine();
return findItem + "을/를 찾았습니다. index : " + i;
}
}
return findItem+"을/를 찾을 수 없습니다.";
}
public void GetItemInfo(int index)
{
ItemGrade itemGradeToString = (ItemGrade)itemGrade[index];
Console.WriteLine("{0}, {1}, {2}", itemNames[index], damages[index], itemGradeToString);
}
public Item AddItemInfo(Item item, int damages, string itemNames, int itemGrade, int upgrade)
{
Array.Resize<int>(ref item.damages, item.damages.Length +1);
Array.Resize<string>(ref item.itemNames, item.itemNames.Length + 1);
Array.Resize<int>(ref item.itemGrade, item.itemGrade.Length + 1);
Array.Resize<int>(ref item.upgrade, item.upgrade.Length + 1);
item.damages[item.damages.Length - 1] = damages;
item.itemNames[item.itemNames.Length - 1] = itemNames;
item.itemGrade[item.itemGrade.Length - 1] = itemGrade;
item.upgrade[item.itemGrade.Length - 1] = 0;
return item;
}
public Item SetItemInfo(Item item, int damages, string itemNames, int itemGrade, int upgrade, int index)
{
item.damages[index] = damages;
item.itemNames[index] = itemNames;
item.itemGrade[index] = itemGrade;
item.upgrade[index] = upgrade;
return item;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study00
{
class ItemReinforce : Item
{
public int iron = 10;
public int wood = 10;
//생성자
public ItemReinforce()
{
Console.WriteLine("ItemReinforce");
}
public Item Reinforce(Item item)
{
Console.WriteLine("강화할 아이템을 선택하세요.");
string itemName = Console.ReadLine();
Random rand = new Random();
int itemUpgradePer;
int index = 0;
for(int i = 0; i < item.itemNames.Length; i++)
{
if(item.itemNames[i].Equals(itemName))
{
Console.WriteLine("강화할 아이템을 선택하셨습니다. 현재 강화 : {0}", item.upgrade[i]);
index = i;
while(true)
{
Console.WriteLine("강화를 시도하시겠습니까?");
string exitUpgrad = Console.ReadLine();
if (item.upgrade[index] == 0)
{
Console.WriteLine("현재 강화가 +0 이므로 강화 확률 : 100%");
Console.WriteLine("강화에 성공하셨습니다.");
item.damages[index] += 1;
item = SetItemInfo(item, item.damages[index], item.itemNames[index], item.itemGrade[index], 1, index);
}
else if (item.upgrade[index] == 1)
{
Console.WriteLine("현재 강화가 +1 이므로 강화 확률 : 90%");
itemUpgradePer = rand.Next(1, 101);
if (itemUpgradePer >= 10)
{
Console.WriteLine("강화에 성공하셨습니다.");
item.damages[index] += 1;
item = SetItemInfo(item, item.damages[index], item.itemNames[index], item.itemGrade[index], 2, index);
}
else
{
Console.WriteLine("강화에 실패하셨습니다.");
}
}
else
{
Console.WriteLine("최대 강화입니다.");
break;
}
Console.WriteLine("다시 시도하시려면 Y, 아니면 N를 입력하세요. ");
if (exitUpgrad == "Y")
{
continue;
}
else
{
Console.WriteLine("강화를 종료합니다.");
break;
}
}
break;
}
}
Console.WriteLine("강화할 아이템이 없습니다.");
return item;
}
public Item Systhesis(Item item, int iron, int wood)
{
if(this.iron >= 3 && iron == 3 && this.wood >= 0 && wood == 0)
{
item = AddItemInfo(item, 0, "강철신발", 1, 0);
this.iron -= iron;
this.wood -= wood;
}
else if(this.iron >= 1 && iron == 1 && this.wood >= 3 && wood == 3)
{
item = AddItemInfo(item, 20, "강철로 덧댄 활", 1, 0);
this.iron -= iron;
this.wood -= wood;
}
else
{
Console.WriteLine("자원이 부족합니다.");
}
return item;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study00
{
public class App
{
public App()
{
Console.WriteLine("App");
Inventory inven = new Inventory();
Item item = new Item("활", Item.eItemType.Weapon);
Item item1 = new Item("흉갑", Item.eItemType.Armor);
Item item2 = new Item("쌍검", Item.eItemType.Weapon);
Console.WriteLine("활을 인벤토리에 넣습니다.");
inven.AddItem(item);
inven.AddItem(item1);
inven.AddItem(item2);
inven.Print();
Console.WriteLine();
item2 = inven.GetItem("흉갑");
inven.Print();
Console.WriteLine();
inven.AddItem(item2);
inven.Print();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study00
{
public class Item
{
public enum eItemType
{
Weapon,
Armor,
Accessories
}
public string name;
public eItemType itemType;
//생성자
public Item(string name, eItemType itemType)
{
this.name = name;
this.itemType = itemType;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study00
{
class Inventory
{
Item[] items;
int capacity = 100;
//생성자
public Inventory()
{
Console.WriteLine("Inventory");
this.items = new Item[capacity];
}
public void AddItem(Item item)
{
for(int i = 0; i < items.Length; i++)
{
if(items[i] == null)
{
items[i] = item;
Console.WriteLine("{0} 아이템을 넣었습니다.", item.name);
break;
}
}
}
public Item GetItem(string itemName)
{
for(int i = 0; i < items.Length; i++)
{
if (items[i].name == itemName)
{
Item item = items[i];
items[i] = null;
return item;
}
}
Console.WriteLine("없는 아이템 입니다.");
return null;
}
public bool FindItem(string itemName)
{
for (int i = 0; i < items.Length; i++)
{
if (items[i].name == itemName)
{
return true;
}
}
return false;
}
public void Print()
{
int count = 1;
foreach(Item item in items)
{
if(item != null)
{
Console.WriteLine("{0}. {1}({2})", count, item.name, item.itemType);
}
count++;
}
}
}
}
'C# > 수업내용' 카테고리의 다른 글
C# 2주차 3일 수업 내용 : 인터페이스, 상속, Dictionary(21.03.17) (0) | 2021.03.17 |
---|---|
C# 2주차 2일 수업 내용 (21.03.16) (0) | 2021.03.16 |
C# 1주차 5일 수업 내용 (21.03.12) (0) | 2021.03.12 |
C# 1주차 4일 수업 내용 (21.03.11) (0) | 2021.03.11 |
C# 1주차 3일 수업 내용 예제 5번 (21.03.10) (0) | 2021.03.10 |