C#/수업 내용
클래스 매개변수를 활용한 메딕 구현
HSH12345
2023. 1. 5. 11:50
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
class App
{
//생성자
public App()
{
Marine marine0 = new Marine("홍길동", 60, 34);
Marine marine1 = new Marine("임꺽정", 60, 5);
marine0.Att(marine1);
Console.WriteLine("");
Medic medic0 = new Medic(5.67f, 50);
medic0.Heal(marine1);
medic0.Heal(marine1);
medic0.Heal(marine1);
medic0.Heal(marine1);
medic0.Heal(marine1);
medic0.Heal(marine1);
medic0.Heal(marine1);
medic0.Heal(marine1);
medic0.Heal(marine1);
Console.WriteLine("");
marine0.Att(marine1);
Console.WriteLine("");
medic0.Heal(marine1);
medic0.Heal(marine1);
medic0.Heal(marine1);
medic0.Heal(marine1);
medic0.energy = 100;
Console.WriteLine("에너지 회복");
Console.WriteLine("");
marine0.Att(marine1);
marine0.Att(marine1);
Console.WriteLine("");
medic0.Heal(marine1);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
class Marine
{
public int maxHp;
public string name;
public int hp;
public int dmg;
//생성자
public Marine(string name, int maxHp, int dmg)
{
this.name = name;
this.maxHp = maxHp;
this.hp = this.maxHp;
this.dmg = dmg;
Console.WriteLine("{0}을 생성하였습니다. ({1}/{2}) / 공격력 : {3}", name, this.hp, this.maxHp, this.dmg);
}
public void Move(Marine name)
{
Console.WriteLine("{0}이 이동하였습니다.", this.name);
}
public void Att(Marine target)
{
Console.WriteLine("{0}이 {1}을 공격했습니다.", this.name, target.name);
target.Hit(this);
}
public void Hit(Marine attacker)
{
this.hp = this.hp - attacker.dmg;
if(this.hp <= 0)
{
this.hp = 0;
Console.WriteLine("{0}이 {1}에게 피해(-{2})를 받았습니다. ({3}/{4})", this.name, attacker.name, attacker.dmg, this.hp, this.maxHp);
}
else
{
Console.WriteLine("{0}이 {1}에게 피해(-{2})를 받았습니다. ({3}/{4})", this.name, attacker.name, attacker.dmg, this.hp, this.maxHp);
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
class Medic
{
private string name = "메딕";
private int maxEnergy = 200;
private int demandenergy = 5;
public int energy;
private float healAmount;
public Medic(float healAmount, int energy)
{
this.healAmount = healAmount;
this.energy = energy;
}
public void Heal(Marine target)
{
if(target.hp > 0)
{
if (this.energy > 5)
{
if(target.hp < target.maxHp)
{
target.hp = target.hp + (int)this.healAmount;
Console.WriteLine("{0}의 체력을 {1}회복 시켰습니다. ({2}/{3})", target.name, this.healAmount, target.hp, target.maxHp);
this.energy = this.energy - demandenergy;
Console.WriteLine("{0}의 남은 에너지 : {1}/{2}", this.name, this.energy, this.maxEnergy);
}
else
{
target.hp = target.maxHp;
Console.WriteLine("{0}의 체력이 가득 차서 더 이상 회복할 수 없습니다. ({1}/{2})", target.name, target.hp, target.maxHp);
}
}
else
{
Console.WriteLine("에너지가 부족합니다");
}
}
else
{
Console.WriteLine("{0}이 죽어서 회복할 수 없습니다.", target.name);
}
}
}
}