아카이브

Dictionary 연습 본문

C#프로그래밍

Dictionary 연습

timbercat 2023. 7. 26. 15:11
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[100];
            Item item = new Item(data);
            Console.WriteLine(item.data.id); //100
            Console.WriteLine(item.data.name); //장검
            Console.WriteLine(item.data.damage); //8

            //몬스터 데이터를 저장하는 컬랙션 Dic
            Dictionary<int, MonsterData> dicMonsterDatas = new Dictionary<int, MonsterData>();
           
            dicMonsterDatas.Add(1000, new MonsterData(1000, "고블린", 100));
            dicMonsterDatas.Add(1001, new MonsterData(1001, "트롤", 101));
            dicMonsterDatas.Add(1002, new MonsterData(1002, "오우거", 102));

            //고블린 데이터 가져오기
            MonsterData monsterdata = dicMonsterDatas[1000];
            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());
        }

        //
    }
}
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 MonsterData(int id, string name, int item_id)
        {
            this.id = id;
            this.name = name;
            this.item_id = item_id;
        }
    }    
}
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 Monster(Dictionary<int, ItemData> dicItemDatas, MonsterData data) 
        {
            this.dicItemDatas = dicItemDatas;
            this.data = data;
        }

        //죽는다
        public Item Die()
        {
            Console.WriteLine("{0}이 죽었습니다.", this.data.name);
            ItemData itemData = this.dicItemDatas[this.data.item_id];            
            return new Item(itemData);           
        }

    }
}

'C#프로그래밍' 카테고리의 다른 글

Dictionary 인벤토리*  (0) 2023.07.26
Dictionary 연습2  (0) 2023.07.26
2차원 배열 연습  (0) 2023.07.25
2차원 배열  (0) 2023.07.25
배열연습 인벤토리  (0) 2023.07.25