void GraphicsScene::newPoint(Ball *b) { if(scoreManager->getScore1() >= 11 || scoreManager->getScore2() >= 11) { emit finPartie(); } if( b == ball ) { b->resetOrientation( 10 + vitesseVx, 6 + vitesseVy ); b->resetInside(); b->resetPosition( barPlayer->x() + barPlayer->getPixmap()->width() + 5, barPlayer->y() + barPlayer->getPixmap()->height()/2 ); } else { ballDisparition(b); triPoint++; } if(triPoint==3) { dispersion = false; triPoint = 0; QTimer::singleShot( 1000, this, SLOT( initBallBlanche()) ); //initBallBlanche(); } }
int Partie::jouer() { int t=0; plateau->afficher(j1, j2); int victoire=0; do{ t++; cout << endl; Plateau* p = new Plateau(*plateau); Coordonnees c; if (t%2==1){ if (j1->GetJoueEnPremier()){ cout << "tour de " << j1->Getnom() << endl; c = j1->choisirCase(p); plateau->marquer(c, j1); }else{ cout << "tour de " << j2->Getnom() << endl; c = j2->choisirCase(p); plateau->marquer(c, j2); } }else{ if (j1->GetJoueEnPremier()){ cout << "tour de " << j2->Getnom() << endl; c = j2->choisirCase(p); plateau->marquer(c, j2); }else{ cout << "tour de " << j1->Getnom() << endl; c = j1->choisirCase(p); plateau->marquer(c, j1); } } plateau->afficher(j1, j2); victoire = finPartie(); }while (victoire==0); plateau->afficher(j1, j2); if (victoire==j1->GetnumeroTour()) cout << "victoire de " << j1->Getnom(); else if (victoire!=-10) cout << "victoire de " << j2->Getnom(); else cout << "egalite" ; return victoire; }
void GraphicsScene::setupScene() { ballCollection.append(ball); ballCollection.append(ballRouge); ballCollection.append(ballJaune); ballCollection.append(ballVerte); ballCollection.append(ballDefault); ballDefault->setStop(false); QPen pen2(Qt::white,1,Qt::SolidLine); QRectF rect(0,10,976,652); addRect(rect,pen2); prisme->setPos( width()/2-prisme->getPixmap()->width()/2, height()/2-prisme->getPixmap()->height()/2); addItem(prisme); //prismeForme->setPen(QPen(QBrush(QColor("red")),2,Qt::SolidLine)); QPolygonF polygon; polygon << QPointF( width()/2, height()/2-prisme->getPixmap()->height()/2) << QPointF( width()/2-prisme->getPixmap()->width()/2, this->height()/2+prisme->getPixmap()->height()/2)<<QPointF(this->width()/2+prisme->getPixmap()->width()/2,this->height()/2+prisme->getPixmap()->height()/2); prismeForme->setPolygon(polygon); addItem(prismeForme); barPlayer->setPos(-barPlayer->getPixmap()->width()/2,( height()/2)-(barPlayer->getPixmap()->height()/2)); addItem(barPlayer); barIA->setPos( width()-barIA->getPixmap()->width()/2,( height()/2)-(barIA->getPixmap()->height()/2)); addItem(barIA); scoreManager->getScoreView2()->setPos(670,560); addItem(scoreManager->getScoreView2()); scoreManager->getScoreView1()->setPos(210,560); addItem(scoreManager->getScoreView1()); initBallBlanche(); timer = new QTimer( this ); timer->setInterval( 20 ); timer->start(); connect( timer, SIGNAL(timeout()), this, SLOT(actualiserScene()) ); timer2 = new QTimer(this); timer2->setInterval(1000); timer2->start(); connect( timer2, SIGNAL(timeout()), this, SLOT(refreshLine()) ); connect( barPlayer, SIGNAL(inactivite()), this, SLOT(stopScene()) ); connect( this, SIGNAL(finPartie()), this, SLOT(stopScene()) ); }
int main(int argc, char* argv[]) { /* INITIALISATIONS DES BIBLIOTHEQUES : IMG, SDL, TTF */ IMG_Init(IMG_INIT_PNG); SDL_Init(SDL_INIT_VIDEO); TTF_Init(); Message msgs[NOMBRE_MESSAGES]; initMessage(msgs); SDL_Surface *ecran = SDL_SetVideoMode(LARGEUR, HAUTEUR, BPP, SDL_HWSURFACE | SDL_DOUBLEBUF); /* Titre */ SDL_WM_SetCaption("Duck Hunt", NULL); /* Icone */ SDL_WM_SetIcon(SDL_LoadBMP("sprites/icon.bmp"), NULL); /* Initialisation des variables en rapport avec le temps */ Time temps; initTime(temps); srand((unsigned)time(NULL)); int modeJeu = 0; // Le mode de jeu. int modeMenu = 1; // Détermine la page du menu à afficher. Partie partie; partie.score = 0; partie.niveau = 0; Sprites sprites; Chien chien; Boutons boutons; initBouton(boutons); chargerImages(sprites, chien, boutons, "classique"); boutons.bouton[BOUTON_THEME_CLASSIQUE].actif = true; Uint8 *keystate = SDL_GetKeyState(NULL); SourisEvent sourisEvent; initSourisEvent(sourisEvent); initFichiers(); SDL_ShowCursor(SDL_DISABLE); menu(ecran, sprites, boutons, modeMenu, modeJeu, sourisEvent, temps, msgs, partie, chien); while (modeJeu != 0) { if (modeMenu != 0) { menu(ecran, sprites, boutons, modeMenu, modeJeu, sourisEvent, temps, msgs, partie, chien); } temps.currentTime = SDL_GetTicks(); partie.alreadyShot = partie.alreadyGetEvent = partie.alreadyClic = false; for (int i = 0 ; i < sprites.canardActifs ; i++) { shoot(sourisEvent, sprites.canard[i], partie, temps, modeJeu); if ((temps.currentTime >= sprites.canard[i].vitesseTime + sprites.canard[i].vitesse)) { mouvementsCanard(sprites.canard[i]); detectionBordsCanard(sprites.canard[i], partie, i); changementDirection(sprites.canard[i]); if(sprites.canard[i].etat == TOUCHED) { touched(sprites.canard[i], temps); } sprites.canard[i].vitesseTime = temps.currentTime; } if (temps.currentTime >= sprites.canard[i].vitesseAnimationTime + sprites.canard[i].vitesseAnimation) { switchSpriteCanard(sprites.canard[i]); sprites.canard[i].vitesseAnimationTime = temps.currentTime; } } if(partie.shots <= 0) { for(int i = 0 ; i < sprites.canardActifs ; i++) { canardSurvivant(sprites, partie, i); } } if (temps.currentTime >= chien.vitesseAnimationTime + chien.vitesseAnimation) { switchSpriteChien(chien, partie); controlesChien(chien, partie, sprites); ramasserCanard(chien, partie, sprites); chien.vitesseAnimationTime = temps.currentTime; ramasserCanard(chien, partie, sprites); } if(partie.relancer) { relancerPartie(partie, sprites); } if(partie.round >= 5) { if(finPartie(partie)) { if (testHighScore("scoresClassic", partie)) { modeMenu = 8; } else { modeMenu = 9; } } else { partie.round = 0; partie.niveau ++; initPartie(partie, sprites.canardActifs); partie.jeu = true; for (int i=0; i<sprites.canardActifs; i++) { initCanard(sprites.canard[i], partie); } initTableau(partie.tableauChasse, sprites); modeMenu = 6; } } if (keystate[SDLK_ESCAPE]) { modeMenu = 5; } if (temps.currentTime >= temps.timeFps + temps.fpsTime) { genererRendu(ecran, sprites, sourisEvent, partie, chien, msgs); SDL_Flip(ecran); temps.timeFps = temps.currentTime; } SDL_Delay(1); } libererImages(sprites, chien, boutons); SDL_Quit(); IMG_Quit(); TTF_Quit(); return EXIT_SUCCESS; }
void jouer(jeu *p) { int fin,mvmt,debut; fin=0; debut=0; Key saisie; while(debut!=3) { // Menu de départ debut=menu(p); if(debut==2) // Au cas ou la personne quitte des le debut exit(0); } ajouteValAlea (p); // Commence la partie avec un 2 ou un 4 sur la grille debutTerminalSansR(); while(fin!=2 && finPartie(p)==0) { affichage(p); saisie = lectureFleche(); if (saisie==KEY_DOWN) { // Si le joueur veut déplacer en bas mvmt=mouvement(p,0); if (mvmt>0) // Si il y a eu un deplacement alors on ajoute un 2 ou un 4 ajouteValAlea (p); clear_terminal(); } else if (saisie==KEY_RIGHT) { // Si le joueur veut déplacer à droite mvmt=mouvement(p,1); if (mvmt>0) // Si il y a eu un deplacement alors on ajoute un 2 ou un 4 ajouteValAlea (p); clear_terminal(); } else if (saisie==KEY_UP) { // Si le joueur veut déplacer en haut mvmt=mouvement(p,2); if (mvmt>0) // Si il y a eu un deplacement alors on ajoute un 2 ou un 4 ajouteValAlea (p); clear_terminal(); } else if (saisie==KEY_LEFT) { // Si le joueur veut déplacer à gauche mvmt=mouvement(p,3); if (mvmt>0) // Si il y a eu un deplacement alors on ajoute un 2 ou un 4 ajouteValAlea (p); clear_terminal(); } else if (saisie==KEY_ESCAPE) { fin=menu(p); //fin prendra la valeur retournée par menu qui vaudra donc 2 si lutilisateur veut quitter la partie } } finTerminalSansR(); clear_terminal(); if (gagne(p)==1){ // Si la personne gagne en atteignant le score voulu affichage(p); printf("\n "); color_printf(BLACK,WHITE,"C'EST GAGNE WE DID IT HOURRA, VOUS GAGNEZ UNE PATATE ! \n"); } else { // Si la personne perd lorsqu'elle n'a plus de case disponible et aucun mouvement faisable affichage(p); printf("\n "); color_printf(BLACK,WHITE,"GAME OVER \n"); } if (fin==2) { // Si l'utilisateur quitte volontairement a l'aide du menu clear_terminal(); printf(" "); printf("Vous avez volontairement quitté la partie !\n"); } }