begin process at 2012 05 27 20:55:22
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > TETRIS EN OPENGL/GLUT

TETRIS EN OPENGL/GLUT


 Information sur la source

Note :
9,67 / 10 - par 9 personnes
9,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Classé sous :tetris, jeu, opengl, glut, glut32 Niveau :Débutant Date de création :09/06/2003 Date de mise à jour :10/06/2003 22:24:54 Vu / téléchargé :8 289 / 926

Auteur : Funto66

Ecrire un message privé
Site perso
Commentaire sur cette source (31)
Ajouter un commentaire et/ou une note

 Description

Comme le dit le titre, c'est une version de Tétris réalisée avec OpenGL et GLUT. Pour ceux qui ont pas GLUT, j'ai mis glut32.dll dans le zip.
Comme CPPFRANCE est fâché avec mes JPEG, j'ai pas pu mettre de screenshot :-(
C'est un Tétris en couleurs, avec 7 types de pièces différentes.
On gagne 10 points par ligne faite et tous les 100 points le niveau augmente de 1 et le vitesse augmente.
Pendant le jeu, le type de pièce suivante s'affiche.

MISE A JOUR : 10/06/03
-J'ai arrangé 2 bugs : 1 qui permettait aux pièces de se traverser quand on les tournait, un autre qui posait problème avec le sens des nouvelles pièces, qui ne correspondait pas à la "preview"
-J'ai rajouté le mode "Pause", activable avec la touche P.

LES COMMANDES : -Flèche gauche/droite->décaler le pièce
                           -Flèche bas->accélérer la descente de la pièce
                           -Flèche haut->tourner la pièce à gauche
                           -ESPACE->Tourner la pièce à droite
                           -P->Pause
                           -ECHAP->Quitter
                           -ENTREE->Commencer le jeu/refaire une partie si on a perdu.

PS : donnez-moi vos meilleurs scores :)

Source

  • int main()
  • {
  • Download(zip);
  • }
int main()
{
   Download(zip);
}  

 Conclusion

Amusez-vous bien et, SVP, laissez des commentaires et une note, pour savoir ce que vous en pensez !  

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture GÉNÉRATEUR DE LIGHTMAPS À PARTIR D'UNE HEIGHTMAP
Source avec Zip CHARGER UNE DLL DYNAMIQUEMENT (PORTABLE)
Source avec Zip Source avec une capture [OPENGL] LOADER XPM: TEXTURES DANS L'EXE
Source avec Zip Source avec une capture LECTEUR VIDEO OPENGL
Source avec Zip Source avec une capture HEIGHTMAP OPENGL

 Sources de la même categorie

Source avec Zip Source avec une capture JEU DES CARTES par eapaceinfo
PROGRAMME DE JEU DE MPT par KerizGarmm
Source avec Zip Source avec une capture JEUX SERPENT par antho974
Source avec Zip Source avec une capture PENDU EN SDL par Damsou91
Source avec Zip STATE MACHINE MODIFICATION MATH BUCKHAM par billybones79

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture BESOIN D'AIDE ET D'AVIS POUR JEU ROBOT POUSSE-PUCK par Heyho
Source avec Zip ESSAI D'UN TETRIS AVEC OPENGL par anthonygiroud
Source avec Zip Source avec une capture TETRIS EN OPENGL par Stepharcher
Source avec Zip TETRIS OPENGL AVEC GLUT par neodante
Source avec Zip Source avec une capture TETRIS JEU AVEC OPENGL/GLUT par badrbadr

Commentaires et avis

Commentaire de Funto66 le 09/06/2003 15:33:06

Laissez des commentaires, plz !

Commentaire de albert0 le 09/06/2003 18:14:33

Heu baa C'EST EXELENT

ps: lol t'aurai du rajouter un peu de son :)))

Commentaire de AmK le 09/06/2003 18:24:02

super funto :) ;)

Commentaire de Funto66 le 09/06/2003 19:22:49

Merci beaucoup !!
10/10, je m'attendais pas à ça !
Ben si vous y tenez, je pourrais rajouter le son, mettre une image de fond et gérer le clignotement des lignes qui disparaissent.

Commentaire de Funto66 le 09/06/2003 19:42:14

Ah oui, j'ai oublié de donner les commandes : la flèche du bas accélère la descente de la pièce, la pièce la tourne à droite, la touche ESPACE tourne la pièce à gauche et les flèches déplacent la pièce à gauche/droite.

Commentaire de trinitacs le 09/06/2003 21:01:29

Je ne vois pas trop l'intérêt de opengl pour ce tetris mais bon.

