/* * repells shapes increasingly dependent on how close to the center of the shape the points (x,y) are */ void Shape::collision_AntiMagnet(float x, float y){ float horz_Middle, vert_Middle; horz_Middle = getLocation_y()+(getHeight()/2); vert_Middle = getLocation_x()+(getWidth()/2); //velocity based on distance from center float vely = (y-horz_Middle)/(getHeight()/2); float velx = (x-vert_Middle)/(getWidth()/2); //inverse velocity if(velx > 0) velx-=1; else velx+=1; if(vely >0) vely-=1; else vely+=1; //speed up the affect velx*=SPEED; vely*=SPEED; //increment velocity incVelocity(velx, vely); //printf("incremented by (%f, %f) velocity --(%f, %f)\n",velx,vely,velocity_x,velocity_y); }
void cruise(Signal::Bus input) { switch(state) { case State::ON: display(); // Freude am Fahren switch(input) { case Signal::SET: setVelocity(); state = State::SET; break; case Signal::RES: resVelocity(); state = State::RES; break; case Signal::OFF: exitCruise(); state = State::OFF; break; } std::cout << "State is " << getStateName() << std::endl; break; case State::SET: display(); switch(input) { case Signal::INC: incVelocity(); state = State::INC; break; case Signal::DEC: decVelocity(); state = State::DEC; break; case Signal::OFF: exitCruise(); state = State::OFF; break; case Signal::BRK: stopCruise(); state = State::ON; break; } if(oldState != state) saveVelocity(); std::cout << "State is " << getStateName() << std::endl; break; case State::RES: display(); switch(input) { case Signal::SET: setVelocity(); state = State::SET; break; case Signal::INC: incVelocity(); state = State::INC; break; case Signal::DEC: decVelocity(); state = State::DEC; break; case Signal::OFF: exitCruise(); state = State::OFF; break; case Signal::BRK: stopCruise(); state = State::ON; break; } std::cout << "State is " << getStateName() << std::endl; break; case State::INC: display(); switch(input) { case Signal::SET: setVelocity(); state = State::SET; break; case Signal::RES: resVelocity(); state = State::RES; break; case Signal::INC: incVelocity(); state = State::INC; break; case Signal::DEC: decVelocity(); state = State::DEC; break; case Signal::OFF: exitCruise(); state = State::OFF; break; case Signal::BRK: stopCruise(); state = State::ON; break; } std::cout << "State is " << getStateName() << std::endl; break; case State::DEC: display(); switch(input) { case Signal::SET: setVelocity(); state = State::SET; break; case Signal::RES: resVelocity(); state = State::RES; break; case Signal::INC: incVelocity(); state = State::INC; break; case Signal::DEC: decVelocity(); state = State::DEC; break; case Signal::OFF: exitCruise(); state = State::OFF; break; case Signal::BRK: stopCruise(); state = State::ON; break; } std::cout << "State is " << getStateName() << std::endl; break; case State::OFF: switch(input) { case Signal::ON: startCruise(); state = State::ON; break; } std::cout << "State is " << getStateName() << std::endl; break; } oldState = state; }