FlyWeifht.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "FlyWeifht.h"
  2. #include <list>
  3. #include <spdlog.h>
  4. #include <vector>
  5. void testFlyWeight()
  6. {
  7. /* 创建炸弹工厂 */
  8. BombFactory bombFactory;
  9. /* 需要的炸弹列表 */
  10. std::vector<std::tuple<std::string, std::string, int, int, int>> bombList = {
  11. {"普通炸弹", "红色", 10, 20, 5},
  12. {"普通炸弹", "红色", 15, 25, 5},
  13. {"普通炸弹", "蓝色", 20, 30, 7},
  14. {"普通炸弹", "蓝色", 25, 35, 7},
  15. {"普通炸弹", "红色", 30, 40, 5},
  16. {"唯一炸弹", "金色", 50, 60, 10}
  17. };
  18. std::list<LaunchBomb*> launchedBombs;
  19. for(auto it : bombList)
  20. {
  21. std::string type = std::get<0>(it);
  22. std::string color = std::get<1>(it);
  23. int x = std::get<2>(it);
  24. int y = std::get<3>(it);
  25. int speed = std::get<4>(it);
  26. if (type == "唯一炸弹")
  27. {
  28. UniqueBomb* pUniqueBomb = new UniqueBomb(type, color);
  29. pUniqueBomb->move(x, y, speed);
  30. LaunchBomb* bomb = new LaunchBomb(pUniqueBomb);
  31. bomb->move(x, y);
  32. launchedBombs.push_back(bomb);
  33. SPDLOG_INFO("-----------------------------");
  34. }
  35. else
  36. {
  37. ShareBombBody* pShareBombBody = bombFactory.getShareBombBody(type, color);
  38. pShareBombBody->move(x, y, speed);
  39. LaunchBomb* bomb = new LaunchBomb(pShareBombBody);
  40. bomb->move(x, y);
  41. launchedBombs.push_back(bomb);
  42. SPDLOG_INFO("-----------------------------");
  43. }
  44. }
  45. }