static t_player *choose_target(void) { t_player *to_return; t_player *p; float min_dist; float player_dist; size_t i; i = 0; min_dist = 10000; while (i < get_shmem()->nb_user) { p = get_player(i); if (p->pid != getpid() && p->team != get_current_player()->team) { player_dist = dist_players(p, get_current_player()); if (player_dist < min_dist) { to_return = p; min_dist = player_dist; } } ++i; } return (to_return); }
static t_player *target_from_msg(void) { t_msg qbuf; int read_ret; t_player *target; read_ret = read_message(&qbuf, get_current_player()->team); if (read_ret < 0) return (NULL); target = get_player(qbuf.target); if (!target->is_active || target->team == get_current_player()->team) return (NULL); return (target); }
t_player *designate_target(void) { t_player *to_return; to_return = target_from_msg(); if (to_return == NULL) to_return = choose_target(); if (to_return != NULL) send_message(get_current_player()->team, get_player_id(to_return)); return (to_return); }
void rand_wall(void) { int imPlayer; int l,c,d; imPlayer = get_current_player(bglobal); if (remaining_bridges(bglobal, imPlayer)) { l=randomWall(); c=randomWall(); d=randomdir()%2; place_wall(bglobal,c+'a', l+'1',d+'1'); } }