Exercise_A.cpp
 1  #include <iostream>
 2  using namespace std;
 3  #include "Knight.h"
 4  #include "Archer.h"
 5  #include "Mage.h"
 6  #include "Pet.h"
 7  #include "Arrow.h"
 8  
 9  // [Bug Report #10]
10  // 궁수라며면 자고로 화살을 쏴야겠죠.
11  // Arrow는 자신을 목표 대상물을 target으로 관리하고
12  // Arrow를 만들 때 설정한 데미지 만큼 target의 체력을 깎습니다.
13  // 테스트를 위해 화살 10개를 생성해서 기사를 피격했는데...
14  // C++이 늘 그렇지만 되는 일이 없고 또 크래시가 납니다.
15  // 뭐가 문제일까요?
16  
17  int main()
18  {
19  	srand(static_cast<unsigned int>(time(nullptr)));
20  
21  	Archer* archer = new Archer(new Pet());
22  	archer->_hp = 100;
23  	archer->_maxHp = 100;
24  	archer->_attack = 20;
25  
26  	Knight* knight = new Knight();	
27  	knight->_hp = 150;
28  	knight->_maxHp = 150;
29  	knight->_attack = 10;
30  	
31  	Arrow* arrows[10] = {};
32  	for (int i = 0; i < 10; i++)
33  	{
34  		// 기사를 타겟으로, 궁수의 공격력을 지닌 상태
35  		Arrow* arrow = new Arrow(knight, archer->_attack);
36  		arrows[i] = arrow;
37  	}
38  
39  	for (int i = 0; i < 10; i++)
40  	{
41  		arrows[i]->AttackTarget();
42  
43  		// 기사가 죽었으면 소멸시켜준다
44  //		if (knight != nullptr)
45  //		{
46  //			if (knight->IsDead())
47  //			{
48  //				delete knight;
49  //				knight = nullptr;
50  //			}
51  //		}	
52  
53  		delete arrows[i];
54  		arrows[i] = nullptr;
55  	}
56  }