UN CASSE-BRIQUE EN C AVEC OPENGL

Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 - 29 déc. 2003 à 00:59
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 - 6 janv. 2004 à 21:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/19052-un-casse-brique-en-c-avec-opengl

Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
6 janv. 2004 à 21:03
mdrrrr comme le msg est parti en live à la fin :D
Ceci dit je confirme ce qu'a dit Kirua ^^
Par contre, je remarque qu'il a oublié un truc : te donner la réponse lol :p
A mon avis, si tu n'arrives pas à compiler, c'est parce que ton compilo veut un main() en point d'entrée et que le programme lui fournit un WinMain() à la place; personnellement j'ai jamais touché à C++Builder (effleuré Kylix grand maximum ^^), j'utilise Visual C++, mais ça doit être similaire : cherche dans les menus une option qui se rapporte à ton projet, qui t'ouvre une boîte de dialogue où tu caractérises ton projet, et définis WinMain() comme point d'entrée au lieu de main().
Sinon, autre possibilité, tu peux essayer de remplacer WinMain() par un main() classique comme ça :

int main(int argc, char* argv)
{
HINSTANCE hInstance = (HINSTANCE)GetModuleHandle(NULL);
int nShow = SW_SHOW;
LPSTR lpCmd = "CasseBrique.exe";
// ... suite du programme

Voilà, bon courage ;)
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
6 janv. 2004 à 17:21
Borland C++ Builder 6 s'occupe de tout en background, tu ne dois pas gérer les fenêtres etc, et c'est aussi pour ça que je ne pense pas que ce soit une bonne chose de commencer par là. moi, c'est ce que j'ai fait, j'ai commencé avec Borland C++ Builder 5 en venant du PHP (pareil ;-)) et maintenant que je fais du "vrai" C++, càd en codant tout moi-même, je me rends compte de mes lacunes en théorie pure. je t'encourage à commencer par faire des applis consoles, des sockets quand tu mâîtriseras, à découvrir les joies de l'opengl et de tout ce qui fait le merveilleux monde du C++: open source, portabilité. (et vous aurez beau crier directx, les flots envahiront les locaux de la damnées méga soft, et les mers reculeront, et les cieux recouvriront la terre et les hommes, et alors sera votre douleur)

