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());
}
}
}
'KDT > C# 프로그래밍' 카테고리의 다른 글
23/07/26 과제 및 가짜 인벤토리 복습(집에서) (0) | 2023.07.26 |
---|---|
23/07/26 가짜 인벤토리 만들기2 (0) | 2023.07.26 |
23/07/25 배열 복습 및 연습(집에서) (0) | 2023.07.25 |
23/07/25 다차원 배열 기초연습 (0) | 2023.07.25 |
23/07/25 다차원 배열2 (0) | 2023.07.25 |