게임 알고리즘
2일차 과제2 (Luker)
park-gom
2024. 8. 13. 18:10
namespace hw2
{
internal class Program
{
static void Main(string[] args)
{
new App();
}
}
}
using System;
namespace hw2
{
internal class App
{
public App()
{
Lurker lurker = new Lurker(10, 20);
lurker.onBurrow = this.BurrowCompleteHandler;
lurker.Burrow(lurker);
lurker.Attack("Marine");
lurker.Move(3, 4, this.MoveComplete);
lurker.UnBurrow(lurker);
lurker.Move(2, 1, this.MoveComplete);
lurker.Attack("SCV");
}
void BurrowCompleteHandler(Lurker lurker)
{
if (lurker.burrow)
{
Console.WriteLine("버로우 했습니다.");
}
else
{
Console.WriteLine("언버로우 했습니다.");
}
}
void MoveComplete()
{
Console.WriteLine("이동을 완료했습니다");
}
}
}
using System;
namespace hw2
{
internal class Lurker
{
public delegate void Callback(Lurker lurker);
public delegate void Callback2();
public Callback onBurrow;
public bool burrow;
private int damage;
private int hp;
public Lurker(int damage, int maxHp)
{
this.damage = damage;
this.hp = maxHp;
this.burrow = false;
Console.WriteLine("럴커가 생성되었습니다.");
Console.WriteLine($"공격력 : {this.damage}");
Console.WriteLine($"체력 : {this.hp}/{this.hp}");
Console.WriteLine();
}
public void Burrow(Lurker lurker)
{
this.burrow = true;
onBurrow(lurker);
}
public void UnBurrow(Lurker lurker)
{
this.burrow = false;
onBurrow(lurker);
}
public void Attack(string target)
{
if (this.burrow)
{
Console.WriteLine($"{target}을 공격 했습니다.");
}
else
{
Console.WriteLine($"대상({target})을 공격 할 수 없습니다");
}
}
public void Move(int x, int y, Callback2 callback)
{
if (this.burrow)
{
Console.WriteLine("버로우 상태에서는 이동할 수 없습니다.");
}
else
{
Console.WriteLine($"{x},{y}로 이동을 시작합니다.");
Console.WriteLine("이동중...");
Console.WriteLine("이동중...");
Console.WriteLine("이동중...");
callback();
}
}
}
}