Beispiel #1
0
ColorVal static inline get_max_i(int par, ColorVal y) {
    assert(y >= get_min_y(par));
    assert(y <= get_max_y(par));

    if (y<par-1) {
      return 4*par+2+4*y;
    } else if (y>=3*par) {
      return 8*par-5-4*(y-3*par);
    } else {
      return 8*par-2;
    }
}
Beispiel #2
0
ColorVal static inline get_max_q(int par, ColorVal y, ColorVal i) {
    assert(y >= get_min_y(par));
    assert(y <= get_max_y(par));
    if (i < get_min_i(par,y)) return -1; //invalid value
    if (i > get_max_i(par,y)) return -1; //invalid value
    assert(i >= get_min_i(par,y));
    assert(i <= get_max_i(par,y));

    if (y<par-1) {
      return 4*par+2*y;
    } else if (y>=3*par) {
      return 4*par-1+2*(4*par-1-y)-((1+abs(i-4*par+1))/2)*2;
    } else {
      return (std::min)(6*par-2+(y-par+1)*2, 6*par-1+(3*par-1-y)*2-((1+abs(i-4*par+1))/2)*2);
    }
}
Beispiel #3
0
ColorVal static inline get_min_q(int par, ColorVal y, ColorVal i) {
    assert(y >= get_min_y(par));
    assert(y <= get_max_y(par));
    if (i < get_min_i(par,y)) return 8*par; //invalid value
    if (i > get_max_i(par,y)) return 8*par; //invalid value
    assert(i >= get_min_i(par,y));
    assert(i <= get_max_i(par,y));

    if (y<par-1) {
      return 4*par-2-2*y+(abs(i-4*par+1)/2)*2;
    } else if (y>=3*par) {
      return 4*par-1-2*(4*par-1-y);
    } else {
      return std::max(1+(y-2*par)*2, 2*par-(y-par+1)*2+(abs(i-4*par+1)/2)*2);
    }
}
Beispiel #4
0
/* check_game_over - checks if the game is over */
bool check_game_over() {
	
	int i, y, check_index;

	if (tetromino->type == LINE) {
		y = NEXT_Y + tetromino->offset_y + 25 + BLOCK_SIZE / 2;
	} else if (tetromino->type == SQUARE) {
		y = NEXT_Y + tetromino->offset_y + 25;
	} else {
		y = NEXT_Y + tetromino->offset_y + 25;
	}
	
	check_index = 10 * (get_min_y(tetromino) + y - START_HEIGHT) / BLOCK_SIZE; 
	    
	for (i = 0; i < 10; i++)
		if (board[check_index + i].type != NO_SHAPE)
			return true;
	return false;
}