본문 바로가기

자료구조

데이터 테이블 과 Dictionary (아이템, 몬스터) 수정중

더보기
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloWorld
{
    class App
    {
        private Dictionary<int, ItemData> dicItemDatas;
        private Dictionary<int, MonsterData> dicMonDatas;

        //생성자
        public App()
        {
            //키,값 컬렉션
            //값의 타입 : ItemData, 키(id)의 타입: int
            dicItemDatas = new Dictionary<int, ItemData>();
            ItemData itemData0 = new ItemData(100, "장검", 4.9f);
            ItemData itemData1 = new ItemData(101, "단검", 3);
            ItemData itemData2 = new ItemData(102, "활", 3.5f);
            ItemData itemData3 = new ItemData(103, "지팡이", 2.3f);

            dicItemDatas.Add(100, itemData0);
            dicItemDatas.Add(101, itemData1);
            dicItemDatas.Add(102, itemData2);
            dicItemDatas.Add(103, itemData3);
            dicItemDatas.Add(104, new ItemData(104, "창", 5.5f));

            //Console.WriteLine("아이템데이터수: {0}", dicItemDatas.Count);

            //ItemData itemData = dicItemDatas[100];
            //Console.WriteLine("{0}, {1}, {2}", itemData.id, itemData.name, itemData.damage);

            Item item = this.CreateItem(104);
            //Console.WriteLine("{0}, {1}, {2}", item.data.id, item.data.name, item.data.damage);
            //Console.WriteLine("{0}, {1}, {2}", item.Id, item.Name, item.Damage);

            //Item item = new Item(itemData);
            //Console.WriteLine("{0}, {1}, {2}", item.data.id, item.data.name, item.data.damage);
            dicMonDatas = new Dictionary<int, MonsterData>();
            MonsterData monData0 = new MonsterData(1000, "코볼트", 100);
            MonsterData monData1 = new MonsterData(1001, "오크전사", 102);
            MonsterData monData2 = new MonsterData(1002, "슬라임", 104);

            dicMonDatas.Add(1000, monData0);
            dicMonDatas.Add(1001, monData1);
            dicMonDatas.Add(1002, monData2);
            Console.WriteLine("몬스터데이터수: {0}", dicMonDatas.Count);
            Console.WriteLine();
            while(true)
            {
                Console.Write("몬스터 id입력(1000, 1001, 1002): ");
                int MonNum = Convert.ToInt32(Console.ReadLine());
                Monster monster = this.CreateMon(MonNum);
                Console.WriteLine("생성몬스터: {0}", monster.data.name);
                this.MonDie(monster.data.id);
                Item item0 = DropItem(monster.data.rewardNum);
                Console.WriteLine("획득한 아이템: {0}", item0.data.name);
                Console.WriteLine();
            }
        }

        //아이템생성 메서드
        private Item CreateItem(int id)
        {
            ItemData data = this.dicItemDatas[id];  //id를 키값으로 하는 ItemData를 가져온다
            return new Item(data);
        }

        //몬스터생성 메서드
        private Monster CreateMon(int id)
        {
            MonsterData data = this.dicMonDatas[id];
            return new Monster(data);
        }

        //몬스터 처치시 아이템드랍 메서드
        private Item DropItem(int rewardNum)
        {
            ItemData data = this.dicItemDatas[rewardNum];
            Console.WriteLine("몬스터가 {0}을(를) 드랍했다", data.name);
            return new Item(data);
        }
        
        //몬스터 사망
        private void MonDie(int id)
        {
            MonsterData data = this.dicMonDatas[id];
            Console.WriteLine("{0}가 죽었습니다.", data.name);
        }
    }
}

몬스터

더보기
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloWorld
{
    class Monster
    {
        public MonsterData data;
        //생성자
        public Monster(MonsterData data)
        {
            this.data = data;
        }
    }
}

몬스터데이터

더보기
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloWorld
{
    struct MonsterData
    {
        public int id;
        public string name;
        public int rewardNum;
        public MonsterData(int id, string name, int itemId)
        {
            this.id = id;
            this.name = name;
            this.rewardNum = itemId;
        }
    }
}

HelloWorld.exe
0.01MB

'자료구조' 카테고리의 다른 글

Jagged Array (가변배열)  (0) 2021.12.28
Dictionary + 인벤토리  (0) 2021.12.26
큐 연습 문제 (카드)  (0) 2021.12.25
스택 연습문제 (세상의 균형)  (0) 2021.12.25
스택연습문제 (받아쓰기)  (0) 2021.12.25