首页 > 解决方案 > 有没有办法把它变成一个循环,让它更具包容性?

问题描述

   if (player.is_alive() == true) {
    player_roll = roll();
   }
   if (ai1.is_alive() == true) {
    ai1_roll = roll();
   }
   if (ai2.is_alive() == true) {
    ai2_roll = roll();
   }
   if (ai3.is_alive() == true) {
    ai3_roll = roll();
   }
   if (ai4.is_alive() == true) {
    ai4_roll = roll();
   }
   if (ai5.is_alive() == true) {
    ai5_roll = roll();
   }

这是检查玩家和ai(它们是对象)是否还活着并允许它们滚动(这是一个随机函数)

标签: c++

解决方案


您可以包装活动测试并滚动到一个函数中,例如:

void IfAliveRoll(Player& player, uint32_t& roll)
{
    if (player.is_alive())
        roll = roll();
}

然后,您可以简单地将其用于您想要的任意数量的实体:

IfAliveRoll(player, player_roll);
IfAliveRoll(ai1, ai1_roll);
IfAliveRoll(ai2, ai2_roll);
IfAliveRoll(ai3, ai3_roll);
IfAliveRoll(ai4, ai4_roll);
IfAliveRoll(ai5, ai5_roll);

函数名称非常清楚正在发生的事情。


推荐阅读