Algorithme "main gauche" pour labyrinthe - C - Programmation
Marsh Posté le 11-05-2009 à 22:32:05
Mouais, erreur que tous les débutants sur cette planète et ailleurs ont fait : l'affectation en C est ==, pas =.
Edit: ouais et sinon ton algo pour créer le labyrinthe n'est pas terrible. À une époque, qui commence à être lointaine, j'avais fait un économiseur d'écran de ce type. L'algo de génération était un peu mieux foutu, du style :
Ça donne des résultats bien plus réalistes et scotchant à regarder.
Marsh Posté le 11-05-2009 à 22:40:42
Oui j'ai trouvé ce genre de trucs après mais comme j'ai dit, j'ai plus trop le temps...
je vérifie mes affectations/tests
SUPER ça marche
Merde c'était tout bête et je me suis cassé la tête tout le week end.
Merci beaucoup
Marsh Posté le 11-05-2009 à 22:46:08
on a le droit de faire un "while( (condition) || (autre condition) )" ?
ça ne semble pas marcher...
J'aimerai qu'il s'arrete quand il a fini maintenant ^^
Marsh Posté le 11-05-2009 à 22:48:37
Oui on a le droit. Le while() continuera tant qu'au moins l'une des deux conditions est vraie.
Marsh Posté le 11-05-2009 à 22:53:09
kwaio a écrit : on a le droit de faire un "while( (condition) || (autre condition) )" ? |
Effectivement, il ne termine pas non plus chez moi. Qui plus est pour éviter un segfault, il faut aussi changer la ligne 216 :
Code :
|
en
Code :
|
Marsh Posté le 11-05-2009 à 23:17:56
AH, oui, ça évite les points blancs ou verts, pas bête, merci.
J'ai essayé de bidouiller mon "tant que" y'a un probleme.
Je continue de potasser.
Marsh Posté le 12-05-2009 à 01:00:55
PAS moyen d'empécher la boucle d'etre infinie.
J'me suis planté où, cette fois ?
Marsh Posté le 12-05-2009 à 05:54:02
Arf, je vois que dans ton code tu ne gardes pas la trace des cases visitées. C'est clair que tu vas boucler dans des cas comme celui-ci :
────┐ |
Bon, j'ai vraiment que ça à faire en ce moment. Je viens de dépoussiérer mon code qui devait dater de 1998. L'algo utilise une méthode de backtracking récursive pour la construction et la recherche. C'est ce qu'il y a de plus simple.
Code :
|
Marsh Posté le 12-05-2009 à 19:45:07
C'est bien joli, et sympa, même mais je n'ai aucune envie de faire un copier/collé du travail d'un autre, ni même de m'inspirer de sa technique.
J'assume la médiocrité de la méthode, les irrégularités de synthaxe, je souhaite juste que ça fonctionne.
Ceci dit, j'ai rendu mon travail aujourd'hui =)
Marsh Posté le 12-05-2009 à 20:19:12
Arf, c'était pour un TP, je pensais que c'était pour le fun.
Sinon, par curiosité, comment as-tu résolu le problème de bouclage (si tu as eu le temps de le résoudre ) ?
Marsh Posté le 13-05-2009 à 15:00:27
J'ai aps eu le temps.
J'avais genre 3 devoirs à rendre pour le lendemain.
càd mon projet d'info plus deux autres travaux de groupes.
Donc j'ai encore le temps de réparer ça pour la soutenance, mais sinon j'ai rendu un programme qui se ferme tout seul une fois fini.
Marsh Posté le 11-05-2009 à 21:29:02
Voila.
On a pour projet de dévellopper un programme simple générant un labyrinthe, l'affichant(SDL) et le résolvant, sans critère d'optimisation.
Notre labyrinthe est dit "à ilots", c'est à dire qu'il n'a pas de chemin unique.
J'ai utilisé une structure de 4 integers de valeur 0 ou 1 :
laby.nord laby.sud etc...
puis créé une matrice de ceux ci.
Dans la génération je me suis débrouilé pour avoir les bords pleins à tout les coups et à éviter d'avoir des "doubles" murs.
probleme : au niveau du codage de l'algorithme, y'a un pépin : il ne passe pas dans certaines portes, et fini souvent bloqué...
EN particulier :
-S'il viens de gauche, il refuse d'aller au nord
-S'il viens de droite, il refuse d'aller autre part qu'à l'ouest
Je suis assez préssé par le temps et je n'ai plus vraiment le temps de revoir complètement ma structure du problème et j'aimerai juste faire fonctionner mon algo...
le code complet :
Suis conscient que la programmation n'est pas très catholique mais prenez ça comme l'oeuvre d'un débutant qu'a essayer d'imaginer le truc de A à Z seul... jusqu'à maintenant...
AU niveau de mon do-while je changerai la condition plus tard à un "tant que tu n'est ni arrivé ni revenu à la case 0,0"
J'vous en supplie, trouvez mon erreur...
Message édité par kwaio le 11-05-2009 à 22:13:01