C#

미션 만들기

송현호 2023. 7. 28. 18:15

다음 사진의 정보를 엑셀에서 불러와 코드로 구현하고자 한다.

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

namespace practice
{
    internal class App
    {
        //생성자
        public App()
        {
            InfoManager.instance.LoadDataManager();
            Console.WriteLine("게임시작");
            InfoManager.instance.PrintMission();
            InfoManager.instance.GetGift(1000);
            InfoManager.instance.GetGift(1001);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.IO;
using System.Reflection;

namespace practice
{
    
    internal class InfoManager
    {
        public static readonly InfoManager instance = new InfoManager();
        Dictionary<int, MissionList>dicMissionList = new Dictionary<int, MissionList>();
        Dictionary<int, ItemList> dicItemList = new Dictionary<int, ItemList>();
        Dictionary<int, MissionInfo> dicMissionInfo = new Dictionary<int, MissionInfo>();
        private InfoManager() { }

        public void LoadDataManager()
        {
            string json = File.ReadAllText("./mission_list.json");
            string json2 = File.ReadAllText("./item_list.json");
            string json3 = File.ReadAllText("./mission_info.json");

            MissionList[] missionLists = JsonConvert.DeserializeObject<MissionList[]>(json);
            ItemList[] ItemLists = JsonConvert.DeserializeObject<ItemList[]>(json2);
            MissionInfo[] missionInfos = JsonConvert.DeserializeObject<MissionInfo[]>(json3);


            foreach(MissionList missionList in missionLists)
            {
                dicMissionList.Add(missionList.id, missionList);
            }

            foreach(ItemList itemList in ItemLists)
            {
                dicItemList.Add(itemList.id, itemList);
            }

            foreach(MissionInfo missionInfo in missionInfos)
            {
                dicMissionInfo.Add(missionInfo.id, missionInfo);
            }
            

        }

        public void PrintMission()
        {
            foreach(var mission in dicMissionList)
            {
                Console.WriteLine(mission.Value.name);
                Console.WriteLine(mission.Value.detail);
                Console.WriteLine(mission.Value.gift);
                Console.WriteLine("{0}/{1}",dicMissionInfo[mission.Value.id].progress,mission.Value.target);
            }
        }

        public void GetGift(int i)
        {
            if (dicMissionInfo[i].state == 0)
            {
                Console.WriteLine("아직 보상을 획득할 수 없습니다.");
            }
            else if (dicMissionInfo[i].state == 1)
            {
                Console.WriteLine("보상을 획득하였습니다");
                Item item = new Item(dicItemList[dicMissionList[i].item_id]);
                dicMissionInfo[i].state = 2;
            }

            else
            {
                Console.WriteLine("이미 보상을 획득하였습니다.");
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace practice
{
    internal class ItemList
    {
        public int id;
        public string name;
        public int image;

        public ItemList() { }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace practice
{
    internal class MissionInfo
    {
        public int id;
        public int progress;
        public int state;

        public MissionInfo() { }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace practice
{
    internal class Item
    {
        ItemList list;
        public Item(ItemList list) 
        {
            this.list = list;
        }
    }
}

'C#' 카테고리의 다른 글

게임시작2  (0) 2023.07.28
게임시작  (0) 2023.07.28
대리자 연습 3,4  (0) 2023.07.27
대리자 연습 1,2  (0) 2023.07.27
싱글톤 패턴으로 대리자 호출  (0) 2023.07.27