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 |