-
2020-04-28C#/수업내용 2020. 4. 28. 18:17123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150using System;using System.Collections.Generic;using System.Linq;using System.Text;using Newtonsoft.Json;using System.IO;namespace Study_018{class APP{public GameInfo gameInfo;public DataManager datamanager;public APP(){datamanager = DataManager.GetInstance();datamanager.LoadDatas();gameInfo = new GameInfo();Console.WriteLine("==============상점==============");this.PrintProductShop(1000);Console.WriteLine();Console.WriteLine();this.PrintProductShop(1001);Console.WriteLine();Console.WriteLine();this.PrintProductShop(1002);this.BuyProduct(1000);this.PrintProductShop(1000);this.SaveUserInfo();}public void PrintProductShop(int id){var data = this.datamanager.GetProductDatasById(id);var count = 0;string strprice = string.Format("{0:n0}", price);switch (data.product_buy_type) // 구매타입 (제한없음 / 매일 구매 / 계정제한 ){case 0: // 제한 없음Console.WriteLine("이름 : {0}", name);Console.WriteLine("가격: 다이아 {0}개 / {1}:{2}", strprice, data.str_Mileage, data.Mileage_amount);if (data.limit_time_bool == true){this.gameInfo.RemainTime(id);}break;case 1: // 매일 구매break;case 2: // 계정 제한if (data.price_type == 0) // 다이아 구매{if (data.product_level_limit > 0) //다이아 구매 레벨 제한{Console.WriteLine("이름 : {0}", name);Console.WriteLine("가격: 다이아 {0}개 / {1}:{2}", strprice, data.str_Mileage, data.Mileage_amount);Console.WriteLine("레벨 {0} 이상, {1}/{2}", data.product_level_limit, count, data.product_amount_limit);if (data.limit_time_bool == true){this.gameInfo.RemainTime(id);}}else // 다이아 구매 레벨 제한 없을때{Console.WriteLine("이름 : {0}", name);Console.WriteLine("가격: 다이아 {0}개 / {1}:{2}", strprice, data.str_Mileage, data.Mileage_amount);Console.WriteLine("제한: {0}/{1}", count, data.product_amount_limit);if (data.limit_time_bool == true){this.gameInfo.RemainTime(id);}}}else // 골드구매{if (data.product_level_limit > 0) //골드구매 레벨제한{Console.WriteLine("이름 : {0}", name);Console.WriteLine("가격: 골드 {0}개", strprice);Console.WriteLine("레벨 {0} 이상, {1}/{2}", data.product_level_limit, count ,data.product_amount_limit);if (data.limit_time_bool == true){this.gameInfo.RemainTime(id);}}else{Console.WriteLine("이름 : {0}", name);Console.WriteLine("가격: 골드 {0}개 ", strprice);if (data.limit_time_bool == true){this.gameInfo.RemainTime(id);}}}break;}}// public bool CheckNewBie()private void SaveUserInfo(){var json = JsonConvert.SerializeObject(this.gameInfo);File.WriteAllText("./user_info.json", json);Console.WriteLine("user_info saved.");}public int BuyProduct(int id) // 이 형식으로는 INt가 증가하지 않음{var productdata = this.datamanager.GetProductDatasById(id);var count = this.datamanager.GetBuyInfo(id).count;if (count < productdata.product_amount_limit){count++;}else if (count >= productdata.product_amount_limit){Console.WriteLine("더 이상 구매 할 수 없습니다.");}return count;}}}http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter123456789101112131415161718192021222324252627282930313233343536373839404142434445464748using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Study_018{class GameInfo{public int level;public BuyInfo buyInfo;public List<BuyInfo> listbuyInfos;public GameInfo() //캐릭터의 레벨 / 패키지 남은 시간 계산 저장소{this.level = 55;this.listbuyInfos = new List<BuyInfo>();//각각 구매할때마다 어카운트 제한이 하나씩 늘어나야한다.// 데이터 매니저를 부른 후 , 그 제한 값과 비교 할 수 있어야한다.// 각각이란 제한이 있다.}public void Init(){}public void RemainTime(int id){var data = DataManager.GetInstance().GetProductDatasById(id);DateTime startime = DateTime.Now;DateTime EndDate = data.limit_time;TimeSpan timeSpan = EndDate- startime;int diffMinute = timeSpan.Minutes;int diffSecond = timeSpan.Seconds;Console.WriteLine("판매 종료까지 {0}시간 {1}분 남았습니다", diffHour, diffMinute);}}}http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter123456789101112131415161718192021222324252627using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Study_018{class ProductShop{public int id;public string name;public int product_amount;public int product_level_limit;public int product_amount_limit;public int product_buy_type;public string icon_name;public int price_type;public int price;public bool Mileage_bool;public string str_Mileage;public int Mileage_amount;public bool limit_time_bool;public DateTime limit_time;}}http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using Newtonsoft.Json;namespace Study_018{class DataManager{private static DataManager dataManager;private Dictionary<int, ProductShop> dicProductshop;private Dictionary<int, BuyInfo> dicBuyInfo;private DataManager(){dicProductshop = new Dictionary<int, ProductShop>();dicBuyInfo = new Dictionary<int, BuyInfo>();}public static DataManager GetInstance(){if(DataManager.dataManager == null ){DataManager.dataManager = new DataManager();}return DataManager.dataManager;}public void LoadDatas(){ProductShop[] arrproductShops = JsonConvert.DeserializeObject<ProductShop[]>(File.ReadAllText("./data/product_shop.json"));BuyInfo[] arrBuyInfos = JsonConvert.DeserializeObject<BuyInfo[]>(File.ReadAllText("./data/buy_info.json"));this.dicProductshop = arrproductShops.ToDictionary(x => x.id, x => x);this.dicBuyInfo = arrBuyInfos.ToDictionary(x => x.id, x => x);}public ProductShop GetProductDatasById(int id){return this.dicProductshop[id];}public BuyInfo GetBuyInfo(int id){return this.dicBuyInfo[id];}}}http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter1234567891011121314151617181920using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Study_018{class BuyInfo{public int id;public int count;public BuyInfo(){}}}http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
'C# > 수업내용' 카테고리의 다른 글
2020-04-29 [시간(출석보상) 계산] (0) 2020.04.29 2020-04-29 [브롤스타 예제] (0) 2020.04.29 2020-04-21 [json] (0) 2020.04.21 2020-04-20 [리스트] (0) 2020.04.20 2020-04-20 [1차원 배열 활용] (0) 2020.04.20