int main(int argc, char *argv[]) { int action = -1; struct game_info Info; struct game_state Game; Info.map = 0; Game.my_ants = 0; Game.enemy_ants = 0; Game.food = 0; Game.dead_ants = 0; Game.hill = 0; while (42) { int initial_buffer = 100000; char *data = malloc(initial_buffer); memset(data, 0, initial_buffer); *data = '\n'; char *ins_data = data + 1; int i = 0; while (1 > 0) { ++i; if (i >= initial_buffer) { initial_buffer *= 2; data = realloc(data, initial_buffer); ins_data = data + i; memset(ins_data, 0, initial_buffer - i); } *ins_data = getchar(); if (*ins_data == '\n') { char *backup = ins_data; while (*(backup - 1) != '\n') { --backup; } char *test_cmd = get_line(backup); if (strcmp(test_cmd, "go") == 0) { action = 0; free(test_cmd); break; } else if (strcmp(test_cmd, "ready") == 0) { action = 1; free(test_cmd); break; } free(test_cmd); } ++ins_data; } if (action == 0) { char *skip_line = data + 1; while (*++skip_line != '\n'); ++skip_line; _init_map(skip_line, &Info); _init_game(&Info, &Game); do_turn(&Game, &Info); fprintf(stdout, "go\n"); fflush(stdout); } else if (action == 1) { _init_ants(data + 1, &Info); Game.my_ant_index = -1; do_init(&Game, &Info); fprintf(stdout, "go\n"); fflush(stdout); } free(data); } }
//int main(int argc, char *argv[]) { int main() { int action = -1; struct game_info Info; struct game_state Game; struct odor_map odor_map; Info.map = 0; Game.my_ants = 0; Game.enemy_ants = 0; Game.my_hives = 0; Game.enemy_hives = 0; Game.food = 0; // Game.dead_ants = 0; odor_map.ant_freq = 0; odor_map.perma = 0; // srand ( time(NULL) ); while (1) { int initial_buffer = 100000; char *data = calloc(1, initial_buffer); *data = '\n'; char *ins_data = data + 1; int i = 0; while (++i) { if (i > initial_buffer) { initial_buffer *= 2; data = realloc(data, initial_buffer); memset(ins_data, 0, initial_buffer/2); } *ins_data = getchar(); if (*ins_data == '\n') { char *backup = ins_data; while (*(backup - 1) != '\n') { --backup; } char *test_cmd = get_line(backup); if (strcmp(test_cmd, "go") == 0) { action = 0; free(test_cmd); break; } else if (strcmp(test_cmd, "ready") == 0) { action = 1; free(test_cmd); break; } free(test_cmd); } ++ins_data; } if (action == 0) { char *skip_line = data + 1; while (*++skip_line != '\n'); ++skip_line; _init_map(skip_line, &Info, &odor_map); _init_game(&Info, &Game); do_turn(&Game, &Info, &odor_map); fprintf(stdout, "go\n"); fflush(stdout); } else if (action == 1) { _init_ants(data + 1, &Info); Game.my_ant_index = -1; fprintf(stdout, "go\n"); fflush(stdout); } free(data); } }
int main() { int action = -1; Info = calloc(1, sizeof(struct game_info)); Game = calloc(1, sizeof(struct game_state)); Game->map = 0; Game->my_ants = 0; Game->enemy_ants = 0; Game->food = 0; Game->dead_ants = 0; #ifdef DEBUG init_log(); #endif while (42) { int initial_buffer = 100000; char *data = malloc(initial_buffer); memset(data, 0, initial_buffer); *data = '\n'; char *ins_data = data + 1; int i = 0; while (1 > 0) { ++i; if (i > initial_buffer) { initial_buffer *= 2; data = realloc(data, initial_buffer); memset(ins_data, 0, initial_buffer/2); } *ins_data = getchar(); if (*ins_data == '\n') { char *backup = ins_data; while (*(backup - 1) != '\n') { --backup; } char *test_cmd = get_line(backup); if (strcmp(test_cmd, "go") == 0) { action = 0; free(test_cmd); break; } else if (strcmp(test_cmd, "ready") == 0) { action = 1; free(test_cmd); break; } free(test_cmd); } ++ins_data; } if (action == 0) { Log("Playing turn %d\n", Game->turn); char *skip_line = data + 1; while (*++skip_line != '\n'); ++skip_line; init_lists(); _init_map(skip_line); do_turn(); fprintf(stdout, "go\n"); fflush(stdout); } else if (action == 1) { Log("Read game start data\n"); _init_ants(data + 1); Game->my_ant_index = -1; Log("Initializing memory\n"); allocate_map(); allocate_lists(); Game->turn = 1; Log("Ready to play, signaling engine\n"); fprintf(stdout, "go\n"); fflush(stdout); } free(data); } }