Yang.공부방

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _0410Test
{
    public class CharacterInfo
    {
        public int id;
        public int hp;
 
        public CharacterInfo(int id , int hp)
        {
            this.id = id;
            this.hp = hp;
        }
    }
}
 
cs

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _0410Test
{
    public class Character
    {
        private CharacterInfo characterinfo;
        private int v;
 
        public CharacterInfo info { get; set; }
 
        public Character()
        {
        }
        
        public void TakeDamage(int damage)
        {
            this.info.hp -= damage;
            var data = new CharacterData();
 
            if (this.info.hp <= 0)
            {
                this.info.hp = 0;
                Console.WriteLine("{0}이(가) 사망하였습니다. ({1}/{2})", data.name, info.hp, data.hp);
            }
            else
            {
                Console.WriteLine("{0}이(가) 피해 (-{1})받았습니다 ({2}/{3})", data.name, damage, info.hp, data.hp);
            }
        }
 
        public void AttackDamage(Character Target)
        {
            
        }
 
    }
}
 
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _0410Test
{
    public class GameInfo
    {
        public List<CharacterInfo> characterInfo;
 
        public GameInfo()
        {
            this.characterInfo = new List<CharacterInfo>();
        }
    }
}
 
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _0410Test
{
    public class UserInfo
    {
        public GameInfo gameInfo;
        
        public UserInfo()
        {
            this.gameInfo = new GameInfo();
        }
    }
}
 
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _0410Test
{
    public class CharacterData
    {
        public int id;
        public int type;
        public string name;
        public int hp;
        public int damage;
        public float range;
 
    }
}
 
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _0410Test
{
    public class Monster : Character
    {
        public Monster() : base()
        {
        }
 
    }
}
 
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _0410Test
{
    public class Champion : Character
    {
        public Champion() :base()
        {
        }
    }
}
 
cs
\
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _0410Test
{
    public class Anivia : Champion
    {
        public Anivia() : base()
        {
        }
    }
}
 
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _0410Test
{
    public class Baron : Monster
    {
        public Baron() : base()
        {
        }
 
    }
}
 
cs
\
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;
 
namespace _0410Test
{
    public class GameLauncher
    {
        private List<Character> characters = new List<Character>();
        private UserInfo userInfo;
 
        private const string USER_INFO_FILE_PATH = "./info/user_info.json";
        Dictionary<int, CharacterData> dicCharacterData = new Dictionary<int, CharacterData>();
        Dictionary<int, CharacterInfo> dicCharacterInfo = new Dictionary<int, CharacterInfo>();
 
        public GameLauncher()
        {
        }
 
        public void gameStart()
        {
 
            //this.LoadData();
            //Console.WriteLine("게임준비완료");
 
            if (Directory.Exists("./info"))
            {
                Console.WriteLine("기존유저입니다");
                //CharacterInfo characterinfo = null;
 
                var json = File.ReadAllText(USER_INFO_FILE_PATH);
                var arrcharacterinfo = JsonConvert.DeserializeObject<CharacterInfo[]>(json);
                //this.characterinfo = characterinfo;
 
                foreach (var data in arrcharacterinfo)
                {
                    this.dicCharacterInfo.Add(data.id, data);
                }
 
                
 
                //this.CreateUserInfo(arrcharacterinfo);
            }
            else
            {
                Console.WriteLine("신규유저입니다");
 
                Directory.CreateDirectory("./info");//새로운 폴더를 생성합니다.
                
                this.CreateUserInfo();
            }
 
 
 
            this.Save();
        }
 
        public void ReadFileAndToDictionary<T>(string path, Dictionary<int,T>dic) where T : Character
        {
            var json = File.ReadAllText(path);
            var arrDatas = JsonConvert.DeserializeObject<T[]>(json);
 
            foreach(var data in arrDatas)
            {
                dic.Add(data.info.id, data);
            }
 
        }
 
        public T CreateCharacter<T>(int id) where T : Character,new()
        {
            return null;
        }
 
        public void CreateUserInfo(UserInfo info = null)//선택적매개변수 (값을 넣지 않으면 info 의 값은 null로 들어간다)
        {
            if (info == null//info의 값이 null 즉,아무 값 도 들어오지 않을 시
            {
                this.userInfo = new UserInfo(); //새로운 UserInfo 인스턴스를 생성한다.
            }
            else
            {
                this.userInfo = info; // 어떠한 값이 들어올 시 
            }
 
        }
 
        public void LoadData()
        {
            var json = File.ReadAllText("./data/user_data.json");
 
            var arrCharacterDatas = JsonConvert.DeserializeObject<CharacterData[]>(json);
 
            foreach (var data in arrCharacterDatas)
            {
                this.dicCharacterData.Add(data.id, data);
            }
        }
 
        public void Save()
        {
            var characterInfo = new List<CharacterInfo>();
            foreach (var character in this.characters)
            {
                characterInfo.Add(character.info);
            }
 
            this.userInfo.gameInfo.characterInfo = characterInfo;
            var json = JsonConvert.SerializeObject(this.userInfo);
 
            File.WriteAllText(USER_INFO_FILE_PATH, json);
            Console.WriteLine("게임이 저장되었습니다");
        }
 
    }
}
 
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _0410Test
{
    public class App
    {
        private GameLauncher gamelauncher;
        public App()
        {
            gamelauncher = new GameLauncher();
        }
 
        public void Start()
        {
            Console.WriteLine("게임을 시작합니다");
            gamelauncher.gameStart();
        }
    }
}
 
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _0410Test
{
    class Program
    {
        static void Main(string[] args)
        {
            var app = new App();
            app.Start();
        }
    }
}
 
cs