본문 바로가기
KDT/C# 프로그래밍

23/07/26 가짜 인벤토리 만들기1

by 잰쟁 2023. 7. 26.
728x90

무기 속성

 

몬스터 속성

아이템 클래스

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

namespace starcraft
{
    internal class Item
    {
        public ItemData data;


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

        //아이템 데이터의 이름을 반환하는 메서드
        public 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 Monster
    {
        public MonsterData data;
        Dictionary<int, ItemData> dicItemDatas;
        public int hp;

        //생성자
        public Monster(Dictionary<int, ItemData> dicItemDatas, MonsterData data)
        {
            this.data = data;
            this.dicItemDatas = dicItemDatas;
            this.hp = this.data.hp;
        }


        //몬스터 죽는 메서드
        public Item Die()
        {
            Console.WriteLine("몬스터({0})가 죽었습니다.", this.data.name);

            ItemData itemData = this.dicItemDatas[this.data.item_id];
            return new Item(itemData);
        }

        //몬스터 피해입는 메서드
        public void HitDamage(int damage)
        {
            this.hp -= damage;
        }

        //몬스터 HP 보이기
        public int GetHp()
        {
            return this.hp;
        }
    }
}

몬스터데이터 클래스

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;
        }
    }
}

App

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



namespace starcraft
{
    public class App
    {

        //생성자
        public App()
        {
            //컬렉션의 초기화
            Dictionary<int, ItemData> dic = new Dictionary<int, ItemData>();
            dic.Add(100, new ItemData(100, "장검", 8));
            dic.Add(101, new ItemData(101, "단검", 5));
            dic.Add(102, new ItemData(102, "활", 6));

            //사전에서 키로 값을 가져오기
            //고블린을 잡았다
            //장검이 나왔다 !
            ItemData data = dic[100];
            Item item = new Item(data);
            Console.WriteLine(item.data.id); //100
            Console.WriteLine(item.data.name);  //장검
            Console.WriteLine(item.data.damage);  //8

            //몬스터 데이터를 저장하는 컬렉션 Dic 초기화
            Dictionary<int, MonsterData> monDic = new Dictionary<int, MonsterData>();
            monDic.Add(1000, new MonsterData(1000, "고블린", 100,50));
            monDic.Add(1001, new MonsterData(1001, "트롤", 101,45));
            monDic.Add(1002, new MonsterData(1002, "오우거", 102,65));

            //고블린 데이터 가져오기
            MonsterData data1 = monDic[1000];
            Monster monster = new Monster(dic, data1);
            Console.WriteLine(monster.data.id);
            Console.WriteLine(monster.data.name);
            Console.WriteLine(monster.data.item_id);

            //몬스터가 죽으면 아이템이 나옴
            Item dropItem = monster.Die();
            Console.WriteLine("{0}을 획득하였습니다.",dropItem.GetName()); //장검을 획득하였습니다.

            //공격받고 난 후 몬스터 hp
            monster.HitDamage(5);
            Console.WriteLine("hp: {0}", monster.GetHp());


        }

    }
}