Notice
Recent Posts
Recent Comments
Link
스토리지
[3.15] 배열 복습 2 - 강화 & 합성 기능추가 본문
using System;
namespace Study05
{
public class Item
{
enum eItemLevel
{
NORMAL,
MAGIC,
LEGEND
}
private string name;
private int damage;
private int itemLevel;
private Random r;
public Item()
{
Console.WriteLine("ITEM 생성됨");
r = new Random();
}
public Item(string name, int damage, int itemLevel)
{
Console.WriteLine("ITEM 생성됨");
this.name = name;
this.damage = damage;
this.itemLevel = itemLevel;
r = new Random();
}
public void SetName(string name)
{
this.name = name;
}
public string GetName()
{
return this.name;
}
public void SetDamage(int damage)
{
this.damage = damage;
}
public int GetDamage()
{
return this.damage;
}
public void SetItemLevel(int itemLevel)
{
this.itemLevel = itemLevel;
}
public int GetItemLevel()
{
return itemLevel;
}
public void Print()
{
Console.WriteLine("{0}, {1}, {2}", this.name, this.damage, (eItemLevel)this.itemLevel);
}
public bool Reinforce()
{
//Console.WriteLine("강화를 시도합니다. (강화확률 : 50%)");
//Console.WriteLine("성공시 공격력 + 4, 실패시 공격력 : 0");
int prob = r.Next(1, 101);
if(prob >= 50)
{
//Console.WriteLine("강화 성공");
this.damage += 4;
return true;
}
else
{
//Console.WriteLine("강화 실패");
this.damage -= 4;
return false;
}
}
public static Item SyntheSizeItem(Item item1, Item item2)
{
Item resultItem = null;
Random random = new Random();
int prob = random.Next(1, 101);
if(prob <= 45)
{
if((item1.GetName() == "단검" && item2.GetName() == "전설 도끼") ||
(item1.GetName() == "전설 도끼" && item2.GetName() == "단검"))
{
int levelResult = item1.GetItemLevel() + item2.GetItemLevel();
if(levelResult >= 3)
{
levelResult = 2;
}
resultItem = new Item("둔기", item1.GetDamage() + item2.GetDamage(), levelResult);
}
}
else
{
Console.WriteLine("강화 실패.");
item1 = null;
item2 = null;
}
return resultItem;
}
}
}
using System;
namespace Study05
{
public class App
{
public App()
{
Item item1 = new Item("장검", 20, 0);
Item item2 = new Item("단검", 32, 1);
Item item3 = new Item();
Item item4 = new Item();
item3.SetName("활");
item3.SetDamage(55);
item3.SetItemLevel(0);
item4.SetName("전설 도끼");
item4.SetDamage(55);
item4.SetItemLevel(2);
item1.Print();
item2.Print();
item3.Print();
item4.Print();
Console.WriteLine("========================================");
float count = 0;
float successCount = 0;
Console.WriteLine("아이템을 강화합니다. 확률 : 50%");
Console.WriteLine("예제 : 장검을 공격력이 50될때까지 강화함.");
while (item1.GetDamage() < 50)
{
if (item1.Reinforce())
{
successCount++;
}
count++;
}
float successRate = successCount / count * 100;
Console.WriteLine("성공 비율 {0}/{1} ({2}%)", successCount, count, successRate);
Console.WriteLine("========================================");
Console.WriteLine("도끼와 단검을 합성합니다. (결과물 : 둔기, 확률 : 45%)");
Item blunt = Item.SyntheSizeItem(item2, item4);
if(blunt != null && item2 != null && item4 != null)
{
blunt.Print();
}
else
{
Console.WriteLine("강화가 실패하여 아이템이 모두 파괴되었습니다.");
}
}
}
}
'Unity > 수업내용(C#)' 카테고리의 다른 글
[3.15] 배열 및 클래스를 이용한 인벤토리 & 상점 (0) | 2021.03.15 |
---|---|
[3.15] 배열, 클래스 심화 - 인벤토리 구현 (0) | 2021.03.15 |
[3.15] 배열 복습 (0) | 2021.03.15 |
[3.12] 상속 예제 1 (0) | 2021.03.12 |
[3.12] 상속 Inheritance (0) | 2021.03.12 |
Comments