반응형
SMALL
상점 아이템 목록
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;
namespace Study013
{
class App
{
public App()
{
//Json 데이터 불러오기
string json = File.ReadAllText("./item_data.json");
//foreach를 사용하여 Dictionary 컬렉션에 할당 하는 방법
//ItemData[] itemDatas = JsonConvert.DeserializeObject<ItemData[]>(json);
//Dictionary<int, ItemData> itemLists = new Dictionary<int, ItemData>();
//foreach (var itemdata in itemDatas)
//{
// itemLists.Add(itemdata.id, itemdata);
// Console.WriteLine(itemdata);
//}
// LINQ 사용하여 Dictionary 컬렉션에 할당 하는 방법
var itemLists = JsonConvert.DeserializeObject<ItemData[]>(json).ToDictionary(x => x.id);
//내용물 출력
foreach (var itemList in itemLists)
{
int id = itemList.Key;
ItemData data = itemList.Value;
Console.WriteLine("{0},{1},{2}", id, data.name, data.damage);
}
}
}
}
미션 목록 및 보상
App Class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;
namespace Study013
{
class App
{
public App()
{
string missionJson = File.ReadAllText("./mission_data.json");
string itemJson = File.ReadAllText("./item_data.json");
var missionLists = JsonConvert.DeserializeObject<MissionData[]>(missionJson).ToDictionary(x => x.id);
var itemLists = JsonConvert.DeserializeObject<ItemData[]>(itemJson).ToDictionary(x => x.id);
foreach (var missionList in missionLists)
{
foreach (var itemList in itemLists)
{
if(itemList.Value.id == missionList.Value.resultItem)
{
Console.WriteLine("미션 : {0}", missionList.Value.mossion);
Console.WriteLine("미션 내용 : {0}", missionList.Value.missionStory);
Console.WriteLine("미션 목표 : {0}", missionList.Value.objective);
Console.WriteLine("미션 보상 : {0}X{1}\n", itemList.Value.name, missionList.Value.itemNum);
}
}
}
}
}
}
결과창
선생님이 만드신 코드
using System;
using System.IO;
using System.Collections.Generic;
using Newtonsoft.Json;
using System.Linq;
namespace Study12
{
class App
{
Dictionary<int, MissionData> dicMissionData;
Dictionary<int, ItemData> dicItemData;
Button btnMission;
//생성자
public App()
{
//-------------- 게임 준비 과정 ------------------------------------------
//데이터 관련 준비
this.dicMissionData = new Dictionary<int, MissionData>();
//this.dicItemData = new Dictionary<int, ItemData>();
this.LoadMissionData();
this.LoadItemData();
//UI준비 과정
this.btnMission = new Button();
//----------------------------------------------------------------------------
//사용자가 미션버튼을 눌렀다면
//미션 팝업을 보여준다
this.btnMission.onClick = () => {
this.OpenMissionPopup();
};
//사용자거 버튼을 눌렀다
this.btnMission.Click();
}
private void OpenMissionPopup()
{
//미션 목록을 보여준다
Console.WriteLine("미션 목록을 보여준다 ");
//늑대잡기
//늑대 10마리를 잡아오세요
//보상: 골드 x 2,000
foreach (KeyValuePair<int, MissionData> pair in this.dicMissionData)
{
MissionData data = pair.Value;
Console.WriteLine(data.name);
//Console.WriteLine("늑대 {0}마리를 잡아오세요", data.goal);
Console.WriteLine(data.desc, data.goal);
ItemData itemData = this.dicItemData[data.reward_item_id];
string rewardName = itemData.name;
Console.WriteLine("보상: {0} x {1}", rewardName, data.amount);
Console.WriteLine();
}
}
private void LoadMissionData()
{
var path = "./mission_data.json";
var json = File.ReadAllText(path);
MissionData[] arr = JsonConvert.DeserializeObject<MissionData[]>(json);
foreach (var data in arr)
this.dicMissionData.Add(data.id, data);
Console.WriteLine("LoadMissionData: {0}", dicMissionData.Count);
}
private void LoadItemData()
{
var path = "./item_data.json";
var json = File.ReadAllText(path);
ItemData[] arr = JsonConvert.DeserializeObject<ItemData[]>(json);
this.dicItemData = arr.ToDictionary(x => x.id);
Console.WriteLine("LoadItemData: {0}", dicItemData.Count);
}
}
}
- foreach 를 사용하여 집어 넣는 방법과 LINQ를 이용하는 방법 두가지 모두 많이 써봐야겠다.
- ToDictionary 에 집어넣는 X는 실무자들 사이에서 암묵적으로 넣는것
- btn은 실무자들이 사용하는 Button의 약어
- 컬렉션들은 따로 뽑아 낼 필요 없환 가능하다.
- 선생님 코드 한줄 한줄 주석을 달아서 코드를 분석해보는것도 의미가 있을듯 하다.
반응형
LIST
'C# > 수업 내용' 카테고리의 다른 글
[유니티] 원격수업 Memo (복습 & 놓친거 찾기) (0) | 2023.02.09 |
---|---|
2023.01.13 오전 수업 내용 : 직렬화 (0) | 2023.01.13 |
2023.01.12 오전수업 : LINQ (0) | 2023.01.12 |
람다 문 사용 예시2 (0) | 2023.01.11 |
람다문 사용 예시 (1) | 2023.01.11 |