logo

Mon TP3 sur les pointeurs (Robot)

C'est ici que vous posterez vos questions sur les pointeurs

Mon TP3 sur les pointeurs (Robot)

Messagede N4th » 05 Avr 2008, 15:48

Pour inauguré un peut le forum, je post le lien de mon TP sur le "robot" , je pense encore l'améliorer et surtout modifié un peut la disposition du code.

Donc si les personnes intéresser de le regarder pourrais donnée leurs impressions, cela m'aidera à progresser dans le codage ;)

Lien pour le code source (VC++)
Lien pour le .exe pour testé directement. OK
Dernière édition par N4th le 11 Avr 2008, 09:49, édité 1 fois.
N4th
 
Messages: 14
Inscription: 28 Mar 2008, 23:30

Re: Mon TP3 sur les pointeurs (Robot)

Messagede Tibo » 09 Avr 2008, 17:54

Ha, enfin un de mes élèves qui se lance ;)
Pour la source, je n'ai pas encore regardé, mais en tout cas, pour l'exe, il faut que tu change deux-trois trucs pour que ça marche chez tout le monde (perso, chez moi ça me fait "L'application n'a pas pu démarrer car sa configuration côte-à-côte incorrecte").

L'erreur est simplement due au fait qu'il manque des librairies de visual studio... Deux options :
- proposer aux personnes qui veulent tester ton application de télécharger vcredist_x86.exe qui installe toutes sortes de librairies (dont celles qu'il te faut)
- Utiliser l'option
Code: Tout sélectionner
Multithread (/MT)
(dans l'onglet C++ / option génération de code / bibliothèque runtime) pour inclure les librairies que tu utilises dans le .exe

Teste donc cette deuxième solution, je te dirais si ça marche !

Edit : En regardant de plus près ton .exe, je me suis rendu compte du problème : tu ne l'a pas compilé en mode "release" mais en mode "debug"... Change de mode, et reposte ton .exe, ça va corriger ton problème !
Tibo
Administrateur du site
 
Messages: 147
Inscription: 26 Mar 2008, 13:58

Re: Mon TP3 sur les pointeurs (Robot)

Messagede Tibo » 17 Avr 2008, 13:20

J'ai vu que tu avais mi à jour ton application ;)
J'ai moi aussi travaillé, et j'ai amélioré ton application grâce à OpenGL. Pour ceux qui prennent en cours, l'application est basée sur le TP 3 disponible ici : http://tibo.lelore.free.fr/IRIS/1Annee/Pointeurs/
J'ai du modifier deux trois trucs pour pouvoir afficher une fenêtre OpenGL. La première grosse modification concerne le main :
Code: Tout sélectionner
   fenetre f;//c'est notre fenêtre opengl...
   f.CreeGLWindow("jeu de robot", 800,600,32,false);
   Robot num1("R2d2",nivo); //créé notre robot
   f.initJeu(new Jeu(&num1),mur);//ajoute le jeu à la fenêtre
   ilutEnable(ILUT_OPENGL_CONV);
   ilutRenderer(ILUT_OPENGL);

Les deux dernières lignes permettent d'utiliser la librairie DevIL (qui permet de charger des images) avec OpenGL...
Ensuite, la fin du main permet d'actualiser la fenêtre en fonction des messages envoyés par Windows :
Code: Tout sélectionner
while(!done)// boucle jusqu'a la fin
{
// A t on un message en attente :
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
  if (msg.message==WM_QUIT)// A t on le message quitter?
  {
   done=TRUE;
  }
  else// Si non, on traite le message
  {
   TranslateMessage(&msg);
   DispatchMessage(&msg);
  }
}
else// Si il n'y a pas de message
{
  // Affiche la scene
  fenetre::actualiseTimer();
  f.dessiner();// Affiche la scene
}
}

Ensuite, le code de la fonction dessiner est très simple (mis à part la partie d'initialisation que je passe...) :
Code: Tout sélectionner
   glPushMatrix();
   //dessineAxe();
   jeu->affiche();
   glPopMatrix();
   SwapBuffers(hDC);

glPushMatrix() permet de sauvegarder la position de la caméra, et glPopMatrix() permet de recharger une position précédemment enregistrée... SwapBuffers(hDC) permet d'afficher ce qui a été calculé. Donc la seule ligne intéressante est jeu->affiche(); qui est une fonction que j'ai du aussi modifier :
Code: Tout sélectionner
string niveau="Energie du robot : "+to_string(robo->getNiveau());
glPushMatrix();
glColor3f(1.0f, 1.0f, 1.0f);
glText2d(600,250,niveau.c_str(),fenetre::fontIndex);
glColor3f(0.0f, 0.0f, 0.0f);
glPopMatrix();

Ces lignes permettent d'afficher un texte à l'écran (glText2d est une fonction que j'ai écrite, basée sur ce tutorial) avec en paramètres la position en x,y du texte, la chaine de caractère, ainsi que la font.

Ensuite, il faut afficher le plateau :
Code: Tout sélectionner
while (cpt<20){
   cpt2=0;
   while (cpt2<20){
      this->Plateau[cpt2][cpt]->getDescription();
      //on avance de 27.5 vers la droite :
      glTranslatef(27.5,0,0);
      cpt2++;
   }
   //on recule de 20*27.5 en x et on descend de 27.5 en y :
   glTranslatef(-20*27.5,27.5,0);
   cpt++;
}

Les seuls changements sont les glTranslatef qui permettent de déplacer le repère du dessin. Par contre, il a fallu modifier la fonction getDescription :
Code: Tout sélectionner
if(texture!=0)
   glBindTexture(GL_TEXTURE_2D,texture);
//on veux dessiner des triangles :
glBegin(GL_TRIANGLES);
//d'abord les coordonnées de la texture :
glTexCoord2f(0,0);
//puis les coordonnées du premier point :
glVertex3f(0,0,0);
glTexCoord2f(0,1);
glVertex3f(0,27.5,0);
glTexCoord2f(1,1);
glVertex3f(27.5,27.5,0);
//le deuxième triangle (pour faire un carré...)
glTexCoord2f(1,1);
glVertex3f(27.5,27.5,0);
glTexCoord2f(1,0);
glVertex3f(27.5,0,0);
glTexCoord2f(0,0);
glVertex3f(0,0,0);
glEnd();

Voici le code pour dessiner un carré sur l'écran avec une texture...
Grâce à ces modifications, il est donc maintenant possible de visualiser les changements sur la fenêtre.
Pour tester ça directement, l'exécutable est téléchargeable, sinon, les sources sont disponibles ici. Par contre, c'est uniquement les fichiers .cpp et .h, pour savoir comment créer un projet lisez ce post !
Tibo
Administrateur du site
 
Messages: 147
Inscription: 26 Mar 2008, 13:58

Re: Mon TP3 sur les pointeurs (Robot)

Messagede N4th » 17 Avr 2008, 21:34

merci beaucoup! je vais pouvoir continuer le codage avec une énorme amélioration! je posterai mon avancé sur ce TP qui devient maintenant un bon projet pour moi :p

( par contre l'archive avec l'exécutable à l'air de faire le même problème que j'avais : Compatibilité avec les pc qui n'ont pas VC++)
N4th
 
Messages: 14
Inscription: 28 Mar 2008, 23:30

Re: Mon TP3 sur les pointeurs (Robot)

Messagede Tibo » 19 Avr 2008, 21:14

Salut !
En effet, l'exécutable ne marche pas chez l'utilisateur lambda, c'est exactement l'erreur que tu avais faite. Je vais mettre la nouvelle version tout bientôt :-)
Ca y est, l'exécutable est mis à jour et devrait marcher ;-)
Tibo
Administrateur du site
 
Messages: 147
Inscription: 26 Mar 2008, 13:58


Retourner vers Les pointeurs

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron
Hit-Parade des sites francophones