void switch_minutes(){ switch_c++; bool is_res, is_valid; is_res = false; is_valid = false; int x, y; int fix_pos[2]; clear_reserved_coordinate(circle_coords_b[0][switch_c], circle_coords_b[1][switch_c], false); loop_fix: x = get_random_x(true); y = get_random_y(false); is_valid = is_valid_coordinate(x, y, false); is_res = is_coordinate_reserved(x, y, false); if(!is_valid || is_res){ goto loop_fix; } reserve_coordinate(x, y); fix_pos[0] = (x*8)-4; fix_pos[1] = (y*8)-5; circle_coords[0][switch_c] = fix_pos[0]; circle_coords[1][switch_c] = fix_pos[1]; if(switch_c > c_toshow){ switch_c = 0; } layer_mark_dirty(minutes_layer); }
int game::get_number_of_live(int m, int n) { int count = 0; for(int i=m-1; i<=m+1; i++) { for(int j=n-1; j<=n+1; j++) { if (is_valid_coordinate(i, j) && (m_matrix[i][j] == ALIVE)) { count++; } } } return count; }
void bfs(vector<vector<char>>& board, int r, int c) { vector<pair<int, int>> coordinate_list; queue<pair<int, int>> bfs_queue; coordinate_list.push_back(make_pair(r, c)); bfs_queue.push(make_pair(r, c)); board[r][c] = 'X'; int r_deltas[] = {-1, 1, 0, 0}; int c_deltas[] = {0, 0, -1, 1}; bool is_captured = true; while (!bfs_queue.empty()) { pair<int, int> coordinate = bfs_queue.front(); bfs_queue.pop(); r = coordinate.first; c = coordinate.second; for (int i = 0; i < 4; ++i) { int current_r = r_deltas[i] + r; int current_c = c_deltas[i] + c; if (is_valid_coordinate(board, current_r, current_c)) { if (board[current_r][current_c] == 'O') { coordinate_list.push_back(make_pair(current_r, current_c)); bfs_queue.push(make_pair(current_r, current_c)); board[current_r][current_c] = 'X'; } } else { is_captured = false; } } } if (!is_captured) { for (int i = 0; i < coordinate_list.size(); ++i) { r = coordinate_list[i].first; c = coordinate_list[i].second; board[r][c] = 'V'; } } }
void fire_circle_animation(){ clear_squares(); int i = get_time(1); clear_all_reserved(); c_toshow = i; c_enabled = 0; while(i > 0){ bool is_res, is_valid; is_res = false; is_valid = false; int x, y; int fix_pos[2]; //for some f*****g shit reason my while loop was being ignored //so now we use goto loop_fix: x = get_random_x(true); y = get_random_y(false); is_valid = is_valid_coordinate(x, y, false); is_res = is_coordinate_reserved(x, y, false); if(!is_valid || is_res){ goto loop_fix; } //APP_LOG(APP_LOG_LEVEL_INFO, "reserving coordinate %d, %d", pos[0], pos[1]); reserve_coordinate(x, y); fix_pos[0] = (x*8)-4; fix_pos[1] = (y*8)-5; circle_coords[0][i] = fix_pos[0]; circle_coords[1][i] = fix_pos[1]; circle_coords_b[0][i] = x; circle_coords_b[1][i] = y; //APP_LOG(APP_LOG_LEVEL_INFO, "X: %d, Y: %d (%d, %d)", fix_pos[0], fix_pos[1], x, y); i--; } circletimer = app_timer_register(50, show_circles, NULL); }