Пример #1
0
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();
    }
}
Пример #2
0
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;
}
Пример #3
0
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()) );
}
Пример #4
0
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;
}
Пример #5
0
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");
		}
		

}