C#

게임시작2

송현호 2023. 7. 28. 18:12
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;

namespace LoadAndSaveGame
{
    public class App
    {
        GameInfo gameInfo;
        //생성자
        public App()
        {
            InfoManager.instance.LoadData();
            Hero hero = new Hero();
            Item item1 = new Item(new ItemInfo(100,12));
            Item item2 = new Item(new ItemInfo(101, 15));
            hero.GetItem(item1);
            hero.GetItem(item2);
            hero.OpenBag();
            hero.Equip(item1);


        }

    }
}
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace LoadAndSaveGame
{
    internal class InfoManager
    {
        public static readonly InfoManager instance = new InfoManager();
        GameInfo gameInfo;
        private InfoManager() { }

        public void LoadData()
        {
            if (File.Exists("./game_info.json"))
            {
                Console.WriteLine("기존 유저입니다.");
                //파일읽기
                string json = File.ReadAllText("./game_info.json");
                //역직렬화
                GameInfo gameinfo = JsonConvert.DeserializeObject<GameInfo>(json);
            }
            else
            {
                Console.WriteLine("신규 유저입니다.");
                //새로운 gameinfo 객체 생성하여 기본값지정
                GameInfo gameInfo = new GameInfo();
                gameInfo.Init();
                //직렬화
                string json = JsonConvert.SerializeObject(gameInfo);
                File.WriteAllText("./game_info.json", json);
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LoadAndSaveGame
{
    internal class GameInfo
    {
        public List<ItemInfo> itemInfos;
        public GameInfo() { }

        public void Init()
        {
            this.itemInfos = new List<ItemInfo>();
        }
    }

    
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LoadAndSaveGame
{
    public class ItemInfo
    {
        public int id;
        public int damage;
        public ItemInfo(int id, int damage)
        {
            this.id = id;
            this.damage = damage;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LoadAndSaveGame
{
    public class Hero
    {
        int damage;
        string name;
        List<Item> bag = new List<Item>();
        Item leftHand = null;
        public Hero()
        {
        
        }

        public void GetItem(Item item)
        {
            this.bag.Add(item);
        }

        public void Equip(Item item)
        {
            for(int i = 0 ; i < this.bag.Count; i++)
            {
                if (bag[i].GetId() == item.GetId())
                {
                    this.bag.Remove(bag[i]);
                    this.leftHand = item;
                    Console.WriteLine("{0}장착",this.leftHand);
                };
            }
        }

        public void OpenBag()
        {
            for (int i=0; i<bag.Count; i++)
            {
                Console.WriteLine(bag[i]);
            }

        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LoadAndSaveGame
{
    public class Item
    {
        public ItemInfo info;
        public Item(ItemInfo info)
        {
            this.info = info;
        }

        public int GetId()
        {
            return this.info.id;
        }
    }
}

'C#' 카테고리의 다른 글

미션 만들기  (2) 2023.07.28
게임시작  (0) 2023.07.28
대리자 연습 3,4  (0) 2023.07.27
대리자 연습 1,2  (0) 2023.07.27
싱글톤 패턴으로 대리자 호출  (0) 2023.07.27