Example #1
0
/*
 * 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);
}
Example #2
0
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;
}