C#

몬스터 아이템 드랍

송현호 2023. 7. 26. 14:37
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.Eventing.Reader;

namespace Starcraft
{
    internal class App
    {
        //생성자
        public App()
        {
            Dictionary<int,ItemData> dicI = new Dictionary<int, ItemData> ();
            dicI.Add(100, new ItemData(100, "장검", 8));
            dicI.Add(101, new ItemData(101, "단검", 5));
            dicI.Add(102, new ItemData(102, "활", 6));
            //몬스터 데이터를 저장하는 컬렉션 Dic
            Dictionary<int, MonsterData> dicM = new Dictionary<int, MonsterData>();
            dicM.Add(1000, new MonsterData(1000, "고블린",100,40));
            dicM.Add(1001, new MonsterData(1001, "트롤",101,100));
            dicM.Add(1002, new MonsterData(1002, "오우거",102, 200));
            Player player = new Player(new PlayerData("홍길동", 10, 100));
            Monster goblin = new Monster(dicI,dicM[1000]);

            player.Attack(goblin);
            player.Attack(goblin);
            player.Attack(goblin);
            player.Attack(goblin);
            player.Attack(goblin);



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

namespace Starcraft
{
    internal class Item
    {
        public ItemData data;
        //생성자
        public Item(ItemData data)
        {
            this.data = data;
        }

        string GetName()
        {
            //반환값 
            return this.data.name;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Starcraft
{
    //아이템의 정보
    internal class ItemData
    {
        public int id;
        public string name;
        public int damage;
        //생성자
        public ItemData(int id, string name, int damage)
        {
            this.id = id;
            this.name = name;
            this.damage = damage;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Starcraft
{
    internal class Player
    {
        PlayerData data;
        int hp;
        int damage;
        //생성자
        public Player(PlayerData data)
        {
            this.data = data;
            this.hp = data.hp;
            this.damage = data.damage;
        }
        
        public void Attack(Monster monster)
        {
            Console.WriteLine("{0}를 공격했습니다",monster.data.name);
            monster.MonsterHitDamage(this.damage);
        }

        public void Equip()
        {

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

namespace Starcraft
{
    internal class PlayerData
    {
        string id;
        public int damage;
        public int hp;
        public PlayerData(string id, int damage, int hp)
        {
            this.id = id;
            this.damage = damage;
            this.hp = hp;
        }

        public void Attack(Monster monster)
        {

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

namespace Starcraft
{
    internal class Monster
    {
        public MonsterData data;
        public Dictionary<int, ItemData> DicItemData;
        public int hp;
        //생성자
        public Monster(Dictionary<int, ItemData> DicItemData,MonsterData data)
        {
            this.data = data;
            this.DicItemData = DicItemData;
            this.hp = data.hp;
        }

        public void MonsterHitDamage(int damage)
        {
            hp -= damage;
            if(this.hp < 0)
            {
                MonsterDie();
            }
        }

        public Item MonsterDie()
        {
            Console.WriteLine("{0}이 죽었습니다", this.data.name);
            Console.WriteLine("{0}을 드랍했습니다", this.DicItemData[this.data.item_id].name);
            return new Item(this.DicItemData[this.data.item_id]);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Starcraft
{
    internal class MonsterData
    {
        public int id;
        public string name;
        public int item_id;
        public int hp;
        //생성자
        public MonsterData(int id, string name, int Item_id, int hp)
        {
            this.id = id;
            this.name = name;
            this.item_id = Item_id;
            this.hp = hp;
        }
    }
}

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

싱글톤 패턴으로 대리자 호출  (0) 2023.07.27
인벤토리2  (0) 2023.07.26
2차원 배열  (0) 2023.07.25
2048  (0) 2023.07.25
인벤토리1  (0) 2023.07.24