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); }
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; } }