C#프로그래밍

딕셔너리 다시 연습 (주석 자세히)

노재두내 2023. 7. 26. 18:08
using System;
using System.Collections;
using System.Collections.Generic;

namespace LearnDotnet
{
    public class App
    {
        //생성자
        public App()
        {
            //아이템 인스턴스화 (실제로 생성)
            //초기화
            Dictionary<int, ItemData> dicItemDatas = new Dictionary<int, ItemData>();
            dicItemDatas.Add(1, new ItemData(100, "장검", 8));
            dicItemDatas.Add(2, new ItemData(101, "단검", 5));
            dicItemDatas.Add(3, new ItemData(102, "활", 6));

            //사전에서 키로 값을 가져오기(키1(dic[1])로 장검을 가져오기 ) 
            ItemData data = dicItemDatas[1];//키로 값에 접근해서 ItemData 타입의 data 에 저장
            Item item = new Item(data);// 나온 값을 Item 타입의 item 에 저장?
            Console.WriteLine(item.data.id);
            Console.WriteLine(item.data.name);
            Console.WriteLine(item.data.damage);

            //몬스터 데이터를 저장하는 컬렉션 dicMonsterDatas
            Dictionary<int, MonsterData> dicMonsterDatas = new Dictionary<int, MonsterData>();
            dicMonsterDatas.Add(1, new MonsterData(1000, "고블린",8));//monsterDatas 사전에 추가
            dicMonsterDatas.Add(2, new MonsterData(1001, "트롤",5));
            dicMonsterDatas.Add(3, new MonsterData(1002, "오우거",6));

            //트롤의 데이터를 가져오기
            MonsterData monsterData = dicMonsterDatas[3];
            Monster monster = new Monster(dicItemDatas,monsterData);
            Console.WriteLine(monster.monsterData.name);

            //몬스터 죽음 
            //monster.Die();
            //몬스터의 이름을 가져옴(몬스터 죽으면 생길 아이템)
            Item dropItem = monster.Die();
            


            //싱글톤패턴
            //DataManager.instance.LoadItemDatas();
        }
    }

}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LearnDotnet
{
    public class Monster
    {
        public MonsterData monsterData;
        Dictionary<int, ItemData> dicItemDatas;
        
        //생성자
        public Monster(Dictionary<int,ItemData> dicItemDatas ,MonsterData monsterData)//몬스터가 딕셔너리를 들고 있어야함
        {
            this.monsterData = monsterData;
            this.dicItemDatas = dicItemDatas;
        }

        public Item Die()
        {
            Console.WriteLine("{0}이 죽었습니다.",this.monsterData.name);
            ItemData itemData = this.dicItemDatas[this.monsterData.item_id];//this.monsterData.item_id는 키 
            return new Item(itemData);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;

namespace LearnDotnet
{
    public class MonsterData
    {
        public int id;
        public string name;
        public int item_id;
        //생성자
        public MonsterData(int id, string name,int item_id)
        {
            this.id = id;
            this.name = name;
            this.item_id = item_id;
        }
    }
}