작은 디자인 모드 (14) 명령 모드
4722 단어 디자인 모드스 몰 디자인 모드
전통 적 인 RPG 게임 에서 유 저 는 조종 가능 한 우리 측 캐릭터 에 대해 각종 명령 조작 을 한 후에 명령 서열 을 생 성 합 니 다. 그 다음 에 조건 과 랜 덤 값 에 따라 조종 할 수 없 는 우리 측 과 적 캐릭터 에 대해 각종 명령 을 생 성하 여 명령 서열 에 추가 합 니 다. 전투 과정 은 바로 이 명령 서열 에 대한 집행 입 니 다.이곳 은 흔히 볼 수 있 는 명령 모드 이다.
본문 은 이것 을 예 로 들 자.
우선 Battler 의 종 류 를 정의 합 니 다:
public class Battler
{
public Battler(string name, int hp, int attack)
{
Name = name;
HP = hp;
Attack = attack;
}
public string Name{get;set;}
public int HP {get;set;}
public int Attack{get;set;}
public bool IsGuarding{get;set;}
public void AttackToTarget(Battler target)
{
int dmg = this.Attack;
if (target.IsGuarding) {
dmg /= 2;
}
target.HP -= dmg;
}
}
이름, 혈액, 공 격 력, 방어 중 4 개 속성 과 목표 공격 방법 이 있 습 니까?데 미 지 는 자신의 공 격 력 입 니 다. 목표 방어 중 데 미 지 를 반 으로 줄 이 고 마지막 으로 피 해량 을 감소 합 니 다.
그리고 우 리 는 Command 의 추상 적 인 종 류 를 정의 합 니 다.
public abstract class Command
{
public abstract void Execute();
public virtual bool CanAddCommand()
{
return true;
}
}
추상 적 인 방법 인 Execute 와 가상 방법 인 CanAddCommand 를 정의 합 니 다.
이어서 우 리 는 두 개의 하위 클래스 를 정의 한다.
public class AttackCommand : Command
{
private Battler _attacker;
private Battler _target;
public AttackCommand(Battler attacker, Battler target)
{
_attacker = attacker;
_target = target;
}
public override bool CanAddCommand()
{
if (_attacker == null || _target == null) {
return false;
}
return base.CanAddCommand ();
}
public override void Execute()
{
if (_attacker != null && _target != null) {
_attacker.AttackToTarget (_target);
Console.WriteLine (_attacker.Name + " attack " + _target.Name);
}
}
}
공격 명령 의 구조 함 수 는 공격 자 와 목 표를 전달 하고 실행 방법 에서 전자의 AttackToTarget 방법 으로 후 자 를 공격한다.
public class GuardCommand : Command
{
private Battler _battler;
public GuardCommand(Battler battler)
{
_battler = battler;
}
public override bool CanAddCommand()
{
if (_battler == null) {
return false;
}
return base.CanAddCommand ();
}
public override void Execute()
{
if (_battler != null) {
_battler.IsGuarding = true;
Console.WriteLine (_battler.Name + " is guarding ");
}
}
}
방어 명령 의 구조 함수 가 전투 자 에 게 전달 되 고 실행 방법 에 이 대상 의 IsGuarding 을 true 로 설정 합 니 다.
이어서 명령 목록 을 저장 하기 위해 매크로 명령 이 필요 할 수도 있 습 니 다. 이것 은 간단 한 조합 모드 입 니 다. (소문 디자인 모드 참조 (9) 조합 모드 참조)
public class MacroCommand : Command
{
List _commandList = new List ();
public void Add(Command cmd)
{
if (cmd.CanAddCommand ()) {
_commandList.Add (cmd);
}
}
public void Remove(Command cmd)
{
_commandList.Remove (cmd);
}
public override void Execute()
{
for (int i = 0; i < _commandList.Count; i++) {
_commandList [i].Execute ();
}
}
}
(물론 굳이 조합 모드 를 사용 해 야 하 는 것 은 아니다)
사용:
MacroCommand mc = new MacroCommand ();
Battler wolv = new Battler ("wolv", 100, 10);
Battler prox = new Battler ("prox", 50, 20);
Battler shad = new Battler ("shad", 80, 10);
Battler fman = new Battler ("fman", 60, 20);
Battler magn = new Battler ("magn", 70, 10);
Battler myst = new Battler ("myst", 40, 5);
mc.Add (new AttackCommand (wolv, fman));
mc.Add (new AttackCommand (prox, magn));
mc.Add (new GuardCommand (shad));
List actors = new List ();
actors.Add (wolv);
actors.Add (prox);
actors.Add (shad);
List enemies = new List ();
enemies.Add (fman);
enemies.Add (magn);
enemies.Add (myst);
foreach (var enemy in enemies) {
if (enemy.HP < 50) {
mc.Add (new GuardCommand (enemy));
} else {
var r = new System.Random ();
Battler randTarget = actors [r.Next (0, actors.Count)];
mc.Add (new AttackCommand (enemy, randTarget));
}
}
mc.Execute ();
유 저 는 스스로 제어 가능 한 캐릭터 (wolv, prox, shad) 에 명령 을 추가 하고 게임 시스템 은 제어 할 수 없 는 캐릭터 (fman, magn, my st) 의 명령 을 생 성 합 니 다.마지막 으로 실행 하 는 것 은 RPG 게임 의 간단 한 절차 이다.
명령 모드 의 장점:
1. 작 동 하 는 대상 과 어떻게 결합 을 해제 합 니까?
2. 명령 대상 을 조작 하거나 확장 하거나 삭제 할 수 있 습 니 다.
3. 조합 모드 를 사용 하여 여러 명령 을 하나의 복합 명령 으로 조립 할 수 있 습 니 다.
4. 새로운 명령 을 추가 하면 다른 대상 을 바 꾸 지 않 아 도 됩 니 다.
5. 명령 은 자신 이 추가 되 거나 실 행 될 수 있 는 지 스스로 판단 할 수 있다.
6. 명령 로 그 를 생 성 할 수 있 습 니 다.
단점: 명령 류 가 많이 생 긴 다.(기획 이나 PM 은 항상 기괴 한 수 요 를 디자인 합 니 다. 기 존의 유형 을 통 해 하나의 명령 을 조합 할 수 있 습 니 다. 물론 가장 좋 습 니 다. 안 되면 한 가지 만 더 특별 하 게 실현 할 수 있 습 니 다)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.