void MainWindow::on_pushButton_2_clicked() { QString str = QString::fromStdString(std_str) ; ui->label_2->setText("the delay is " + str); player.stop(); player2.stop(); }
void MainWindow::on_pushButton_clicked() { player.stop(); float number; std::istringstream iss(std_str); iss >> number ; int num = number *1000; player.setMedia(QUrl::fromLocalFile(QFileInfo(file_main).absoluteFilePath())); player.setVolume(100); player.play(); delay(num+2); qDebug() << num << endl; player2.setMedia(QUrl::fromLocalFile(QFileInfo(file_ref).absoluteFilePath())); player2.setVolume(100); player2.play(); }
/*! * \brief Run * Programe principale du jeux */ void Run() { #ifdef __WIN32__ QThread Thread; // on crée un objet QThread pour le Timer de QMediaPlayer QMediaPlayer player; // on crée un lecteur de Musique player.moveToThread(&Thread); // on le place dans le Thread player.setVolume(50); // on modifie le volume QVector<QUrl> playlist; // on affecte une playlist d'URL playlist.push_back(QUrl(QString::fromStdString(KIntroSound))); playlist.push_back(QUrl(QString::fromStdString(KEndSound))); playlist.push_back(QUrl(QString::fromStdString(KGameOverSound))); playlist.push_back(QUrl(QString::fromStdString(KHistoSound))); playlist.push_back(QUrl(QString::fromStdString(KGameSound))); player.setMedia(playlist[0]); player.play(); // On joue la musque d'introduction au jeux #endif srand (time(NULL)); set_input_mode(); MainFont(); // On affiche un Invader CVString Space; // On crée la variable qui est la grille de jeux int FinalScore(0); // variable qui stock le score unsigned Level(0); // variable qui stock le niveau atteint par le joueur for( ; Level<5 && (Level==0 || !LoseTest(Space, Space.size()-1)) ; ++Level) { unsigned PosInvader(KBegInvader), PosMe(KBegMe); // Variable stockant la position de l'invader et du joueur unsigned LineInvader(0); // ligne de l'invader unsigned FirstInvaderCount (KInvadersSize); // Compteur du nombre d'invaders restant if(Level>2) FirstInvaderCount = KInvadersSize*2/3; unsigned PlayerLife (KMyLife); // Variable stockant la vie du joueur int Score(0); // score du joueur bool Increment(true); // variable qui donne le sens de déplacement de l'invader int FireWait(0); // Variable evitant que le joueur puisse tiré rapidement initSpace(Space, PosMe, LineInvader); // Variable initialisant cout << CleanScreen(); // on efface l'écran pour rafraichir l'image #ifdef __WIN32__ player.stop(); player.setMedia(playlist[3]); // on joue la musique de scenario player.play(); #endif ManageScenar(Level); // démarage de l'affichage du scénario #ifdef __WIN32__ player.stop(); player.setMedia(playlist[4]); // a la fin du scenario on lance la musique de jeux player.play(); #endif cout << CleanScreen(); // on efface l'écran unsigned Turn(0); // nombre de tours écoulés while(!WinTest(Space, LineInvader) && !LoseTest(Space, Space.size()-1)) // on boucle tan que le joueur ou l'invader n'a pas gagne ou qu'il soit arrive sur la dernier ligne { Score -= 10; // on decremente le score à chaque tours de l'invader for(unsigned i(0) ; i<KRatioMeInvaders && (!WinTest(Space, LineInvader) && !LoseTest(Space, Space.size()-1)); ++i, ++Turn) // boucle pour equilibré le ration { unsigned LastInvaderCount (FirstInvaderCount); // on sauvegarde le nombre d'invaders avant de faire se déplacer les missile ManageMissileAndTorpedo(Space, FirstInvaderCount, PlayerLife, Score); if(LastInvaderCount != FirstInvaderCount) // si il manque un ou plusieurs invaders on incrémente le score et on fait apparaitre un bonus { ManageBonus(Space, LineInvader); Score += 100; } if(Turn%KMissileRatio == 0) // on respecte un ratio pour les tirs de missile ManageInvaderShoot(Space, LineInvader, PosInvader, PlayerLife); chrono::high_resolution_clock::time_point t1 = chrono::high_resolution_clock::now(); // on recupère le temps de début ManageMe(Space, PosMe, FireWait, PlayerLife, Score); // on donne le tour au joueur cout << GotoXY(0,0) << "\t\t\t" << SetColorAndBack(KNoir, KRouge) << string(KSizeLine+2,'-') << Reset() << endl; // place le haut de la grille for(const string &Line : Space) { cout << "\t\t\t" << SetColorAndBack(KNoir, KRouge) << '|' << Reset(); // on affiche la grille de jeux PrintGameLine(Line); cout << SetColorAndBack(KNoir, KRouge) << '|' << Reset() << endl; } cout << "\t\t\t" << SetColorAndBack(KNoir, KRouge) << string(KSizeLine+2,'-') << Reset() << endl; cout << SetColorAndBack(KCyan, KRouge) << resizeText(" Score : " + to_string(Score) + " Player Life : " + to_string(PlayerLife), 60) << Reset() << endl; // afficher les info du jeux cout << SetColorAndBack(KCyan, KRouge) << resizeText(" FinalScore : " + to_string(Score + FinalScore) + " Invader Count : " + to_string(FirstInvaderCount),60)<< Reset() << endl; chrono::high_resolution_clock::time_point t2 = chrono::high_resolution_clock::now(); auto duration = chrono::duration_cast<chrono::microseconds>( t2 - t1 ).count(); // on fait la différence pour eviter que le jeux aille trop vite if(duration<350000) usleep(350000-duration); // on attend que le temps manquant ce soit écoulé } #ifdef __WIN32__ if(player.state() != QMediaPlayer::PlayingState) // si la musique s'arrete on la relance player.play(); #endif ManageInvaderMove(Space, Increment, LineInvader, PosInvader); // on déplace l'invader } if(PlayerLife==0) { #ifdef __WIN32__ player.stop(); player.setMedia(playlist[2]); // on joue la musique de game over player.play(); #endif MainFont(KNoir,KRouge, KNoir); // image de game over } FinalScore += Score; if(Level == 4) { #ifdef __WIN32__ player.stop(); player.setMedia(playlist[1]); // musique de victoire player.play(); #endif MainFont(KNoir,KVert, KNoir); // image de victoire cout << "Score Final "<< FinalScore; // affichage du score final } } }