Tu devrais améliorer la gestion de la fenêtre car quand on l'agrandi la zone d'affichage n'est pas modifié.

Le fichier define.h ça ne passe pas trop en C++. Utilise plutot const qui est beaucoup plus sur.

Les variable globales aussi tu peus les éviter et créant une une classe Tetris pour le jeu.

Commentaire de skone007 le 09/06/2003 21:51:15

bien qu'il soit tres bien j'ai reussi a trouver des defauts comme qd une piece est pose ds le vrai tetris on pe deplacer peu de temps apres le "posage" et le clignotement serai bien comme tu l'as dit enfin le 10 est meriter

Commentaire de Funto66 le 10/06/2003 14:34:52

JediMaster>> Merci beaucoup !
Trinitacs>> Merci pour avoir regardé la source et avoir fait des critiques constructives.
-OpenGL, c'est parce que le but n'était pas: "Tiens, je vais faire un Tetris", mais, "Tiens, pour apprendre OpenGL, si je faisais un Tetris ??"
En gros, c'est vrai qu'OpenGL n'est pas très utile, mais c'est ce que je sais utiliser, alors bon...
En +, le Tetris devait être portable.
-Pour les #define, c'est juste une question de goût. Et puis, je suis pas sûr, mais je crois que les variables const occuppent de la place en mémoire, et pas les #define, mais ça change pas grand chose.
-Pour les variables globales, c'est vrai que c'est pas top, mais je pense que c'est la solution la plus simple. Si on créait une classe Tetris, ce que ferait tout bon programmeur objet (pas comme moi :) ),
il faudrait soit utiliser des variables statiques, soit créer une objet Tetris... global. Ou alors encapsuler tout le programme dans la classe, façon Java, mais je sais pas si c'est possible, et, personnellement, je trouve que c'est compilqué pour rien, mais ce n'est que mon avis.

skone007>> Merci pour tes remarques. Je vois pas trop où est ton problème : j'ai testé, et on peut déplacer une pièce alors qu'elle vient juste d'être posée, ou alors tu me parles pas de ça ??

Commentaire de JCDjcd le 10/06/2003 16:47:59

Ton tetris est super !

Juste deux trucs :
les 'const' n'occupent pas plus de place que les variables qui ne sont pas 'const'.
'const' c'est juste pour le compilateur, pour dire que cette variable est une constante :
par exemple :
: const double Pi = 3.1415926535; // initialistation de pi
: Pi = 1.618;  // ici le compilateur rale car tu n'as pas le droit de changer la valeur de Pi.

Creer des globales ce n'est pas top !
Mais les remplacer pas des statics ce n'est pas top aussi !!!


Ce qui pourrait etre pas mal, c'est de centrer le plateau de jeu.


Sinon je dirait meme plus que dix est merité !
20/10 !!!!!!!!

(niveau 3 ???)

Commentaire de LordBob le 10/06/2003 20:12:55

ouais, bah moi comme tout le monde, bah je te felicite pour ce merveilleux tetris :)

Commentaire de Funto66 le 10/06/2003 22:27:25

LordBob>> Merci

Une mise à jour, correction de bug.

Commentaire de trinitacs le 12/06/2003 09:35:42

"Pour les #define, c'est juste une question de goût. Et puis, je suis pas sûr, mais je crois que les variables const occuppent de la place en mémoire, et pas les #define, mais ça change pas grand chose."

Les const utilises de la mémoire. Les define non car c'est le précompilateur qui va écrire leur valeur là où tu l'aura demandé.

Mais les define ne sont pas sûr. En effet tu peux très bien les redéfinir sans problème. Et là il y a des risques d'erreurs à l'éxécution sans que tu saches pourquoi. Alors que les constantes nommé ne peuvent être définie qu'une seule fois. En plus tu peux faire des passages par référence avec.

Donc les const sont bien plus sûr et efficace que les define et ce n'est pas juste une question de goût. C'est comme si tu utilisais les fonction fread fopen du C dans un programme C++ !

"Ou alors encapsuler tout le programme dans la classe, façon Java"
C'est justement ce que tu peux faire. Tu peux faire encore mieux. Tu créer une class Game qui sera le "root", celle qui englobe tout. Tu créer une autre classe tetris et quand tu appuye sur une certaine touche la classe game créera dynamique une classe tetris que tu placera dans une list avec la STL. Ainsi tu pourras jouer avec plusieurs tetris en même temps :)

Commentaire de Funto66 le 12/06/2003 15:32:35

"En plus tu peux faire des passages par référence avec"
Oui, mais ça sert à rien, puisque tu ne peux pas changer la valeur d'une constante, non ?
Sinon, tu marques un point, c'est vrai que si on redéfinit les #define, ça peut devenir compliqué, mais dans un petit programme simple comme mon Tétris, je ne redéfinit pas mes constantes.

