Beispiel #1
0
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);
}
Beispiel #2
0
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;
}
Beispiel #3
0
    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';
            }
        }

    }
Beispiel #4
0
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);
}