출석 보상 아이템 다시 만들어봤습니다.
집에 프로그램이 이상해서 코드 치면서 길어지면 어느 순간부터 수정해도 실행 창이 바뀌지 않아서 시간이 오래 걸렸습니다ㅠㅠ
새로운 건 찾아서 차근차근 만들어서 또 올리도록 하겠습니다!
App
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
class App
{
public UserInfo user;
DataManger dataManger;
public App()
{
dataManger = DataManger.GetInstance();
dataManger.LoadDatas();
this.NewBieCheck();
this.PrintAttendanceReward();
this.DoAttendance();
this.DoAttendance();
this.SaveFile();
}
public void NewBieCheck()
{
if (dataManger.userInfo == null)
{
user = new UserInfo();
user.connectDate = DateTime.Today;
user.attendanceCount++;
}
else
{
user = dataManger.userInfo;
user.lastConnectDte = user.connectDate;
user.connectDate = DateTime.Today;
user.attendanceCount++;
user.attendanceCount--;
}
}
public void PrintAttendanceReward()
{
{
AttendanceRewardData rewardData = dataManger.GetAttendanceRewardData(i + 1);
AttendanceRewardItemData rewardItemData = dataManger.GetAttendanceRewardItemData(rewardData.item_id);
}
Console.WriteLine("---------------------------------------------");
}
public void DoAttendance()
{
{
AttendanceRewardData rewardData = dataManger.GetAttendanceRewardData(user.attendanceCount);
AttendanceRewardItemData rewardItemData = dataManger.GetAttendanceRewardItemData(rewardData.item_id);
Item item = new Item(rewardData.id, rewardItemData.name, rewardData.amount, rewardItemData.icon_name);
if (foundItem == null)
{
Console.WriteLine("{0}일 출석하였습니다.", user.attendanceCount);
Console.WriteLine("---------------------------------------------");
user.HaveItem(item);
int continuationDay = user.lastConnectDte.AddDays(1).Day;
{
user.continuationCount++;
if (user.continuationCount == 5 || user.continuationCount == 10 || user.continuationCount == 20)
{
AttendanceRewardItemData bonusItemData = dataManger.GetAttendanceRewardItemData(rewardData.bonus_item_id);
Item bonusItem = new Item(rewardData.bonus_item_id, bonusItemData.name, rewardData.bonus_item_amount, bonusItemData.icon_name);
Console.WriteLine("{0}일 연속 출석으로 보너스 아이템이 지급됩니다.", user.continuationCount);
Console.WriteLine("---------------------------------------------");
user.HaveItem(bonusItem);
}
}
else
{
user.continuationCount = 1;
}
}
else
{
Console.WriteLine("이미 출석 보상을 받으셨습니다.");
Console.WriteLine("---------------------------------------------");
}
}
{
Console.WriteLine("이미 출석 보상을 받으셨습니다.");
Console.WriteLine("---------------------------------------------");
}
}
public void SaveFile()
{
var inventory = JsonConvert.SerializeObject(this.user);
//Console.WriteLine(inventory);
File.WriteAllText(fileNAme, inventory);
}
}
|
cs |
DataManger
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
class DataManger
{
public static DataManger instance;
public Dictionary<int, AttendanceRewardData> dicAttendanceRewardDatas;
public Dictionary<int, AttendanceRewardItemData> dicAttendanceRewardItemDatas;
public UserInfo userInfo;
public DataManger()
{
dicAttendanceRewardDatas = new Dictionary<int, AttendanceRewardData>();
dicAttendanceRewardItemDatas = new Dictionary<int, AttendanceRewardItemData>();
}
public static DataManger GetInstance()
{
if (DataManger.instance == null)
{
DataManger.instance = new DataManger();
}
return DataManger.instance;
}
public void LoadDatas()
{
string rewardJson = File.ReadAllText(rewardPath);
AttendanceRewardData[] arrRewardDatas = JsonConvert.DeserializeObject<AttendanceRewardData[]>(rewardJson);
this.dicAttendanceRewardDatas = arrRewardDatas.ToDictionary(x => x.id, x => x);
string rewardItemJson = File.ReadAllText(rewardItemPath);
AttendanceRewardItemData[] arrRewardItemDatas = JsonConvert.DeserializeObject<AttendanceRewardItemData[]>(rewardItemJson);
this.dicAttendanceRewardItemDatas = arrRewardItemDatas.ToDictionary(x => x.id, x => x);
if (File.Exists(infoPath))
{
string infoJson = File.ReadAllText(infoPath);
userInfo = JsonConvert.DeserializeObject<UserInfo>(infoJson);
}
}
public AttendanceRewardData GetAttendanceRewardData(int id)
{
return this.dicAttendanceRewardDatas[id];
}
public AttendanceRewardItemData GetAttendanceRewardItemData(int id)
{
return this.dicAttendanceRewardItemDatas[id];
}
public UserInfo GetInventoryData()
{
return this.userInfo;
}
}
|
cs |
AttendanceRewardData
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class AttendanceRewardData
{
public int id;
public int item_id;
public int amount;
public int bonus_item_id;
public int bonus_item_amount;
public AttendanceRewardData()
{
}
}
|
cs |
AttendanceRewardItemData
1
2
3
4
5
6
7
8
9
10
11
|
class AttendanceRewardItemData
{
public int id;
public string name;
public string icon_name;
public AttendanceRewardItemData()
{
}
}
|
cs |
UserInfo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
class UserInfo
{
public List<Item> item;
public DateTime connectDate;
public DateTime lastConnectDte;
public int attendanceCount = 0;
public int continuationCount = 1;
public UserInfo()
{
item = new List<Item>();
}
public void HaveItem(Item item)
{
this.item.Add(item);
Console.WriteLine("---------------------------------------------");
}
public void PrintItemListCount()
{
}
}
|
cs |
Item
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class Item
{
public int id;
public string name;
public int amount;
public string icon;
public Item(int id, string name, int amount, string icon)
{
this.id = id;
this.name = name;
this.amount = amount;
this.icon = icon;
}
|
cs |
1일차 실행 결과
2일차 실행 결과
3일차 실행 결과
4일차 실행 결과
5일차 실행 결과
'c# > 수업내용' 카테고리의 다른 글
2020.05.13 ObjectPool을 왜 사용한 것인가? (0) | 2020.05.13 |
---|---|
2020.05.01 이차원 배열 움직이기 (0) | 2020.05.01 |
2020.04.24 수업내용 업적과 % 출력 (0) | 2020.04.27 |
2020.04.22 json파일 역직렬화, 직렬화 Achievement (0) | 2020.04.22 |
2020.04.13 if문 사용 Starcraft (0) | 2020.04.13 |