void Well::addFigure(const Figure &f) { for(int y=0; y<4; ++y) for(int x=0; x<4; ++x) { int wx = x + f.x(), wy = y + f.y(); if(wx >= 0 && wx < width_ && wy >= 0 && wy < height_ ) map_[wy][wx] = map_[wy][wx] | f.map(x, y); } }
bool Well::isCollision(const Figure &f) const { for(int y=0; y<4; ++y) for(int x=0; x<4; ++x) { if(f.map(x, y)) { int wx = x + f.x(), wy = y + f.y(); if(wx < 0 || wx >= width_ || wy < 0 || wy >= height_ || map_[wy][wx]) return true; } } return false; }