|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Alexandre Étudiant Inscription : décembre 2010 Messages : 44 ![]() |
Bonjour à tous !
Je dois développer pour mon université une application en C++ qui implémenterait l’algorithme A-Star ainsi qu'un Decision Tree, mais je n'ai aucune base en C++. Heureusement je connais bien le langage JAVA Concrètement, je souhaite créer des abeilles (de simples triangles) qui vont se déplacer vers des fleurs (certaines cases d'une grille) en utilisant l'algorithme A-Star, avec la librairie OpenGL. Je possède d'ors et déjà un main qui instancie ma grille, l'algorithme A Star (mais pas relié aux abeilles), ainsi qu'une classe myBee qui affiche une abeille. Ma question (Ouf Merci pour vos réponses éclairées je vous suis d'avance très reconnaissant
|
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 424 ![]() |
Salut,
Pour la création de petit projet en OpenGL l'utilisation de GLUT est un bon gain de temps. Âpres tu implante des callbacks :
__________________
________________________________________________ |
|
00
|
|
|
#3 |
|
Membre Expert
![]() Junior developer C/C++/Embedded system Inscription : juin 2010 Messages : 656 ![]() |
Bonjour,
GLUT n'étant pas maintenue depuis 1998, j'utilise pour ma part glfw pour créer un contexte OpenGL aisément. |
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 424 ![]() |
1998! sa donne un coup de vieux...
Bon en tous cas sa tourne bien sous mon 386
__________________
________________________________________________ |
|
00
|
|
|
#5 |
![]() ![]() ![]() Alexandre LaurentÉtudiant Inscription : mai 2008 Messages : 6 567 ![]() |
Bonjour,
Pour l'histoire de GLUT, c'est pour cela que maintenant nous conseillons FreeGLUT (mis à jour récemment, licence plus libre ...) Pour le problème de lightalex01, oui, vous pouvez faire de la sorte (avec la méthode updatePosition dans myBee). Mais vous pouvez aussi dire que ce serait l'algorithme A-Star qui bougerai les abeilles (en utilisant une fonction setBeePosition()). Ou alors, l'abeille pourrait questionner le A Star, pour récupérer la prochaine position et l'utiliser si elle le veut vraiment. Plusieurs choix son possibles.
__________________
Vous souhaitez participer à la section Jeux ? Contactez-moi ![]() La rubrique a aussi un blog ! Ma page sur DVP Mon Portfolio Qui connaît l'erreur, connaît la solution. |
|
|
01
|
|
|
#6 | |||
|
Membre à l'essai
![]() Alexandre Étudiant Inscription : décembre 2010 Messages : 44 ![]() |
Tout d'abord merci pour vos réponses !
Citation:
Code :
Merci d'avance pour votre aide ! |
|||
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Junior developer C/C++/Embedded system Inscription : juin 2010 Messages : 656 ![]() |
Ta fonction displayBee est un début correct.
Sauf que l'affichage de la grille ne devrait pas y figurer ! La fonction est là pour afficher une abeille, c'est tout. La grille doit être affichée par un moyen externe. Si tu regardes bien ce que tu as écrit, displayBee n'utilise aucune variable, ton abeille sera affichée aux même coordonnées à chaque fois. Commencer par créer ces variables de positionnement et les utiliser, puis ajouter des fonctions pour les récupérer et mettre à jour, me semblerait être un bon début que je préconiserais.
|
|
|
20
|
|
|
#8 |
|
Membre à l'essai
![]() Alexandre Étudiant Inscription : décembre 2010 Messages : 44 ![]() |
D'accord je vais commencer tout ça et vous donne des nouvelles
merci(Concernant "la grille" ce n'est pas vraiment ça que j'ai voulu faire ici, mais plutôt les axes X et Y de mon objet abeille) |
|
|
00
|
|
|
#9 |
![]() ![]() ![]() Alexandre LaurentÉtudiant Inscription : mai 2008 Messages : 6 567 ![]() |
Pour modifier la position de l'abeille, je pense que vous pouvez utiliser glTranslate()
__________________
Vous souhaitez participer à la section Jeux ? Contactez-moi ![]() La rubrique a aussi un blog ! Ma page sur DVP Mon Portfolio Qui connaît l'erreur, connaît la solution. |
|
|
01
|
|
|
#10 | |
|
Membre habitué
![]() Gilles Inscription : août 2011 Messages : 47 ![]() |
Citation:
De même, l'abeille ne doit pas avoir connaissance de l'algo a*, il faut un troisième élément qui mette tout ça en relation. Idem pour le code OpenGL, il ne doit pas se trouver dans la classe abeille. Si demain tu apsses sous d3d, tu dois modifier la classe abeille ? Quel est le rapport entre une abeille et d3d / opengl ? Message un peu dur, mais ne pas oublier les bases de la modélisation objet même quand on traite des projets plus "ludiques" (dans le sens affichage graphique et IA). Bien au contraire même, ça permet d'offrir/tester de multiples options beaucoup plus facilement. |
|
|
|
40
|
|
|
#11 |
![]() ![]() ![]() Alexandre LaurentÉtudiant Inscription : mai 2008 Messages : 6 567 ![]() |
Alors, je suis plus qu'entièrement d'accord avec vous (si cela était possible).
Mais c'est à lightalex01 de choisir s'il souhaite faire un design beaucoup plus beau ou juste intégrer son algo (pour expérimentation). Il peut aussi y avoir le cas de faire un premier essai puis de travailler sur le design. (Notamment, je me suis retenu de dire que le code OpenGL était maintenant déprécié, mais comme il est plus simple à utiliser, je n'ai rien dit). Finalement, comme je pense que la maitrise du code OpenGL n'est pas encore établit, essayer de faire une architecture plus poussée est un peu risqué (il faut un minimum de connaissances pour ne pas se planter dans de l'architecture mal construite à cause d'une mauvaise compréhension de la bibliothèque). Mais vous avez bien raison
__________________
Vous souhaitez participer à la section Jeux ? Contactez-moi ![]() La rubrique a aussi un blog ! Ma page sur DVP Mon Portfolio Qui connaît l'erreur, connaît la solution. |
|
|
11
|
|
|
#12 | ||||
|
Membre à l'essai
![]() Alexandre Étudiant Inscription : décembre 2010 Messages : 44 ![]() |
Bonjour,
Mon problème aujourd'hui (car oui je pense que je vais au moins en avoir un par jour Dans mon fichier "main.cpp" je déclare une matrix OpenGL : Code :
Hors quand j'écris le code suivant : Code :
Désole pour ces erreurs de débutant mais grâce à vous j'avance petit à petit dans ce projet que je ne maitrisais pas du tout
|
||||
|
|
00
|
|
|
#13 |
|
Membre à l'essai
![]() Alexandre Étudiant Inscription : décembre 2010 Messages : 44 ![]() |
Et je suis tout à fait d'accord avec vous LittleWHite et GPPro, mais il ne s'agit la que d'un petit projet pour mon université dans lequel nous sommes obligé d'utiliser OpenGL...
Je m'en tiendrai donc à une application mal modélisée mais qui implémente l'algorithme A-Star sur des abeilles. Merci de votre aide en tout cas ! |
|
|
00
|
|
|
#14 | |
|
Membre habitué
![]() Gilles Inscription : août 2011 Messages : 47 ![]() |
Citation:
Et n'hésite pas à justifier tes choix si tu as un rapport à faire avec le projet, histoire d'être sûr que le prof comprenne les choses (là aussi je parle d'expérience, ils n'en sont pas tous capables si tu le leur montres pas explicitement). |
|
|
|
10
|
|
|
#15 | ||
![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 2 904 ![]() |
Je plussois aussi.
Les bonnes pratiques de programmation et de conception objet ne servent pas uniquement à faire "plus joli" : ça permet de gagner du temps (meilleur compréhension de ce qu'on écrit car organisation du code plus logique, donc moins de bugs, évolutivité et maintenance plus facile) Pour t'aider un peu : Tu as les "objets" suivant dans ton monde : - l'univers, consitué d'une grille - les fleures, avec une position - les abeilles, qui ont une position Tu peux "diviser" tes abeilles en 3 sous-objets : - l'état de l'abeille (sa position dans ton cas) - l'affichage de l'abeille (dans lequelle tu mets les fonctions GL) - le déplacement de l'abeille (l'algo A*) Tu peux également ajouter des classes accessoires : position (x et y) et une "ruche" (une liste d'abeille) Au final, tu as les classes suivante : Code :
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur la programmation des GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. |
||
|
10
|
|
|
#16 |
![]() ![]() ![]() Alexandre LaurentÉtudiant Inscription : mai 2008 Messages : 6 567 ![]() |
Sinon, en résolution du bug cité précédemment, il faut réinitialiser la matrice (qui est une matrice modèle, car celle qui définit la position d'une abeille).
Pour ce faire, il faut utiliser glLoadIdentity(). Je commence à croire (disons que j'ai souvent douter dans ma vie) que faire un diagramme UML correctement, pour architecturer une application permet de coder plus vite car cela enlève les doutes que l'on a fasse à la page blanche de l'éditeur)
__________________
Vous souhaitez participer à la section Jeux ? Contactez-moi ![]() La rubrique a aussi un blog ! Ma page sur DVP Mon Portfolio Qui connaît l'erreur, connaît la solution. |
|
|
21
|
|
|
#17 | |
|
Membre habitué
![]() Gilles Inscription : août 2011 Messages : 47 ![]() |
Citation:
|
|
|
|
01
|
|
|
#18 |
|
Membre éprouvé
![]() Eric Inscription : décembre 2010 Messages : 254 ![]() |
Ça dépend des applications et du nombre de personnes qui travaillent dessus. Dès qu'on est plusieurs et/ou que l'application est un peu grosse, quelques diagrammes font un très grand bien. Personne n'oblige à utiliser UML pour modéliser la moindre POD attribut par attribut et la moindre séquence jusqu'au plus petit clic, mais quelques diagrammes sur les points les plus "chauds" aident au raisonnement et/ou à la communication.
|
|
|
00
|
|
|
#19 |
|
Membre Expert
![]() Jean-Bernard Inscription : mars 2007 Messages : 817 ![]() |
Pas toujours obligé de passer par UML. Un schéma basique sur une feuille suffit pour se remettre les idées en place.
|
|
|
10
|
|
|
#20 | |||
|
Membre à l'essai
![]() Alexandre Étudiant Inscription : décembre 2010 Messages : 44 ![]() |
Citation:
|
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com