... j'ai eu cours de religion ajd, saleté !
largoce Messages postés 9 Date d'inscription samedi 27 décembre 2003 Statut Membre Dernière intervention 14 février 2005
6 janv. 2004 à 13:56
Bonjour,
Je suis toutout nouveau en prog C/C++ (je m'y connais bien mieux en php), raison pour laquel ma question va peut-être vous semblé ridicule:
Comment je fais pour jouer à ce jeux ?
Quand je clique sur le .exe, la page s'ouvre, la balle part vers la droite et hop, plus de jeux!!!
Je l'ai ouvert ouvert aussi sous dos, mais il me lance une nouvelle page qui se ferme une seconde après.

Sinon j'ai des problèmes avec mes #include
je m'explique.
Certain tut (http://www.cppfrance.com/code.aspx?ID=19154) de ce site propose des trucs avec par exemples:

#include <windows.h>

int STDCALL
WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
{...

Mais la fonction WinMain n'est pas reconnu lors de la compilation.
J'ai acheté la Bible de programmeur C/C++, 1500 astuces (je sais pas si ce livre est bien, sinon je suis preneur pour une référence) et j'ai également des erreurs.
J'ai la version entreprise Borland C++ builder 6
(version à l'essai télécharger sur le site de Borland je précise)
Si quelqu'un peut me dire où trouver les .h pour savoir s'ils sont bien là, et sinon ce que je dois faire pour avancer, et s'il y a une autre version mieux que celle que je possède (laquel possédez-vous ?)
Bein je C sa fait bocoup de Kestion.
Gros Merci d'avance pour ceux qui aurons la patience de me répondre, et bonne année à tous le monde.
cs_Lightness1024! Messages postés 162 Date d'inscription jeudi 15 mars 2001 Statut Membre Dernière intervention 1 avril 2005
5 janv. 2004 à 22:12
loul :)
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
5 janv. 2004 à 21:30
ahah lightness, on est à 4 en chat avec funto kelios et seb (il est pas d'ici je pense), et ils sont en train de causer de ton commentaire, kelios apprécie bcp mdr :-P
cs_Lightness1024! Messages postés 162 Date d'inscription jeudi 15 mars 2001 Statut Membre Dernière intervention 1 avril 2005
5 janv. 2004 à 21:13
je connais Kelios :)
il est bon faut avouer
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
5 janv. 2004 à 20:44
J'arrive ;)
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
5 janv. 2004 à 20:37
stp funto, connecte toi sur msn, j'ai un problème de mémoire (en C++ :-P)
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
5 janv. 2004 à 20:33
Ah sous Nux faut voir, à mon avis c'est plutôt de la Glibc; je m'avancerai pas plus sur ce point pour éviter de dire des conneries ^^
Si jamais quelqu'un a l'info, il est le bienvenu ^^
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
5 janv. 2004 à 20:27
dis, msvcrt alors c'est pour Microsoft Visual C++ Run Time, mais... sous linux alors ?
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
5 janv. 2004 à 20:06
Effectivement, GCC (MinGW32) utilise msvcrt.dll, crée à l'origine pour Visual C++. En fait, c'est ce qui permet certaines "features" du C++ : la Runtime Type information (je sais même pas ce que c'est lol je crois que c'est les dynamic_cast...etc que je sais pas utiliser :p), et, plus important : les new/delete ^^ En revanche, les malloc()/free() du C n'utilisent pas de runtime.
Enfin, tout ça d'après Kelios (un pote à moi) ^^
cs_Lightness1024! Messages postés 162 Date d'inscription jeudi 15 mars 2001 Statut Membre Dernière intervention 1 avril 2005
4 janv. 2004 à 18:10
j'en sais pas plus que toi.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
4 janv. 2004 à 16:57
quand je fais uen recherche rapide sur internet pour la C++ Run Time (CRT donc), j'obiens u ntas de réponses de la MSDN (VC++), est-ce que c rien qu'à eux? ou est-ce que d'autres compilos comme GCC par exemple utilisent également des RT? Et en quoi sont-elles ennuyantes?
cs_Lightness1024! Messages postés 162 Date d'inscription jeudi 15 mars 2001 Statut Membre Dernière intervention 1 avril 2005
4 janv. 2004 à 15:34
exemple: la CRT
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
4 janv. 2004 à 14:32
"un prog C est indépendant, alors qu'un prog C++ dépend de runtimes :/"

ah bon ??
cs_Lightness1024! Messages postés 162 Date d'inscription jeudi 15 mars 2001 Statut Membre Dernière intervention 1 avril 2005
4 janv. 2004 à 13:48
tout a fait.
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
4 janv. 2004 à 12:19
Ouais, encore que dans l'article dont tu parles le gars utilise des pointeurs de fonctions, alors qu'utiliser la fonction telle quelle permettrait de ne pas utiliser de mémoire inutilement, genre :
typedef struct
{
int membre;
} MaClasse;

void MaClasse_SetMembre(MaClasse* this, int valeur);
int MaClasse_GetMembre(MaClasse* this);

Ensuite, pour les templates, on pourrait utiliser des pointeurs void* pour désigner n'importe quel objet je pense.

Moi perso je commence à bien apprécier le C classique; si tu as fait de l'assembleur, tu peux "voir" ce qui se passe "derrière", tandis que le C++ t'éloigne de la machine... Enfin bon, C++ powa qd même ;) bien que, un prog C est indépendant, alors qu'un prog C++ dépend de runtimes :/
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
4 janv. 2004 à 02:45
tu peux coder en C objet. enfin, le C est structurel évidemment pas OO, mais il y a des trucs. va jeter un oeil du côté de developpez.com section C/C++ y a un article qq part à ce sujet.
cs_Lightness1024! Messages postés 162 Date d'inscription jeudi 15 mars 2001 Statut Membre Dernière intervention 1 avril 2005
3 janv. 2004 à 23:02
oui pour les variables globales, mais c HYPER pourri comme systeme.
d'ailleur un reset de RAM efface ces variables et je crois que j'avais lu ke ca pouvait poser des problemes cette methode.
je prefere largement un super format de fichier bien compliqué comme j'aime.
a propos c BOUM c t pas pour représenter un bug, mais mon Bourrainisme :)
et puis merci de me proposer ces libs, mais je programme plus sur TI j'aime pas bien le C sans classe ni templates, et sans véritable debuger puissant.
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
3 janv. 2004 à 22:13
pour info, il me semble que la démo était faite avec Direct3D 7.
Lightness1024! >> Ben oui justement c'est PreOS qui est installé sur ma VTI ^^ donc ça explique tout. Personnellement dans mon jeu j'utilise une librairie graphique, GraphX; le développement a été abandonné et y'a quelques bugs mais elle est bien pensée et faite par un français, donc la doc est en fr aussi :)
Effectivement tout mettre dans une seule fonction (et un seul fichier (!)), c'est pas génial...mais je pense pas que ce soit ça qui fasse bugguer; tout écrire dans 1 fonction évite l'appel à d'autres fonctions, donc toutes les manipulations relatives à la pile ^^ Donc au final ça accélère le jeu. Si jamais ça t'intéresse encore, dans GraphX y'a des fonctions de timer, et il me semble qu'elles sont indépendantes de GraphX (pas sûr). Pour l'écriture dans des fichiers, je suis pas sûr que c'était nécessaire : les variables globales gardent les mêmes valeurs entre 2 utilisations du programme si je me souviens bien.
Stepharcher >> désolé de s'éloigner du sujet principal...:D
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
3 janv. 2004 à 14:21
j'ai regardé la démo jusqu'à la dernière seconde, (en fait non, puisque après avoir lu tout leur blabla sur les Das Saints et machin ça se met en mode infini j'ai l'impression) et je suis vrmnt trop impresionné O_o 64Kb... même pas, 63,5! c complètement dingue. ça doit être excellent de participer à une "party" de programmation, chez moi je connais un programmeur qui habite assez loin, mais pr le reste rien que dalle, c lourdo :-(
cs_Lightness1024! Messages postés 162 Date d'inscription jeudi 15 mars 2001 Statut Membre Dernière intervention 1 avril 2005
3 janv. 2004 à 00:37
funto66>
d'abord je tient a te dire ceci: :)
ensuite cela:
en effet je crois que j'ai remarqué un effet de lenteur aussi dans certains conditions. je ne sais plus trop quand, ca devait etre avec certains kernels bien particuliers. dans mon souvenir le jeu marche bien avec universal OS, et TeOs (mais je suis plus tres certain). PreOs ca rame je crois.
Enstein ca marche. sauf gros gros bug ki delete la table des fichiers et ki formatte toute la calculette si on arrive a la fin du jeu, et qu'on recommence une partie a partir du profil enregistré. je déconne pas.
c arrivé a un pote il etait content. enfin fo dire ke j'avais pas prévu cette éventualité dans le code; mais ca foire qu'avec Einstein (enfin j'espere).
bref toute facon si ca rame c parce que je l'ai mal foutu ce jeu, je savais pas utiliser les timers le temps est géré par une boucle de ralentissement.
le code est trop gros, j'ai hardcodé les positions des ennemis pour chaque passe, les menus sont implémentés dans la fonction main..
enfin bon plein de choses quoi.
en fait, la raison est simple.
j'ai programmé ce jeu comme je faisait mes anciens jeux en QBasic.
tout dans un module et dans une fonction: BOUM !
faut etre indulgent, c'etait mon premier jeu dans le langage C.

beacoup de choses ne sont pas a reprendre dans le code de ce jeu :(
enfin bon certaines peuvent être interressantes, comme l'utilisation des flags, l'ecriture dans les fichiers (profils...) la maniere de faire des menus...

c'est dommage pour le gros bug de la reprise de profil apres la victoire; car c'est un des jeux les plus stables qui existent sur TI.
jamais personne pourra le faire planter par un débordement d'utilisation. pour la bonne raison que rien n'est dynamique.
(ben oui a l'epoque je maitrisait pas malloc)


pour la démo, oui, c'est the product. fait par la team d'Allemands farbrausch consumer je crois.
en effet ca commence a etre connu, elle date de qq années déja et a tellement été une réussite en matiere de demo technologique qu'elle fait maintenant office de vitrine aux textures prodédurales.
cppdupdup34 Messages postés 212 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 13 mai 2006
2 janv. 2004 à 21:22
au fait funto pour ton jeu ti tu m'a toujour pas aidé :-)
bref le casse brique est pas mal
en tout cas la gestion des collision est bien faite ce que j'avais abandonné

pour les niveaux c'est vrai qu'il y en a pas mal mais ce serait encore mieu si il y avait un editeur ;-)
aller travaille bien
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
2 janv. 2004 à 15:57
Kirua >> En fait pour voir le défaut j'ai juste fait quelques dessins ^^

Tiens c'est marrant Lightness1024!, j'utilise la même technique du tableau/texture dans mon jeu sur TI que je suis en train de faire ^^.
Je viens de télécharger ton jeu et les sources qui vont avec; c'est bizarre mais le jeu est trop lent sur VTI :( Je pense que je vais étudier les sources, y'a plein de trucs intéressants ;)

Le démo, c'est The Product, non? Elle commence à être connue, j'en entends parler de partout ^^ C'est vrai que c'est super bien fait...
cs_Lightness1024! Messages postés 162 Date d'inscription jeudi 15 mars 2001 Statut Membre Dernière intervention 1 avril 2005
2 janv. 2004 à 11:40
non c'est pas du tout comme tu penses.
le tableau il existe en effet. mais il n'est pas rempli de contantes, il n'est pas hardcodé, il est déclaré dans la fonction de création des textures prodécurales, et c'est bien de le créer dynamiquement. (new et delete)

le remplissage du tableau se fait par algorithmes, des boucles et des fonctions mathématiques pour créer les couleurs que l'on veut.
pour une balle il suffirait d'implémenter la technique dont tu parles au dessus, mais pour remplir un cercle sur une image, pas pour en créer 100 polygones. une fois ce tableau créé on le passe a OGL ou DirectX pour lui dire que c'est une texture.

c'est ce qu'on appelle une texture procédurale. elle ne prend que la place du code qui la créer (par exemple 240 octets pour un algo d'une 10aine de lignes qui peut créer une texture 2048*2048*24bits) tu vois un peu la compression et la beauté du concept !
connais tu cette démo ?
http://membres.lycos.fr/Lightness1024/fr08v101.exe
(sert a rien de zipper, c icompressible)
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
1 janv. 2004 à 21:56
textures procédurales? raconte. parce que si c comme je le pense créer une texture OpenGL (ou autre en fait) sans charger les données d'un fichier, ben les données sont (forcément) ds un tableau, et donc ça revient à ça.
cs_Lightness1024! Messages postés 162 Date d'inscription jeudi 15 mars 2001 Statut Membre Dernière intervention 1 avril 2005
1 janv. 2004 à 21:01
berk, j'aime pas ca moi non plus.
(c'est pas parce que je l'ai fait pour envahisseurs de l'espace (voir ici: http://ti89clairnet.free.fr/jeux1.htm jeu "EnvEsp" en bas de la page)
que je le referait un jour ! de plus j'avais une excuse c'etait sur TI)

mais pense aux textures procédurales, c'est mieux que les fichiers externes, que les 100 polygones et que le tableau hardcodé.
les demomakers utilisent ca dans leurs presentations 64 ko.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
1 janv. 2004 à 17:21
ben, c'est finement observé funto, je sais pas si tu as testé le code ou compris en le lisant, mais c'est en effet le défaut de cette méthode. son avantage c'est d'être très simple.

pour les 100 polygones, c'est bien pour ça que j'ai mis une déclaration avant les calculs, pour que tu puisses affiner au besoin (tu peux très bien commencer le jeu avec une valeur basse et monter tant que le taux de FPS est bon, ainsi tu profites au mieux de la puissance du PC).

moi ce que j'aime bien pr un petit programme, c'est d'avoir un exe autonome, et donc j'essaie d'éviter les textures, c'est pr ça que je "dessine" sur le moment. et puis avec les display lists c'est rapide.

autre chose, tu pourrais me dire que je pourrais créer la texture dans le programme, à l'aide d'un tableau que je copie/colle dans un fichier cpp à part, c vrai que ça dérangerait pas, ça tue pas la propreté du code puisqu'un simple commentaire expliquerait bien, mais moi, j'en veux pas, nah :-P j'aime pas les gros tableaux de constantes. tcheuh qu'c'est con et borné un amateur :-D
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
31 déc. 2003 à 16:00
Kirua >> Tiens, je la connaissais pas ta méthode ^^ Mais elle a quand même un défaut : les points sont plus espacés les uns des autres sur le cercle plus on s'approche des bords gauche et droite du cercle, à cause du fait que tu fasses x += (rayon*2.0)/(vertices/2.0)) : tu incrémentes x avec une constante : les points sont également espacés si on les reporte sur l'axe des abscisses mais pas sur le cercle (ou le demi-cercle plutôt). En revanche, avec la méthode qui utilise la trigonométrie, c'est l'angle qui est incrémenté, donc les points sont régulièrement espacés tout au long du cercle. L'idéal je pense serait (si on oublie la méthode texture+quad...), pour tracer un cercle soi-même, de faire trigo + display lists (au fait, ton lien a l'air sympa :))
cs_Lightness1024! Messages postés 162 Date d'inscription jeudi 15 mars 2001 Statut Membre Dernière intervention 1 avril 2005
31 déc. 2003 à 01:07
tout à fait vrai pour la formule kirua, mais bon faire 100 polygones pour afficher une petite balle, ben euh...
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
31 déc. 2003 à 00:57
dites, pr faire un cercle moi je préfère utiliser l'équation du cercle qui est (si on admet le centre du cercle en (0,0) ce qui est très pratique en OpenGL, surtout si on inscrit le tout dans une Display List):

x² + y² = r²

ou x et y sont les coord. du pt à déterminer et r est le rayon du cercle. dans une for tu peux faire ça: *va rechercher son code*

//extrait de ma simulation de gravitation sur ce site, main.cpp

/* création de la Display List des corps */
int id = glGenLists(1);
float vertices = 100.0f; //nombre de vertices par cercle (doit être divisible par 2)
float rayon = 0.5f; //rayon du cercle représentant le corps
glNewList(id, GL_COMPILE);
//génération de vertices à partir de l'équation simple d'un cercle: x² + y² = r²
glBegin(GL_POLYGON);

for(float x = -rayon; x <= rayon; x += (rayon*2.0)/(vertices/2.0))
glVertex2f(x, sqrt(rayon*rayon - x*x));
for(float x = rayon; x >= -rayon; x -= (rayon*2.0)/(vertices/2.0))
glVertex2f(x, -sqrt(rayon*rayon - x*x));

glEnd();
glEndList();
/* fin de la display list */


y a un tas de parenthèses qui compliquent la lecture dsl pr ça, mais faut pas être un matheux pr comprendre ça ira je pense.

pour les Display List en OpenGL, je te conseille ce site: (c'est là que j'ai lu comment faire, c'est bien fait)

http://www.lighthouse3d.com/opengl/displaylists/


voilà, bien amicalement,

Kirua


PS: le png supporte le 32 bits, c'est juste internet Explorer qui en veut pas, merci à funto pr cette info

à vecchio56: déclarer les fct ds le .h c'est très avantageux, tous les cpp qui incluent l'en-tête profitent des routines, pratique. et déclarer les fct ds un .cpp c'est contradictoire je trouve :-P
cs_Lightness1024! Messages postés 162 Date d'inscription jeudi 15 mars 2001 Statut Membre Dernière intervention 1 avril 2005
30 déc. 2003 à 15:52
lol :)
oué ta raison, et en effet TGA c pas mal aussi (mais c pas palétisé 256 bits ? parce ke j'aime pas trop les palettes en general)

en effet pour le loader c pas ce qu'il y a de plus simple etant donné que le format est compressé. mais moi j'utilise DirectX donc toutes ces fonctions je les aient, donc pas besoin de les chercher ou de les faire moi meme.
pour ca que je prefere le png: compressé, choix entre 24 bits ou palette ou noir et blanc...
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
30 déc. 2003 à 00:56
ah ben oui chuis con, c'est vachement plus simple, rapide, logique, efficace....je sais même pas pourquoi je l'ai pas dis, j'étais embarqué dans mon truc lol
Ben voilà il a raison, bien sûr c'est beaucoup plus facile, mais ce que j'ai dis est valable aussi ! Pour la texture, j'utilise personnellement le format TGA, mais le PNG est très bien aussi, seulement j'ai pas de loader PNG ^^
cs_Lightness1024! Messages postés 162 Date d'inscription jeudi 15 mars 2001 Statut Membre Dernière intervention 1 avril 2005
29 déc. 2003 à 14:43
funto66 ca ne se fait pas ce que tu dis !

on fait des sprites carrés avec une texture avec channel alpha.
comme le format png par exemple.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
29 déc. 2003 à 13:56
Stepharcher pourquoi tu définis la plupart de tes fonction dans des fichiers .h et pas .cpp?
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
29 déc. 2003 à 12:33
vecchio56 >> C'est normal que la balle rebondisse comme ça pour un casse-briques : plus elle rebondit vers le bord de la raquette, plus l'angle est grand, c'est ce qui permet de viser un endroit.
Stepharcher >> Pour créer un rond sous OpenGL tu peux soit utiliser une sphère en 3D avec les fonctions de GLU (Cf les quadrics, ils en parlent dans un des tutoriaux de http://glinfrench.apinc.org), soit tu te le dessines toi-même en utilisant la trigonométrie :

#define CONSTANTE 0.31415 // Je suis pas inspiré par le nom....
// tu peux mettre une autre valeur
#define RAYON_BALLE 1.0
#define MON_PI 3.1415
unsigned int i;
glBegin(GL_POLYGON);
for(i=0 ; i<2*MON_PI ; i+=CONSTANTE)
{
glColor3f(1.0, 0.0, 0.0); // Ou autre chose, on s'en fout
glVertex2f(sin(i)*RAYON_BALLE, cos(i)*RAYON_BALLE);
}
glEnd();

Voilà, je pense à un truc comme ça, mais ce code n'a pas été testé, et les fonctions sinus et cosinus sont lentes, en général on optimise en créant des gros tableaux faisant correspondre à un index le sinus ou le cosinus correspondant....mais dans ton cas je pense pas que ça ralentisse beaucoup ;) D'ailleurs, si tu veux faire un dégradé sur ton cercle, tu pourrais aussi changer les valeurs passées à glRotatef() durant la boucle, selon le compteur ;)
Stepharcher Messages postés 117 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 8 septembre 2008
29 déc. 2003 à 11:44
La raquette diminue d'un quart à chaque niveau donc la difficulté est croissante...
Si vous trouvez que le jeu est trop dur, il suffit d'aller dans le main.h et de changer la vitesse du jeu.
C'est vrai qu'une balle carré c'est pas génial mais le problème est que je ne sais pas faire d'objet rond en OpenGL... Lorsque j'y arriverais en utilisant des librairies standart, je ferais une mise à jours de mon programme !
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
29 déc. 2003 à 11:01
La balle rebondit un peu bizarrement sur la raquette (peut-être parce qu'elle est carrée?)
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
29 déc. 2003 à 01:04
Juste 2 trucs, le C c'est bien, le C++ c'est mieux ;)
Je suis arrivé au niveau 2, mais c'est dur qd même ^^ (ou alors c'est moi qui suis mauvais, c'est très probable :p)
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
29 déc. 2003 à 00:59
Le code est clair, lisible, indenté, commenté, le jeu est coloré et esthétique, simple, rapide (une seule vie, et on meurt vite :p), j'aime beaucoup, je te mets 10 ;)
Rejoignez-nous