"C'est comme si tu utilisais les fonction fread fopen du C dans un programme C++ !"
Je vois pas pourquoi ça serait pas propore de les utiliser, dans un programme objet, il faut bien que les méthodes des objets soient écrites dans un langage procédural, en l'occurence du C içi.

Pour ton idée de tout encapsuler, ça servirait pas à grand-chose de créer plusieurs Tetris en même temps mais ça serait fun. Je vois pas trop comment tu l'imagines; on ouvre plusieurs fenêtres qui communiquent, qui communiquent pas, dont le joueur doit changer de fenêtre active, pour faire un mode multijoueur, pour faire un défi de tenir avec lusieurs Tetris en même temps et d'ajouter les scores à la fin... euh, non, finalement, c'est pas si mal que ça comme idée :) !!
Qu'est-ce que tu en penses ? Je le fais ?

Commentaire de trinitacs le 12/06/2003 19:48:57

trinitacs: "En plus tu peux faire des passages par référence avec"
funto:"Oui, mais ça sert à rien, puisque tu ne peux pas changer la valeur d'une constante, non ?"
Avec un pointeur constant c'est utile. Il est possible de modifier une valeur constante avec de pointeurs.

"il faut bien que les méthodes des objets soient écrites dans un langage procédural, en l'occurence du C içi."
Quand tu fais une classe tu programme tes fonctions de celle ci en C++. Pour faire une sortie console tu utilises la fonction printf ou l'objet cout ? De plus quand tu surcharges une fonction c'est du C++ et quand tu fais des template également. Donc mélangé C et C++ c'est vraiement porcos.

"Je vois pas trop comment tu l'imagines; on ouvre plusieurs fenêtres qui communiquent, qui communiquent pas,"
La classe tetris contiendra une fenêtre. Tu définies une touche pour créer une nouvelle classe tetris et une autres pour détruire la classe courante.
La classe Game contiendra un champ:
list< Tetris > liste_tetris;
Ainsi tu pourras en rajouter sans problème.

Après pour jouer faut être rapide sur alt-tab :)

"pour faire un mode multijoueur"
C'est pas un mode mutlijoueur, mais multijeux :)

"Je le fais ?"
oui :)

Commentaire de maya75 le 21/06/2003 20:05:09

joli tetris, code propre et nickel, avec des commentaires utiles.
je suis pas encore un pro du C++ mais ça me paraît pas mal du tout.
10/10

Commentaire de RaphAstronome le 27/07/2003 17:41:13

int main()
{
     Download(zip);
}

Ca compille pas :-(

Serieusement je le trouve tres bien mais il faudrait :
- Ralentir un peu le jeu
- Pouvoir configurer les touches
- Mettre des images

Commentaire de cppdupdup34 le 28/10/2003 20:43:59

super impressionant
//peut etre c'est mon ordi mais g l'impression que ca va pas tout a fais a la meme vitesse (un chouilla) mais je crois que c'est moi qui suis fatigué
MENTION: Tres Bien

Commentaire de eldered le 05/02/2004 13:24:13

C très très bon ... jolie performance. C simple et très propre. Ton code va me servir pour m'initier à l'openGl ! Merci a toi ++

Commentaire de Funto66 le 23/04/2004 16:21:02

Oups j'avais pas vu tous ces commentaires après le 12/06/03 ^^
Merci à tous donc...:)
Sinon je ne pense pas améliorer mon Tetris; c'est un code qui commence à dater, c'est un souvenir maintenant, c'est sacré, et je le laisse tel quel...:)

Commentaire de FeelCode le 18/04/2006 07:55:20

pas encore tester mai l amise en reseau c'est pour quand ?
note i eiste deja un tetris qui ce joue a 6.
sinon bon boulôt :)

plus d'info la :)
http://www.tetrinet.org/


Commentaire de Funto66 le 18/04/2006 16:54:20

C'est pas prévu, comme je l'ai dit dans le commentaire précédent, c'est un souvenir auquel je ne touche plus...

Ceci dit merci pr ton post ^^

Commentaire de zwei le 22/03/2007 12:32:22

très bien fait Bravo.

une question cependant :

lorsque l'on déplace la fenetre, l'animation s'arrete.
n'y a t-il pas un moyen pour qu'elle continue meme quand on la déplace ?

Commentaire de Funto66 le 22/03/2007 13:20:03

Merci ^^ Ce Tetris fêtera bientôt son 4ème anniversaire...wah je me fais vieux :'(

