본문 바로가기
KDT/C# 프로그래밍

23/07/30 과제(미션)

by 잰쟁 2023. 7. 30.
728x90

App

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;

namespace Practice
{
    public class App
    {
        public Game game;

        //생성자
        public App()
        {

            MissionInfo missionInfo = null;
            bool isNewbie = true;

            //유저 타입별 게임정보 로드
            if (File.Exists("./mission_info.json"))
            {

                //기존유저
                Console.WriteLine("기존 유저");
                isNewbie = false;
                //mission_info.json파일 읽어와 역직렬화 -> MissionInfo 객체
                string json = File.ReadAllText("./mission_info.json");
                Console.WriteLine(json);
                missionInfo = JsonConvert.DeserializeObject<MissionInfo>(json);
            }
            else
            {
                //신규유저
                Console.WriteLine("신규 유저");
                isNewbie = true;
                //새로운 MissionInfo 객체를 생성해서 기본값으로 설정한뒤 저장
                missionInfo = new MissionInfo();
                missionInfo.Init();
            }

                //게임 로딩(준비)
                DataManager.instance.LoadMission();
                DataManager.instance.LoadRewardItem();

                //게임 시작
                this.game = new Game();
                this.game.Start();
        }
    }
}

DataManager

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;


namespace Practice
{
    public class DataManager
    {
        public static readonly DataManager instance = new DataManager();
        private Dictionary<int, MissionData> dicMissionData;
        private Dictionary<int, RewardItemData> dicRewardItemData;

        //생성자
        public DataManager()
        { 
   
        }

        //미션 로드 메서드
        public void LoadMission()
        {
            //mission_data 파일 읽기
            var json = File.ReadAllText("./mission_data.json");
            Console.WriteLine(json);
            //역직렬화
            MissionData[] missionData = JsonConvert.DeserializeObject<MissionData[]>(json);
            //사전에 담기
            Dictionary<int, MissionData> dicMissionData = new Dictionary<int, MissionData>();
            foreach(var data in missionData)
            {
                dicMissionData.Add(data.id, data);
            }
            Console.WriteLine("미션 데이터 로드 완료 :{0}",dicMissionData.Count);
        }

        //리워드아이템 로드 메서드
        public void LoadRewardItem()
        {
            //RewardItem 파일 읽기
            var json1 = File.ReadAllText("./reward_item_data.json");
            Console.WriteLine(json1);
             //역직렬화
             RewardItemData[] rewardItemData = JsonConvert.DeserializeObject<RewardItemData[]>(json1);
             //사전에 담기
             Dictionary<int, RewardItemData> dicRewardItemData = new Dictionary<int, RewardItemData>();
            foreach(var data in rewardItemData)
            {
                dicRewardItemData.Add(data.id, data);
            }
            Console.WriteLine("아이템 데이터 로드 완료: {0}", dicRewardItemData.Count);
        }
    }
}

InfoManager

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace Practice
{
    public class InfoManager
    {
        public MissionInfo[] missionInfo;

        //생성자
        public InfoManager()
        {

        }
        //미션정보 로드 메서드
        public void LoadMissionInfo()
        {
            //mission_info파일 읽기
            var json2 = File.ReadAllText("./mission_info.json");
            Console.WriteLine(json2);
            //역직렬화
            missionInfo = JsonConvert.DeserializeObject<MissionInfo[]>(json2);
        }
    }
}

Game

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Threading;

namespace Practice
{
    public class Game
    {
         private User user;

        //생성자
        public Game()
        {           
        }

        //게임시작 메서드
        public void Start()
        {
            this.user = this.CreateUser("홍길동");
            Console.WriteLine("게임을 시작합니다.\n유저({0})이 입장하였습니다.",this.user.name);           
        }

        //유저 생성 메서드
        public User CreateUser(string name)
        {
            return new User(name);
        }
    }
}

Mission

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

namespace Practice
{
    public class Mission
    {
        public MissionData missionData;

        //생성자
        public Mission(MissionData missionData)
        {
            this.missionData = missionData;
        }
    }
}

MissionData

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

namespace Practice
{
    public class MissionData
    {
        public int id;
        public string name;
        public int goal;
        public int reward_item_id;
        public int reward_item_amount;      
    }
}

RewardItem

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

namespace Practice
{
    public class RewardItem
    {
        public RewardItemData rewardItemData;

        //생성자
        public RewardItem(RewardItemData rewardItemData)
        {
            this.rewardItemData = rewardItemData;
        }
    }
}

RewardItemData

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

namespace Practice
{
    public class RewardItemData
    {
        public int id;
        public string name;
    }
}

MissionInfo

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

namespace Practice
{

    public class MissionInfo
    {
        public int id;
        public int progress;
        public int state;

        //생성자
        public MissionInfo()
        {

        }

        //신규유저 초기화 메서드
        public void Init()
        {
            missionInfo = new
        }
    }   
}

User

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

namespace Practice
{
    public class User
    {
        public string name;

        //생성자
        public User(string name)
        {
            this.name = name;
        }
    }
}

 

 

**전반적으로 수정 및 메서드 만드는 연습 더 해야함.....

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

23/07/28 게임 세팅  (0) 2023.07.28
23/07/27 과제(복습)  (0) 2023.07.27
23/07/27 아이템 정보 저장하기  (0) 2023.07.27
23/07/27 대리자 연습  (0) 2023.07.27
23/07/27 Action 대리자  (0) 2023.07.27