Example #1
0
void Explosion::newExplosion (float pos_x,float pos_y)
{
    this->pos_x=pos_x;
    this->pos_y=pos_y;
    int    i;

    for (i = 0; i < NUM_PARTICLES; i++)
    {
        particles[i]->position[0] = 0.0;
        particles[i]->position[1] = 0.0;
        particles[i]->position[2] = 0.0;

        particles[i]->color[0] = 0.5;
        particles[i]->color[1] = 0.5;
        particles[i]->color[2] = 1.0;

        newSpeed (particles[i]->speed);
    }

    for (i = 0; i < NUM_DEBRIS; i++)
    {
        this->debris[i]->position[0] = 0.0;
        this->debris[i]->position[1] = 0.0;
        this->debris[i]->position[2] = 0.0;

        this->debris[i]->orientation[0] = 0.0;
        this->debris[i]->orientation[1] = 0.0;
        this->debris[i]->orientation[2] = 0.0;

        this->debris[i]->color[0] = 0.7;
        this->debris[i]->color[1] = 0.7;
        this->debris[i]->color[2] = 0.7;

        this->debris[i]->scale[0] = (20.0 *
                                     ((GLfloat) rand ()) / ((GLfloat) RAND_MAX)) - 1.0;
        this->debris[i]->scale[1] = (20.0 *
                                     ((GLfloat) rand ()) / ((GLfloat) RAND_MAX)) - 1.0;
        this->debris[i]->scale[2] = (20.0 *
                                     ((GLfloat) rand ()) / ((GLfloat) RAND_MAX)) - 1.0;

        newSpeed (this->debris[i]->speed);
        newSpeed (this->debris[i]->orientationSpeed);
    }

    fuel = 100;
}
Example #2
0
void generate_init_values(int number_of_stars, struct star* star_array)
{
  time_t t;
  srand((unsigned) time(&t));
  for(int i = 0; i < number_of_stars; ++i){
    star_array[i] = makeStar();
    prec angle = 360 * newRand();
    prec radius = 100 * newRand();
    newPos(&star_array[i],  radius * cos(angle) + 350, 0.5 * radius * sin(angle) + 350);
    newSpeed(&star_array[i], 0.4*(star_array[i].ypos - 350), (-0.4)*(star_array[i].xpos - 350));
    newMass(&star_array[i], 2*newRand() + 2);
  }

}
Example #3
0
static void update_position(struct star* str, prec time_unit)
{
  prec xacc = readXForce(str) / readMass(str);
  prec xSpeedIncrease = xacc * time_unit;
  prec yacc = readYForce(str) / readMass(str);
  prec ySpeedIncrease = yacc * time_unit;
  prec newXSpeed = readXSpeed(str) + xSpeedIncrease;
  prec newYSpeed = readYSpeed(str) + ySpeedIncrease;
  newSpeed(str, newXSpeed, newYSpeed);
  prec xPosIncrease = readXSpeed(str) * time_unit + yacc * pow(time_unit, 2.0)/2;
  prec yPosIncrease = readYSpeed(str) * time_unit + yacc * pow(time_unit, 2.0)/2;
  prec newXPos = readXPos(str) + xPosIncrease;
  prec newYPos = readYPos(str) + yPosIncrease;
  newPos(str, newXPos, newYPos);
}
Example #4
0
void MCWorld::random() {
	rides.clear();
	QTime midnight(0, 0, 0);
	//pd the rand function does not work on Windows, look on this later
	#ifdef Q_OS_WIN32
	//bla something here
	#else
		srand(midnight.secsTo(QTime::currentTime()));
		for(int i = 0; i < allObjects.size(); i++) {
			allObjects[i]->unsetDestination();
			Speed newSpeed(rand() % 600 - 300, rand() % 600 - 300, 0);
			allObjects[i]->setSpeed(newSpeed);
		}
	#endif
}
Example #5
0
int nextMove(char ** arr,int row,int col,char * dir)
{
	int y,speed;
	int i=0,j=0;
	searchPosition(arr,row,col,&i,&j);
	arr[i][j]='-';
	if(strcmp(dir,"right")==0)
	{
		if(j+2>=col)
			j=col-1;
		else
			j=j+2;
		speed =newSpeed(arr[i][j]);
		while(speed!=4)
		{
			arr[i][j]='-';
			if(speed==0)
				moveLeft(&i,&j,row,col);
			else if(speed==1)
				moveRight(&i,&j,row,col);
			else if(speed==2)
				moveUp(&i,&j,row,col);
			else if(speed==3)
				moveDown(&i,&j,row,col);
			speed=newSpeed(arr[i][j]);
		}		
		arr[i][j]='G';
		return speed;
	}
	else if(strcmp(dir,"left")==0)
        {
                y=-2;
		if(j+y<0)
			j=0;
		else
			j=j+y;
		speed =newSpeed(arr[i][j]);
		while(speed!=4)
		{
			arr[i][j]='-';
			if(speed==0)
				moveLeft(&i,&j,row,col);
			else if(speed==1)
				moveRight(&i,&j,row,col);
			else if(speed==2)
				moveUp(&i,&j,row,col);
			else if(speed==3)
				moveDown(&i,&j,row,col);
			arr[i][j]='-';
			speed=newSpeed(arr[i][j]);
		}		
		arr[i][j]='G';
		return speed;
        }
	else if(strcmp(dir,"up")==0)
        {
                y=-1;
		if(i+y<0)
			i=0;
		else
			i=i+y;
		speed =newSpeed(arr[i][j]);
		while(speed!=4)
		{
			arr[i][j]='-';
			if(speed==0)
				moveLeft(&i,&j,row,col);
			else if(speed==1)
				moveRight(&i,&j,row,col);
			else if(speed==2)
				moveUp(&i,&j,row,col);
			else if(speed==3)
				moveDown(&i,&j,row,col);

			arr[i][j]='-';
			speed=newSpeed(arr[i][j]);
		}		
		arr[i][j]='G';
		return speed;
        }
	else
	{
		if(i+1>=row)
			i=row-1;
		else
			i=i+1;
		speed =newSpeed(arr[i][j]);
		while(speed!=4)
		{
			arr[i][j]='-';
			if(speed==0)
				moveLeft(&i,&j,row,col);
			else if(speed==1)
				moveRight(&i,&j,row,col);
			else if(speed==2)
				moveUp(&i,&j,row,col);
			else if(speed==3)
				moveDown(&i,&j,row,col);

			arr[i][j]='-';
			speed=newSpeed(arr[i][j]);
		}		
		arr[i][j]='G';
		return speed;
	}
}