Ejemplo n.º 1
0
void			Game::moveMissiles()
{
	int		i;

	i = 0;
	while (i < _missileId)
	{
		_board.setMatriceValueAt(_missile[i].getPosX(), _missile[i].getPosY(), 0);
		switch(_missile[i].getDirection())
		{
		case RIGHT :
			_missile[i].goRight();
			break;
		case LEFT :
			_missile[i].goLeft();
			break;
		}
		if (_missile[i].getPosX() > _win.getW() || _missile[i].getPosX() < 0)
			deleteEntity(_missile[i]);
		else if (_missile[i].getPosY() > _win.getW() || _missile[i].getPosY() < 0)
			deleteEntity(_missile[i]);
		else if (!checkIfCollision(_missile[i]))
		{
			_board.setMatriceValueAt(_missile[i].getPosX(), _missile[i].getPosY(), &_missile[i]);
			i++;
		}
	}
}
Ejemplo n.º 2
0
void			Game::moveEnemies()
{
	int				i;

	i = 0;
	while (i < _enemyId)
	{
		deleteShip(_enemy[i]);
		_enemy[i].goLeft();
		if (_enemy[i].getPosX() < 0)
			_win.renderLose();
		if (_enemy[i].getPosY() > _win.getH() || _enemy[i].getPosY() < 0)
			deleteEntity(_enemy[i]);
		if (!checkIfCollision(_enemy[i]))
			drawShip(_enemy[i]);
		i++;
	}
}
Ejemplo n.º 3
0
	void Window::update()
	{
		/*SDL_RenderClear(ren);

		if (logic != NULL)
			logic->update();

		for (int i = 0; i < comps.size(); i++)
		{
			comps[i]->update();
			checkIfCollision(comps[i]);

			if (comps[i]->isDead())
			{
				delete comps[i];
				comps.erase(comps.begin() + i);
			}
		}

		SDL_RenderPresent(ren);*/



		//5 is enough to still let the sprites have enough movement, without delaying it to much with mouse/keyevent.
		for (int i = 0; i < 5; i++)
		{
			if (SDL_PollEvent(&eve) == 1)
			{
				switch (eve.type)
				{
				case SDL_QUIT:
					cout << "SDL_QUIT" << endl;
					done = true;
					break;

				case SDL_MOUSEBUTTONDOWN:
					cout << "SDL_MOUSEBUTTONDOWN" << endl;
					for (Sprite* comp : comps)
						comp->mouseDown(eve);
					break;

				case SDL_MOUSEBUTTONUP:
					cout << "SDL_MOUSEBUTTONUP" << endl;
					for (Sprite* comp : comps)
						comp->mouseUp(eve);
					break;

				case SDL_MOUSEMOTION:
					//cout << "SDL_MOUSEMOTION" << endl;
					cout << "X: " << eve.motion.x << endl;;
					cout << "Y: " << eve.motion.y << endl;;

					break;

				case SDL_KEYUP:
					cout << "SDL_KEYUP" << endl;
					for (Sprite* comp : comps)
						comp->keyUp(eve);
					break;

				case SDL_KEYDOWN:
					cout << "SDL_KEYDOWN" << endl;
					for (Sprite* comp : comps)
						comp->keyDown(eve);
					break;
				}
			}
		}

		if (!freeze)
		{
			SDL_RenderClear(ren);

			if (logic != NULL)
				logic->update();

			for (int i = 0; i < comps.size(); i++)
			{
				comps[i]->update();
				checkIfCollision(comps[i]);

				if (comps[i]->isDead())
				{
					delete comps[i];
					comps.erase(comps.begin() + i);
				}
			}
			
			SDL_RenderPresent(ren);
		}
	}