cs_satellite34
Messages postés688Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention 2 juin 20061 23 sept. 2005 à 00:25
magnifique!
J' ai trop kiffé la teillére !
par contre ché pas si c'est moi mais les mouvements par rapport a la souris sont pas la ou peu cohérents
@+
ROOT_DIEU
Arkain
Messages postés31Date d'inscriptionjeudi 28 août 2003StatutMembreDernière intervention13 décembre 2003 23 sept. 2003 à 02:48
...pourquoi?
Maegis
Messages postés101Date d'inscriptionvendredi 15 février 2002StatutMembreDernière intervention 6 août 2007 16 sept. 2003 à 18:36
Une petite capture serait la bienvenue
Arkain
Messages postés31Date d'inscriptionjeudi 28 août 2003StatutMembreDernière intervention13 décembre 2003 7 sept. 2003 à 06:23
Ok, j'ai compris la. Je vais voir ce que je peu y faire.
Arkain
Messages postés31Date d'inscriptionjeudi 28 août 2003StatutMembreDernière intervention13 décembre 2003 2 sept. 2003 à 21:09
dsl, mais je ne connais pas la fonction mapping (je vient de l'apprednre grace a toi) et bon...bin patiente
gillig
Messages postés32Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 4 décembre 2003 2 sept. 2003 à 18:56
Je propose d'utiliser une table de correspondance touche->typeDeFigure, je trouve ça plus facile à lire (c'est plus concis), et aussi à faire évoluer :
- ajouter #include <string.h>
- ajouter une variable globale (puisque il y en a déjà...) : char mapping[256]; // 256=nb de valeurs possibles de l'unsigned char de la fonction Clavier
- dans l'init, ajouter l'initialisation de la table :
memset(mapping, 0, 256); // On remplit de zéros
mapping['w'] = 2; // correspondance touche -> type
mapping['s'] = 1;
mapping['x'] = 3;
mapping['d'] = 4;
mapping['c'] = 5;
mapping['f'] = 6;
mapping['v'] = 7;
mapping['g'] = 8;
mapping['b'] = 9;
mapping['h'] = 10;
mapping['n'] = 11;
mapping['j'] = 12;
etc...
- remplacer la fonction Clavier par :
void Clavier(unsigned char key, int x, int y)
{
if (key == 27) exit(0);
if (key == 'm') { z++; return; }
if (key == 'p') { z--; return; }
char res = mapping[key];
if (res) // on ne modifie le type que si la touche est dans la table
type = (int) res;
}
Arkain
Messages postés31Date d'inscriptionjeudi 28 août 2003StatutMembreDernière intervention13 décembre 2003 2 sept. 2003 à 01:11
Voila, le code est changé, mais je n'est pas encore eu le temps de changer le zip.
Arkain
Messages postés31Date d'inscriptionjeudi 28 août 2003StatutMembreDernière intervention13 décembre 2003 2 sept. 2003 à 00:46
Ok, je vais mettre 2 switch.
cs_Kaid
Messages postés949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 20061 1 sept. 2003 à 22:53
Donc mettre deux switchs est la meilleure solution.
cs_JCDjcd
Messages postés1138Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention25 janvier 20094 1 sept. 2003 à 22:52
Pour aller plus vite il faut faire :
if
else if
else if
...
else
car si type = par exemple 7, il ne vaut pas 12, forcement, alors pourquoi faire le teste ?
Arkain
Messages postés31Date d'inscriptionjeudi 28 août 2003StatutMembreDernière intervention13 décembre 2003 1 sept. 2003 à 20:33
Hum ok merci...mais bon, j'arrive plus a y voir clair quand c'est comme ça. Mais je peu changer le code si vous voulez. Quat au switch je n'y avait pas pensé!!
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 1 sept. 2003 à 20:19
utilise plutôt un switch pour définir quel objet dessiner. Comme ceci:
switch(type)
{
case 2:
glutWireTeapot(1);
break;
case 1:
glutSolidTeapot(1);
break;
//......................
default:
//dessiner l'objet par défaut
}
ce sera qd même plus court. Aussi, sache que pr toutes les instructions du genre if, else, for, while, ..., s'il n'y a qu'une instruction dans le bloc, les parenthèses sont facultatives, donc tu aurais pu mettre ceci:
tu peux évidemment mettre la condition et l'instruction sur la même ligne ( if(condition) instruction; )
voilà, je pense que c bon à savoir pr la clarté du code. Attention, une fonction qui n'a qu'une seule instruction doit qd meme etre limitée par des { }.
23 sept. 2005 à 00:25
J' ai trop kiffé la teillére !
par contre ché pas si c'est moi mais les mouvements par rapport a la souris sont pas la ou peu cohérents
@+
ROOT_DIEU
23 sept. 2003 à 02:48
16 sept. 2003 à 18:36
7 sept. 2003 à 06:23
2 sept. 2003 à 21:09
2 sept. 2003 à 18:56
- ajouter #include <string.h>
- ajouter une variable globale (puisque il y en a déjà...) : char mapping[256]; // 256=nb de valeurs possibles de l'unsigned char de la fonction Clavier
- dans l'init, ajouter l'initialisation de la table :
memset(mapping, 0, 256); // On remplit de zéros
mapping['w'] = 2; // correspondance touche -> type
mapping['s'] = 1;
mapping['x'] = 3;
mapping['d'] = 4;
mapping['c'] = 5;
mapping['f'] = 6;
mapping['v'] = 7;
mapping['g'] = 8;
mapping['b'] = 9;
mapping['h'] = 10;
mapping['n'] = 11;
mapping['j'] = 12;
etc...
- remplacer la fonction Clavier par :
void Clavier(unsigned char key, int x, int y)
{
if (key == 27) exit(0);
if (key == 'm') { z++; return; }
if (key == 'p') { z--; return; }
char res = mapping[key];
if (res) // on ne modifie le type que si la touche est dans la table
type = (int) res;
}
2 sept. 2003 à 01:11
2 sept. 2003 à 00:46
1 sept. 2003 à 22:53
1 sept. 2003 à 22:52
if
else if
else if
...
else
car si type = par exemple 7, il ne vaut pas 12, forcement, alors pourquoi faire le teste ?
1 sept. 2003 à 20:33
1 sept. 2003 à 20:19
switch(type)
{
case 2:
glutWireTeapot(1);
break;
case 1:
glutSolidTeapot(1);
break;
//......................
default:
//dessiner l'objet par défaut
}
ce sera qd même plus court. Aussi, sache que pr toutes les instructions du genre if, else, for, while, ..., s'il n'y a qu'une instruction dans le bloc, les parenthèses sont facultatives, donc tu aurais pu mettre ceci:
if(type == 2)
glutWireTeapot(1);
if(type == 1)
glutSolidTeapot(1);
if(type == 3)
glutWireSphere(1,50,50);
if(type == 4)
glutSolidSphere(1,50,50);
if(type == 5)
glutWireCube(1);
if(type == 6)
glutSolidCube(1);
if(type == 7)
glutWireCone(0.2,2,50,50);
if(type == 8)
glutSolidCone(0.2,2,50,50);
if(type == 9)
glutWireDodecahedron();
if(type == 10)
glutSolidDodecahedron();
if(type == 11)
glutWireOctahedron();
if(type == 12)
glutSolidOctahedron();
tu peux évidemment mettre la condition et l'instruction sur la même ligne ( if(condition) instruction; )
voilà, je pense que c bon à savoir pr la clarté du code. Attention, une fonction qui n'a qu'une seule instruction doit qd meme etre limitée par des { }.