Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Mon premier Projet  (Lu 1237 fois)

0 Membres et 1 Invité sur ce sujet

Umbre

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Mon premier Projet
« le: Mai 06, 2016, 01:53:19 pm »
Bonjour!
Je suis assez heureux car je viens de finir mon premier programme : un Tetris! Je sais que c'est pas grand chose, mais comme je partais de zéro tant pour la SFML que pour la programmation en général... J'ai vraiment galéré :P Il ne fonctionne pas trop mal, seulement j'ai parfois des bug avec les évènements, notamment lorsque je ferme la fenêtre en cours de jeu. De plus j'ai l'impression que tous mes quads ne s'affichent pas exactement au même moment lorsqu'une forme descend...

Voici la boucle de jeu :
  while(fenetre.isOpen())
    {
        while(fenetre.pollEvent(evenement))
        {
            if(evenement.type == sf::Event::Closed) fenetre.close();
            if(evenement.type == sf::Event::KeyPressed)
            {
                if(evenement.key.code == sf::Keyboard::Down ) F.deplacer(bas);
                if(evenement.key.code == sf::Keyboard::Left ) F.deplacer(gauche);
                if(evenement.key.code == sf::Keyboard::Right) F.deplacer(droite);
                if(evenement.key.code == sf::Keyboard::Up   ) F.tourner();
            }
        }
       
        if (!perdu)
        {
            chrono += horloge.restart();
            if(chrono.asMilliseconds() > VitesseJeu.asMilliseconds())
            {
                chrono = sf::seconds(0);
                bool dormir=false;
           
                if(F.stop())                                        // Si la forme actuelle est stoppée dans sa descente
                {
                    F.liberer();
                    score += supligne(map);                         // Supprimer les lignes complètes et faire descendre tous les carrés supérieurs
                    S_score = std::to_string(score);
                    LeScore.setString("Score : " + S_score);
                    VitesseJeu = sf::milliseconds(600 - score);
                    F = forme(map, VA);                             // créer une nouvelle forme qui remplace l'ancienne
                    if(F.chevauche()) perdu =true;                  // Si elle chevauche un carré existant, fin du jeu
                    F.afficher();
                    dormir =true;
                }
            if(!dormir) F.deplacer(bas);
            }
        }
       
        fenetre.clear();
        fenetre.draw(VA);                                           //Afficher le VertexArray contenant tous les carrés
        fenetre.draw(LeScore);
        if(perdu)fenetre.draw(T_perdu);
        fenetre.display();
    }
 
Est-ce que ma boucle d'évènements est correcte selon vous?