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