int main(int argc, char **argv) { Q_INIT_RESOURCE(stickman); QApplication app(argc, argv); StickMan *stickMan = new StickMan; stickMan->setDrawSticks(false); QGraphicsTextItem *textItem = new QGraphicsTextItem(); textItem->setHtml("<font color=\"white\"><b>Stickman</b>" "<p>" "Tell the stickman what to do!" "</p>" "<p><i>" "<li>Press <font color=\"purple\">J</font> to make the stickman jump.</li>" "<li>Press <font color=\"purple\">D</font> to make the stickman dance.</li>" "<li>Press <font color=\"purple\">C</font> to make him chill out.</li>" "<li>When you are done, press <font color=\"purple\">Escape</font>.</li>" "</i></p>" "<p>If he is unlucky, the stickman will get struck by lightning, and never jump, dance or chill out again." "</p></font>"); qreal w = textItem->boundingRect().width(); QRectF stickManBoundingRect = stickMan->mapToScene(stickMan->boundingRect()).boundingRect(); textItem->setPos(-w / 2.0, stickManBoundingRect.bottom() + 25.0); QGraphicsScene scene; scene.addItem(stickMan); scene.addItem(textItem); scene.setBackgroundBrush(Qt::black); GraphicsView view; view.setRenderHints(QPainter::Antialiasing); view.setTransformationAnchor(QGraphicsView::NoAnchor); view.setScene(&scene); QRectF sceneRect = scene.sceneRect(); // making enough room in the scene for stickman to jump and die view.resize(sceneRect.width() + 100, sceneRect.height() + 100); view.setSceneRect(sceneRect); view.show(); view.setFocus(); LifeCycle cycle(stickMan, &view); cycle.setDeathAnimation(":/animations/dead.bin"); cycle.addActivity(":/animations/jumping.bin", Qt::Key_J); cycle.addActivity(":/animations/dancing.bin", Qt::Key_D); cycle.addActivity(":/animations/chilling.bin", Qt::Key_C); cycle.start(); return app.exec(); }
int main(int argc, char **argv) { QApplication app(argc, argv); if ((QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_1_5) == 0) { QMessageBox::critical(0, "OpenGL features missing", "OpenGL version 1.5 or higher is required to run this demo.\n" "The program will now exit."); return -1; } int maxTextureSize = 1024; QGLWidget *widget = new QGLWidget(QGLFormat(QGL::SampleBuffers)); widget->makeCurrent(); if (!necessaryExtensionsSupported()) { QMessageBox::critical(0, "OpenGL features missing", "The OpenGL extensions required to run this demo are missing.\n" "The program will now exit."); delete widget; return -2; } // Check if all the necessary functions are resolved. if (!getGLExtensionFunctions().resolve(widget->context())) { QMessageBox::critical(0, "OpenGL features missing", "Failed to resolve OpenGL functions required to run this demo.\n" "The program will now exit."); delete widget; return -3; } // TODO: Make conditional for final release QMessageBox::information(0, "For your information", "This demo can be GPU and CPU intensive and may\n" "work poorly or not at all on your system."); widget->makeCurrent(); // The current context must be set before calling Scene's constructor Scene scene(1024, 768, maxTextureSize); GraphicsView view; view.setViewport(widget); view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate); view.setScene(&scene); view.show(); return app.exec(); }
int main(int argc, char **argv) { Q_INIT_RESOURCE(stickman); QApplication app(argc, argv); StickMan *stickMan = new StickMan; stickMan->setDrawSticks(false); #if defined(Q_WS_S60) || defined(Q_WS_MAEMO_5) || defined(Q_WS_SIMULATOR) RectButton *buttonJump = new RectButton("Jump"); buttonJump->setPos(100, 125); RectButton *buttonDance = new RectButton("Dance"); buttonDance->setPos(100, 200); RectButton *buttonChill = new RectButton("Chill"); buttonChill->setPos(100, 275); #else QGraphicsTextItem *textItem = new QGraphicsTextItem(); textItem->setHtml("<font color=\"white\"><b>Stickman</b>" "<p>" "Tell the stickman what to do!" "</p>" "<p><i>" "<li>Press <font color=\"purple\">J</font> to make the stickman jump.</li>" "<li>Press <font color=\"purple\">D</font> to make the stickman dance.</li>" "<li>Press <font color=\"purple\">C</font> to make him chill out.</li>" "<li>When you are done, press <font color=\"purple\">Escape</font>.</li>" "</i></p>" "<p>If he is unlucky, the stickman will get struck by lightning, and never jump, dance or chill out again." "</p></font>"); qreal w = textItem->boundingRect().width(); QRectF stickManBoundingRect = stickMan->mapToScene(stickMan->boundingRect()).boundingRect(); textItem->setPos(-w / 2.0, stickManBoundingRect.bottom() + 25.0); #endif QGraphicsScene scene; scene.addItem(stickMan); #if defined(Q_WS_S60) || defined(Q_WS_MAEMO_5) || defined(Q_WS_SIMULATOR) scene.addItem(buttonJump); scene.addItem(buttonDance); scene.addItem(buttonChill); #else scene.addItem(textItem); #endif scene.setBackgroundBrush(Qt::black); GraphicsView view; view.setRenderHints(QPainter::Antialiasing); view.setTransformationAnchor(QGraphicsView::NoAnchor); view.setScene(&scene); QRectF sceneRect = scene.sceneRect(); // making enough room in the scene for stickman to jump and die view.resize(sceneRect.width() + 100, sceneRect.height() + 100); view.setSceneRect(sceneRect); #if defined(Q_WS_S60) || defined(Q_WS_MAEMO_5) || defined(Q_WS_SIMULATOR) view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); view.showMaximized(); view.fitInView(scene.sceneRect(), Qt::KeepAspectRatio); #else view.show(); view.setFocus(); #endif LifeCycle cycle(stickMan, &view); cycle.setDeathAnimation(":/animations/dead"); #if defined(Q_WS_S60) || defined(Q_WS_MAEMO_5) || defined(Q_WS_SIMULATOR) cycle.addActivity(":/animations/jumping", Qt::Key_J, buttonJump, SIGNAL(clicked())); cycle.addActivity(":/animations/dancing", Qt::Key_D, buttonDance, SIGNAL(clicked())); cycle.addActivity(":/animations/chilling", Qt::Key_C, buttonChill, SIGNAL(clicked())); #else cycle.addActivity(":/animations/jumping", Qt::Key_J); cycle.addActivity(":/animations/dancing", Qt::Key_D); cycle.addActivity(":/animations/chilling", Qt::Key_C); #endif cycle.start(); return app.exec(); }