Пример #1
0
void gameUpdate()
{
  int i;
  for(i=0;i<MAXGOOD;i++)
  {
    good[i].update(1);
  }
  for(i=0;i<MAXBAD;i++)
  {
    bad[i].update(0);
  }
  for(i=0;i<MAXGOOD;i++)
  {
    good[i].init(1);
  }
  for(i=0;i<MAXBAD;i++)
  {
    bad[i].init(0);
  }
  scoreUpdate();
}
Пример #2
0
void pawnupdate(int x,int y)
{
  pawn.setPos((x*WIDTH/scrwidth),((scrheight-y)*HEIGHT)/scrheight);
  scoreUpdate();
  glutPostRedisplay();
}
Пример #3
0
void Game::update()
{
	sf::Time tempTime = clock.restart();
	float elapsedTime = tempTime.asSeconds();
	ship->move(elapsedTime);
	particleSystem->update(elapsedTime);
	for (std::vector<Asteroid*>::iterator i = asteroidVector.begin(); i != asteroidVector.end(); ++i)
	{
		(*i)->move(elapsedTime);
	}
	for (std::vector<SmallAsteroid*>::iterator i = smAsteroidVector.begin(); i != smAsteroidVector.end(); ++i)
	{
		(*i)->move(elapsedTime);
	}

	for (int i = 0; i < MAX_BULLETS; ++i)
	{
		if (bullet[i] != nullptr)
		{
			bullet[i]->move(elapsedTime);
			if (bullet[i]->dist())
			{
				bullet[i] = nullptr;
			}
		}
	}

	for (unsigned int i = 0; i < asteroidVector.size(); ++i)
	{
		if (ship->collision(asteroidVector[i]))
		{
			int myRand = rand() % 100 + 1;
			if (myRand <= 30 && myRand >= 1)
			{
				for (int k = 1; k < 4; ++k)
				{
					std::string spritefile = "Images/Small";
					spritefile = spritefile + std::to_string(k) + ".png";
					SmallAsteroid* smAsteroid = new SmallAsteroid(spritefile, asteroidVector[i]->getPos(), k, win);
					smAsteroidVector.push_back(smAsteroid);
				}
			}
			for (int j = 0; j < 10; ++j)
			{
				particleSystem->addParticle(asteroidVector[i]->getPos(), asteroidVector[i]->getVel(), 1);
			}
			ship->collide();
			asteroidExplosion.play();
			asteroidVector[i] = nullptr;
			asteroidVector.erase(asteroidVector.begin() + i);
		}
	}

	for (unsigned int i = 0; i < smAsteroidVector.size(); ++i)
	{
		if (ship->smCollision(smAsteroidVector[i]))
		{
			for (int j = 0; j < 10; ++j)
			{
				particleSystem->addParticle(smAsteroidVector[i]->getPos(), smAsteroidVector[i]->getVel(), 1);
			}
			ship->collide();
			asteroidExplosion.play();
			smAsteroidVector[i] = nullptr;
			smAsteroidVector.erase(smAsteroidVector.begin() + i);
		}
	}

	for (unsigned int i = 0; i < smAsteroidVector.size(); ++i)
	{
		if (smAsteroidVector[i]->edge(smAsteroidVector[i]))
		{
			smAsteroidVector[i] = nullptr;
			smAsteroidVector.erase(smAsteroidVector.begin() + i);
		}
	}

	for (int i = 0; i < MAX_BULLETS; ++i)
	{
		for (unsigned int j = 0; j < asteroidVector.size(); ++j)
		{
			if (bullet[i] != nullptr && asteroidVector.at(j) != nullptr)
			{
				if (bullet[i]->collision(asteroidVector.at(j)))
				{
					int myRand = rand() % 100 + 1;
					if (myRand <= 30 && myRand >= 1)
					{
						for (int k = 1; k < 4; ++k)
						{
							std::string spritefile = "Images/Small";
							spritefile = spritefile + std::to_string(k) + ".png";
							SmallAsteroid* smAsteroid = new SmallAsteroid(spritefile, asteroidVector[j]->getPos(), k, win);
							smAsteroidVector.push_back(smAsteroid);
						}
					}
					for (int l = 0; l < 10; ++l)
					{
						particleSystem->addParticle(asteroidVector[j]->getPos(), asteroidVector[j]->getVel(), 1);
					}
					asteroidExplosion.play();
					bullet[i] = nullptr;
					asteroidVector[j] = nullptr;
					asteroidVector.erase(asteroidVector.begin() + j);
					score += 100;
				}
			}
		}
		for (unsigned int j = 0; j < smAsteroidVector.size(); ++j)
		{
			if (bullet[i] != nullptr && smAsteroidVector.at(j) != nullptr)
			{
				if (bullet[i]->smCollision(smAsteroidVector.at(j)))
				{
					for (int i = 0; i < 10; ++i)
					{
						particleSystem->addParticle(smAsteroidVector[j]->getPos(), smAsteroidVector[j]->getVel(), 1);
					}
					asteroidExplosion.play();
					bullet[i] = nullptr;
					smAsteroidVector[j] = nullptr;
					smAsteroidVector.erase(smAsteroidVector.begin() + j);
					score += 50;
				}
			}
		}
	}

	if (ship->dead())
	{
		scoreUpdate(win);
	}

	if (asteroidVector.empty() && !ship->dead() && smAsteroidVector.empty())
	{
		levelMenu = true;
		level += 1;
		build(level);
	}
}