Pour l'animation qui s'arrête quand la fenêtre se déplace (en fait je viens de tester, tout le jeu s'arrête...), c'est dû au fait que Display() ne soit plus appelée par GLUT pendant que la fenêtre est en train d'être déplacée.
Je pense que si le programme utilisait glutTimerFunc() pour appeler la fonction d'affichage en boucle toutes les X secondes (ce qui n'est tout de même toujours pas idéal comme système de timer, mais bien suffisant dans un cas comme celui-ci), on pourrait éviter ce problème ^^

Libre à toi de le faire si tu en as envie ;)

Commentaire de zwei le 22/03/2007 18:30:06

Désoler Funto66 mais ta solution ne semble pas marcher chez moi en tout cas :s

Commentaire de Funto66 le 23/03/2007 17:51:28

Tu as testé donc, modifié le code source tout bien comme il faut?

Commentaire de Funto66 le 23/03/2007 17:53:10

Ah et il ne faut pas oublier d'appeler glutSwapBuffers, et éviter d'appeler glutPostRedisplay je pense...

Quoi qu'il en soit, c'est pas vraiment une bonne idée de bidouiller le prog comme ça je pense, vu que GLUT n'est pas fait pour...

Sinon le mieux serait peut-être de le reprendre avec GLFW (comme GLUT mais mieux :)), qui ne pose peut-être pas ce pb...(à confirmer)

Commentaire de fifi6663 le 28/10/2007 06:32:11

bonjour les gens je suis debutant et j'ai une question sur ce jeu .... comment on le lance?

Commentaire de Funto66 le 28/10/2007 12:36:24

Tu dézippes tout dans un répertoire et tu double-cliques sur Tetris.exe...

Commentaire de max12 le 23/08/2008 18:55:03 administrateur CS 10/10

Très beau jeu :D Elle sera étudiée avec attention par ma personne :O

Commentaire de Funto66 le 23/08/2008 20:15:49

Merci :)

C'est un truc qui a tout de même 5 ans maintenant lol, donc y'aura des trucs pas très jolis au niveau du code à mon avis, vu mon niveau à l'époque...^^

Commentaire de max12 le 23/08/2008 21:43:41 administrateur CS

lol je n'avais point remarqué le date. J'avais fait un jeu de tetris aussi en Win32 GDI il y a pas mal de temps, quelqu'un l'avait repris et avait mis des graphiques et de la bonne musique mais malheureusement sa pointe vers un liens mort aujourd'hui :'( j'aimerais le retrouver. :P

Enfin bref, tetris power !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Pour 2d opengl/glut > ddraw ? [ par gimli123 ] Bonjour à tous, j'ai tester les 2, à savoir direct draw et opengl/glut, mais j'aimerai savoir si il y en as un qui est plus performant que l'autre et QT OpenGL FPS [ par xabila ] bonjour, voilà j'ai passé un de mes codes glut OpenGL sous QT et en fait je n'arrive pass à convetir mon calcule des fps qui étai OpenGL et Glut: saisie clavier [ par bluelambda ] Salut à tous ! Voilà j'ai fait un petit programme qui utilise OpenGL avec GLUT. C'est un programme très basique, avec juste une fonct probleme pour creer demineur en opengl avec glut (dev c++) [ par bat0001 ] Dans le cadre d'un projet en informatique, je dois faire un demineur avec une interface graphique avec opengl (glut). etant debutant en la matiere, je Opengl glut debutant menu graphique [ par gravel ] Bonjour, j'aimerais savoir comment on fais en opengl/glut pour faire afichier un image fixe. Je veux dire que si j'ai un screen en 800x600 et que j'm' Souris & OpenGL (Glut) [ par norton ] hello, j'aimerai afficher un bitmap à la position de la souris (au clique)pour ce qui est de l'axe X pas de prob mais en Y y a un ptit souci Curseur de la souris avec opengl/glut [ par mondrone ] comment faire pour rendre la souris invisible avec opengl et ou glut ? J'ai deja vu qu'on peut changer le curseur, mais pas qu'on peut soit mettre une Problème avec mon compilateur et OpenGL [ par deguelatore ] Bonjour a tous est voila mon problème:         Je programme sous DEV C++. Au début de mon progr Ecrire du text en OpenGL (sans glut) [ par Taranael ] Hello ! Bon je dois réaliser pour l'IUT un Serveur qui affiche la reconstitution d'un puzzle (gérée par un autre programme) et il faut SDL/Glut Direct3D/OpenGL ... [ par mondrone ] Je pense que certaines personnes ont deja du poser cette question, et si c'est le cas merci de m'indiquer le post en question car je ne l'ai pas trouv


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales