Esempio n. 1
0
void display() {

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);

    glLoadIdentity();
    wallpaper();

    glLoadIdentity();
    xWing->draw(modelXwings);

    glLoadIdentity();
    tieFighter->draw(modelTie);

    glLoadIdentity();
    tieFighter2->draw(modelTie);

    drawDestroyer();

    glLoadIdentity();
    tieFighter3->draw(modelTie);

    glLoadIdentity();
    tieFighter4->draw(modelTie);

    glLoadIdentity();
    tieFighter5->draw(modelTie);

    glLoadIdentity();
    tieFighter6->draw(modelTie);

    glLoadIdentity();
    deathStar->draw(model);

    glLoadIdentity();
    deathStar2->draw(model);

    glLoadIdentity();
    glColor3f(1,1,1);
    darthVader->draw(modelDarth);

    if(bullet0->isShooted())
    {
        glLoadIdentity();
        glColor3f(1,0,0);
        bullet0->draw();
        glLoadIdentity();
        bullet1->draw();
        glLoadIdentity();
        bullet2->draw();
        glLoadIdentity();
        bullet3->draw();
        glLoadIdentity();
    }

    if(bulletEnemy->isShooted()) {
        glLoadIdentity();
        glColor3f(0,1,0);
        bulletEnemy->draw();
    }
    if(bulletEnemy2->isShooted()) {
        glLoadIdentity();
        glColor3f(0,1,0);
        bulletEnemy2->draw();
    }
    if(bulletEnemy3->isShooted()) {
        glLoadIdentity();
        glColor3f(0,1,0);
        bulletEnemy3->draw();
    }
    if(bulletEnemy4->isShooted()) {
        glLoadIdentity();
        glColor3f(0,1,0);
        bulletEnemy4->draw();
    }
    if(bulletEnemy5->isShooted()) {
        glLoadIdentity();
        glColor3f(0,1,0);
        bulletEnemy5->draw();
    }
    if(bulletEnemy6->isShooted()) {
        glLoadIdentity();
        glColor3f(0,1,0);
        bulletEnemy6->draw();
    }

    if(bulletDarth->isShooted()) {
        glLoadIdentity();
        glColor3f(0,1,0);
        bulletDarth->draw();
    }

    //Stampa delle scritte a video.
    glLoadIdentity();
    displayInfo();
    glLoadIdentity();
    glTranslated(2, 2, -3);
    glScaled(0.25, 0.25, 0.0);
    lifeBar(xWing);

    if(arrivato) {
        glLoadIdentity();
        glTranslated(-3.5, 2, -3);
        glScaled(0.25, 0.25, 0.0);
        lifeBar2(darthVader);
    }
    if(bomb->isShooted()) {
        glLoadIdentity();
        glColor3f(1.0,0.0,0.0);
        bomb->drawBomb();
    }
    if(win && xWing->getX() >=6) {
        scena = true;
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glMatrixMode(GL_MODELVIEW);
        light0_position[2] = 0.0;

        glLoadIdentity();
        glTranslated(-15, -180, 20);
        wallpaper();

        if(!morteNera->getDeath()) {
            glLoadIdentity();
            morteNera->draw(modelFinal);
        }
        if(detonator) {
            if(explosion->getSystemsSize() == 0) {
                glLoadIdentity();
                FinalWallpaper();
            }
        }
    }

    glLoadIdentity();
    xWing->drawSahdow(modelXwings);

    glLoadIdentity();
    explosion->render();

    glFlush();
    glutSwapBuffers();
}
Esempio n. 2
0
int main()
{
	Score score(0);
	score.initialize();
	
	/*draw star wallpaper*/
	sf::Texture texture;
	texture.loadFromFile("img/wallpaper.jpg");

	/*Size of the space used to draw*/
	sf::Vector2f resolution(1920,1080);
	
	/*handle windows task bar*/
	float ratio;
	if (sf::VideoMode::getDesktopMode().width == 1920)
	{
		ratio = 0.955f;
	}
	else {
		ratio = 0.95f;
	}
	sf::RenderWindow window(sf::VideoMode((unsigned int)resolution.x, (unsigned int)resolution.y), "Awesome brick breaker", sf::Style::Fullscreen);
	/*Set window to fit screen size*/
	window.setSize(sf::Vector2u(sf::VideoMode::getDesktopMode().width, (unsigned int)(sf::VideoMode::getDesktopMode().height*ratio)));
	//force rendering to screen framerate
	window.setVerticalSyncEnabled(true);
	//hide the mouse
	window.setMouseCursorVisible(false);
	Menu menu;

	Level level(resolution, 2, score);
	/*Graphical loop*/
	while (window.isOpen())
	{

		sf::Event event;
		while (window.pollEvent(event))
		{
			// enable window closing
			if (event.type == sf::Event::Closed || 
				(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape))
				window.close();
			
			else if (event.type == sf::Event::MouseMoved && !sf::Keyboard::isKeyPressed(sf::Keyboard::Left)
				&& !sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
			{
				/* capture mouse movement*/
				/*Convert window size to world size*/
				sf::Vector2f mouse=window.mapPixelToCoords(sf::Vector2i(event.mouseMove.x, event.mouseMove.y), window.getView());
				level.setBarPosition(mouse.x);
			}
			else if (event.type == sf::Event::Resized)
			{
				/*allow responsive design*/
				sf::View view(sf::FloatRect(-(event.size.width - resolution.x) / 2.0f, -(event.size.height - resolution.y) / 2.0f
					, (float)event.size.width, (float)event.size.height));
				float zoom = std::max(resolution.x/ event.size.width, resolution.y/ event.size.height);
				view.zoom(zoom);
				window.setView(view);
			}
		}


		//Draw background wallpaper
		sf::Vector2f size = sf::Vector2f(1920, (float)(1920*texture.getSize().y/ texture.getSize().x));
		sf::RectangleShape wallpaper(size);
		wallpaper.setTexture(&texture);
		wallpaper.setOutlineThickness(45);
		wallpaper.setOutlineColor(sf::Color(44, 135, 190));
		window.draw(wallpaper);

		/*Select level and then play!*/
		if (!menu.isChoiceMade())
		{
			menu.draw(window, resolution);
			if (menu.isChoiceMade())
			{
				if (menu.getSelectedItem() == 3)
				{
					window.close();
				}
				else
				{
					level = Level(resolution, menu.getSelectedItem(), score);
				}
			}
		}
		else if (level.isFinished())
		{
			level.~Level();
			menu.setNewLevel();
		}
		else
		{
			level.forward(resolution, window, menu);
		}

		// end of the draw frame
		window.display();

	}
	return 0;
}