2019-10-18 20일차 롤 챔피언 Attack메시지 출력 (json, Dictionary, 클래스상속사용)
Console Programming/C# Console 2019. 10. 18. 10:24
champion_Data.json
[
{
"character_id": 1,
"name": "리신",
"damage": 70
},
{
"character_id": 2,
"name": "레넥톤",
"damage": 69
},
{
"character_id": 3,
"name": "오른",
"damage": 69
},
{
"character_id": 4,
"name": "초가스",
"damage": 69
},
{
"character_id": 5,
"name": "칼리스타",
"damage": 69
},
{
"character_id": 6,
"name": "트린다미어",
"damage": 69
},
{
"character_id": 7,
"name": "그레이브즈",
"damage": 68
},
{
"character_id": 8,
"name": "렝가",
"damage": 68
},
{
"character_id": 9,
"name": "사이온",
"damage": 68
}
]
Program.cs
namespace Console1018
{
class Program
{
static void Main(string[] args)
{
new App();
}
}
}
App.cs
using System;
using System.IO;
using Newtonsoft.Json;
using System.Collections.Generic;
namespace Console1018
{
public class App
{
public App()
{
string path = @"C:\Workspace\Console1018\Console1018\bin\Debug\champion_Data.json";
string json = File.ReadAllText(path);
ChampionData[] arrChampionData = JsonConvert.DeserializeObject<ChampionData[]>(json);
Dictionary<int, ChampionData> dicChampionData = new Dictionary<int, ChampionData>();
foreach(var data in arrChampionData)
{
dicChampionData.Add(data.character_id, data);
}
LeeSin leeSin = new LeeSin();
leeSin.ChampionData = dicChampionData[1];
ChoGath choGath = new ChoGath();
choGath.ChampionData = dicChampionData[4];
leeSin.Attack(choGath);
choGath.Attack(leeSin);
}
}
}
Champion.cs
using System;
namespace Console1018
{
public class Champion
{
public ChampionData ChampionData { get; set; }
public Champion()
{
}
public virtual void Attack(Champion target)
{
target.Hit(this.ChampionData.damage);
}
public void Hit(int damage)
{
Console.WriteLine($"{this.ChampionData.name}이 피해({-damage})를 입었습니다.");
}
}
}
ChoGath.cs
using System;
namespace Console1018
{
public class ChoGath : Champion
{
public ChoGath()
{
}
public override void Attack(Champion target)
{
Console.WriteLine($"{this.ChampionData.name}이(가) 가시를 날려 {target.ChampionData.name}을 공격했습니다.");
base.Attack(target);
}
}
}
LeeSin.cs
using System;
namespace Console1018
{
public class LeeSin : Champion
{
public LeeSin()
{
}
public override void Attack(Champion target)
{
Console.WriteLine($"{this.ChampionData.name}이(가) 발차기로 {target.ChampionData.name}을 공격했습니다.");
base.Attack(target);
}
}
}
ChampionData.cs
namespace Console1018
{
public class ChampionData
{
//data
//character_id name damage
public int character_id { get; set; }
public string name { get; set; }
public int damage { get; set; }
public ChampionData()
{
}
}
}
실행결과
'Console Programming > C# Console' 카테고리의 다른 글
2019-10-21 21일차 2차원 배열 (좌표<------> 배열의인덱스) (0) | 2019.10.23 |
---|---|
백준 2167 (0) | 2019.10.22 |
2019-10-17 19일차 클래스의 상속 뽑기상자, json사용, get;set사용 , rand.Next사용 (0) | 2019.10.18 |
2019-10-17 19일차 클래스의 상속 (3) 부모의 생성자 상속 (0) | 2019.10.17 |
2019-10-17 19일차 클래스의 상속 (2) + get, set 사용 (0) | 2019.10.17 |