* 문제점: Key값이 "info"로 들어감
1. WeaponInfo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LoadDataExample
{
// 저장될(변화하는) 데이터 저장
public class WeaponInfo
{
public int id; // 아이디
public int enforce; // 강화 수치
// 생성자
public WeaponInfo(int id, int enforce = 0)
{
this.id = id;
this.enforce = enforce;
}
}
}
2. Item.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LoadDataExample
{
public class Item
{
public WeaponInfo Info
{
get;
private set;
}
// 생성자
public Item(WeaponInfo info)
{
this.Info = info;
}
}
}
3. Inventory.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LoadDataExample
{
public class Inventory
{
Random rand = new Random();
public List<Item> ItemList { get; set; }
// 생성자
public Inventory()
{
this.ItemList = new List<Item>();
}
public void CreateItem(int id)
{
WeaponInfo info = new WeaponInfo(id);
Item item = new Item(info);
this.ItemList.Add(item);
}
public void AddItem()
{
int id = this.rand.Next(100, 104);
WeaponInfo info = new WeaponInfo(id);
Item item = new Item(info);
this.ItemList.Add(item);
}
}
}
4. App.cs
using System;
using System.IO;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Linq;
namespace LoadDataExample
{
public class App
{
//생성자
public App()
{
Inventory inventory = new Inventory();
bool exists = File.Exists("./weapon_info.json");
if (exists)
{
Console.WriteLine("기존유저");
// 메모장에 있는 걸 읽어옴
string weaponInfoJson = File.ReadAllText("./weapon_info.json");
//Console.WriteLine(weaponInfoJson);
//역직렬화 : 문자열 -> 오브젝트
inventory.ItemList = JsonConvert.DeserializeObject<List<Item>>(weaponInfoJson);
// 아이템 추가
inventory.AddItem();
// 직렬화: 오브젝트 -> 문자열
string serializedJson = JsonConvert.SerializeObject(inventory.ItemList);
//string serializedJson = JsonConvert.SerializeObject(item.Info);
Console.WriteLine(serializedJson);
//저장
File.WriteAllText("./weapon_info.json", serializedJson);
}
else
{
Console.WriteLine("신규유저");
//초기 아이템 지급
inventory.CreateItem(100);
//직렬화 : 오브젝트 -> 문자열
string serializedJson = JsonConvert.SerializeObject(inventory.ItemList);
Console.WriteLine(serializedJson);
//저장
File.WriteAllText("./weapon_info.json", serializedJson);
}
}
}
}
'C# > 수업 과제' 카테고리의 다른 글
for문 연습 문제 (0) | 2022.06.10 |
---|---|
디아블로 아이템 출력하기 (0) | 2022.06.09 |