#include #include PullPaintAgent::PullPaintAgent(PictureEnvironment* iEnvironment, int iDotSize, int iMoveSize) : RepaintAgent(iEnvironment, iDotSize, iMoveSize, 0) { int vWidth = fEnvironment->getWidth(); int vHeight = fEnvironment->getHeight(); fXPos = (((double)rand() / RAND_MAX) * vWidth); fYPos = (((double)rand() / RAND_MAX) * vHeight); fColor = sf::Color(fEnvironment->getCellOriginal(fXPos, fYPos)); } void PullPaintAgent::move() { int vNewPosX = -1; int vNewPosY = -1; int vMoveIndex = ((((double)rand() / RAND_MAX) * (fMovements.size() - 1))); vNewPosX = fXPos + fMovements.at(vMoveIndex).at(0); vNewPosY = fYPos + fMovements.at(vMoveIndex).at(1); while (vNewPosX < 0 || vNewPosX > fEnvWidth || vNewPosX < 0 || vNewPosY > fEnvHeight) { vMoveIndex = ((((double)rand() / RAND_MAX) * (fMovements.size() - 1))); vNewPosX = fXPos + fMovements.at(vMoveIndex).at(0); vNewPosY = fYPos + fMovements.at(vMoveIndex).at(1); } fXPos = vNewPosX; fYPos = vNewPosY; } void PullPaintAgent::loop() { move(); this->paint(); }