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(); }
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; }