아카이브
Dictionary 연습2 본문
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class ItemData
{
public int id;
public string name;
public int damage;
//생성자
public ItemData(int id, string name, int damage)
{
this.id = id;
this.name = name;
this.damage = damage;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class Item
{
public ItemData data;
//생성자
public Item(ItemData data)
{
this.data = data;
}
public string GetName()
{
//반환값
return this.data.name;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class MonsterData
{
public int id;
public string name;
public int item_id;
public int hp;
//생성자
public MonsterData(int id, string name, int item_id, int hp)
{
this.id = id;
this.name = name;
this.item_id = item_id;
this.hp = hp;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Permissions;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class Monster
{
public MonsterData data;
Dictionary<int, ItemData> dicItemDatas;
public int hp;
//생성자
public Monster(Dictionary<int, ItemData> dicItemDatas, MonsterData data)
{
this.dicItemDatas = dicItemDatas;
this.data = data;
this.hp = this.data.hp;
}
//죽는다
public Item Die()
{
Console.WriteLine("{0}가 죽었습니다.", this.data.name);
ItemData itemData = this.dicItemDatas[this.data.item_id];
return new Item(itemData);
}
public void HitDamage(int damage)
{
this.hp -= damage;
}
public int Gethp()
{
return this.hp;
}
}
}
using LearnDotnet;
using System;
using System.Collections;
using System.Collections.Generic;
//using 지시문을 사용하면 네임스페이스에 정의된 형식을 해당 형식의 정규화된 네임스페이스를 지정하지 않고도 사용할 수 있습니다.
namespace LearnDotnet
{
public class App
{
//생성자
public App()
{
//초기화
//Dictionary : 키/값 쌍으로 데이터를 저장 관리 하는 컬렉션
Dictionary<int, ItemData> dicItemDatas = new Dictionary<int, ItemData>();
dicItemDatas.Add(100, new ItemData(100, "장검", 8));
dicItemDatas.Add(101, new ItemData(101, "단검", 5));
dicItemDatas.Add(102, new ItemData(102, "활", 6));
//사전에서 키로 값을 가져오기
ItemData data = dicItemDatas[101];
Item item = new Item(data);
Console.WriteLine(item.data.id); //101
Console.WriteLine(item.data.name); //단검
Console.WriteLine(item.data.damage); //5
//몬스터 데이터를 저장하는 컬랙션 Dic
Dictionary<int, MonsterData> dicMonsterDatas = new Dictionary<int, MonsterData>();
dicMonsterDatas.Add(1000, new MonsterData(1000, "고블린", 100, 50));
dicMonsterDatas.Add(1001, new MonsterData(1001, "트롤", 101, 45));
dicMonsterDatas.Add(1002, new MonsterData(1002, "오우거", 102, 65));
//오우거 데이터 가져오기
MonsterData monsterdata = dicMonsterDatas[1002];
Monster monster = new Monster(dicItemDatas, monsterdata);
Console.WriteLine(monster.data.id);
Console.WriteLine(monster.data.name);
Item dropItem = monster.Die();
Console.WriteLine("{0}을 주웠습니다.",dropItem.GetName());
monster.HitDamage(item.data.damage);
Console.WriteLine("{0} 데미지를 입었습니다", item.data.damage);
Console.WriteLine("hp: {0}", monster.Gethp());
}
}
}
'C#프로그래밍' 카테고리의 다른 글
Action 대리자 연습 (0) | 2023.07.27 |
---|---|
Dictionary 인벤토리* (0) | 2023.07.26 |
Dictionary 연습 (0) | 2023.07.26 |
2차원 배열 연습 (0) | 2023.07.25 |
2차원 배열 (0) | 2023.07.25 |