C#/수업 내용
클래스를 활용한 시즈탱크 구현
HSH12345
2023. 1. 5. 13:03
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
class App
{
//생성자
public App()
{
SiegeTank siegeTank0 = new SiegeTank("시즈탱크0", 150, 30, 1);
SiegeTank siegeTank1 = new SiegeTank("시즈탱크1", 150, 30, 1);
siegeTank0.Move();
siegeTank0.Att(siegeTank1);
Console.WriteLine();
siegeTank0.ChangeMode();
siegeTank0.Move();
siegeTank0.Att(siegeTank1);
Console.WriteLine();
siegeTank0.ChangeMode();
siegeTank0.Att(siegeTank1);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study04
{
class SiegeTank
{
public enum ModeType
{
Tank,
Siege
}
public ModeType modeType;
public string name;
public int maxHp;
public int hp;
public int dmg;
public int def;
//생성자
public SiegeTank(string name, int hp, int dmg, int def)
{
this.modeType = ModeType.Tank;
this.name = name;
this.maxHp = hp;
this.hp = this.maxHp;
this.dmg = dmg;
this.def = def;
}
public void Move()
{
if (this.modeType == ModeType.Tank)
{
Console.WriteLine("{0}가 이동하였습니다.", this.name);
}
else
{
Console.WriteLine("시즈 모드에서는 이동할 수 없습니다.");
}
}
public void ChangeMode()
{
if(this.modeType == ModeType.Tank)
{
this.modeType = ModeType.Siege;
Console.WriteLine("시즈모드가 되었습니다.");
this.dmg = 70;
}
else
{
this.modeType = ModeType.Tank;
Console.WriteLine("일반모드가 되었습니다.");
this.dmg = 30;
}
}
public void Att(SiegeTank target)
{
if (this.modeType == ModeType.Tank)
{
Console.WriteLine("기본 모드로 {0}을 공격({1})하였습니다.", target.name, this.dmg - (this.def * 5));
}
else
{
Console.WriteLine("시즈 모드로 {0}을 공격({1})하였습니다.", target.name, this.dmg - (this.def * 5));
}
target.Hit(this);
}
void Hit(SiegeTank attacker)
{
this.hp = this.hp - attacker.dmg;
Console.WriteLine("{0}이 {1}에게 피해(-{2})를 입었습니다. ({3}/{4})", this.name, attacker.name, attacker.dmg - (this.def * 5), this.hp, this.maxHp);
}
}
}