Ejemplo n.º 1
0
int			manage_instructions(t_corewar *core)
{
  static unsigned int	i;
  static unsigned int	cycle_to_die_cur;

  if (i == 0)
    i = 1;
  if (cycle_to_die_cur == 0)
    cycle_to_die_cur = CYCLE_TO_DIE;
  if (i >= cycle_to_die_cur)
  {
    if ((check_live_process(core, cycle_to_die_cur)) == 1)
      return (1);
    i = 1;
  }
  if (core->nbr_live_cur >= NBR_LIVE)
  {
    cycle_to_die_cur -= CYCLE_DELTA;
    core->cycle_to_die_cur = cycle_to_die_cur;
    core->nbr_live_cur = 0;
  }
  if ((exec_instructions(core, core->champions)) == -1)
    return (-1);
  i += 1;
  return (0);
}
Ejemplo n.º 2
0
void	check_cycles(t_champ *champ, t_uchar *arena, t_cycle *cycle)
{
  if (champ->cycle == 0)
    check_instructions(champ, arena);
  else if (--champ->cycle == 1)
    {
      exec_instructions(champ, arena, cycle);
      champ->cycle = 0;
    }
}