Opengl - jeu de billard en 3d pas fini

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 571 fois - Téléchargée 22 fois

Contenu du snippet

Bonjour

le projet est trop lourd il fait 1.5mo au lieu de 1mo maximum
vous pouvez le télécharger sur mon ftp:
http://www.hacking.free.fr/paris8/continous_physic_billard.zip
(l'exe est dans le zip, il faut renommer le .ex_)

c'est un projet pour la fac qui m'a permis de bien avancer en opengl et en méca

la physique est gérée de manière continue

les librairies utilisées:
SDL
GL
glu
gsl (pour la résolution d'équations du 4ième degré)
glew (pour la lumière avec shader et les vbo)

il manque les choses suivantes pour en faire un super jeu de billard, mais je ne pense pas arriver au bout de tous ces problèmes:
- rajout des règles (8ball, snooker, billard français, ...)
- suppression du bug qui arrive parfois et qui fait sortir les boules de la table
- que la canne ne traverse plus les boules et la table
- permettre de faire sauter les boules avec la canne (le moteur physique peut déja les faire sauter)
- amélioraton du framerate et rajout de lumières, ombres mieux gérées...
- rajouter une gestion des collisions sur les forces et pas seulement sur la vélocité (c'est ça qui fait sortir les boules de la table ou bloquer le jeu parfois)

Source / Exemple :


// faire avancer la simulation de t secondes

int run_physic(Kbillard *b, Kreal t) {

    if (!b->nb_collision) {
        b->total_time += t;
        return 1; // s'il n'y a pas de boule
    }

    while(t > 0) { // on va avancer la simulation de t secondes

        int i = 0;
        Kreal breakpoint = b->collision[0]->t;

        if (breakpoint == -1) {
            return 1;
        }

        if (breakpoint > b->total_time + t) { // si ça va arriver dans plus longtemps que t alors on quitte
            b->total_time += t;
            actualiser_positions(b);
            return 0;
        }

        t -= breakpoint - b->total_time;
        b->total_time = breakpoint;

        faire_avancer_boule(b,b->collision[i]->a);
        if (b->collision[i]->type == BALL) {
            faire_avancer_boule(b,b->collision[i]->b);
        }

        traiter_collision(b);

        printf("%f\n", b->ball[0]->angular_velocity.y);
        getchar();

        actualiser_collisions(b,b->collision[i]->a);

        if (b->collision[i]->type == BALL) {
            actualiser_collisions(b,b->collision[i]->b);
        }
        trier_collisions(b);
    }

    actualiser_positions(b);
    return 0;
}

Conclusion :


il faut une carte graphique pour le faire fonctionner car j'utilise les shaders et les vbos !

ce n'est pas moi qui ai fait la table et la room je les ai piquées dans un jeu de billard :)

j'ai mis une version de gsl avec le .lib et le .a:
http://www.hacking.free.fr/paris8/gsl.rar

A voir également

Ajouter un commentaire Commentaires
bonjour, je peu avoir le bon lien pour télécharger svp
Messages postés
8
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
17 avril 2012

salut
je travaill avec 3dsmax8,et je ss entrain de modeliser qlq objets
mais j'ais besoin de connaitre la structure d'un fichier 3ds
ou on px trouver les dimensions et la position x,y,z
.....ect.
car je vx creer un base de données pour ces objets,donc j ais besoin de les fragmenter.
voila ce que je vx,donc si tu as qlq information ou documentation
sur la structur d'un fichier 3ds et le loader
j'ais vraiment besoin
merci

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.