Axe Posté 4 Janvier 2005 Posté 4 Janvier 2005 Bonjour, comment modéliser un tel* système de manière logique afin de l'intégrer dans une base de données ? * Suit un lien vers le domaine de gestion en question : il s'agit de chemins point à point, chaque point pouvant être d'un certain type, avoir certaines caractéristiques au-delà de son type (héritage), être un carrefour/point de liaison avec un ou plusieurs autres points. http://www.ffworld.com/?page=imageℑ=i...rier-expert.jpg Le lien ce-dessus pointe vers une image qui illustre le "sphérier" d'un jeu connu; à savoir que ce qui m'interesse n'est pas ce sphérier en question, mais il ressemble de près au système que je voudrais créer. Peut-être qu'une étude sur la modélisation des trajets de transport (ex : calcul itinéraires de bus/modélisation rues & arrêts, placement des lignes) pourraient m'être d'un certain secours ? Considérations techniques : j'ai l'habitude de la méthode Merise, et j'utilise MySQL/sqlite Merci pour vos éclaircissements
Axe Posté 5 Janvier 2005 Auteur Posté 5 Janvier 2005 Personne ? Même pas une petite ébauche de MCD ? :-( Où poster ce sujet ?
Anonymus Posté 5 Janvier 2005 Posté 5 Janvier 2005 En fait, pour faire une ébauche pour un projet tel que celui ci, il faudrait comprendre parfaitement le sujet. Savoir à quoi sert tel et tel point, connaitre la raison des traits entre les points, connaitre les réactions des uns par rapport aux autres, etc, etc. Autrement dit : Désolé, mais c'est un joli dessin. Qu'est ce qu'il fait ?
petit-ourson Posté 5 Janvier 2005 Posté 5 Janvier 2005 Idem j'ai rien compris au dessin. Ca revient à faire un mcd à partir d'un cahier des charges écrit en chinois.
Axe Posté 7 Janvier 2005 Auteur Posté 7 Janvier 2005 Peu importe ces considérations, la difficultés vient de l'organisation des chemins; j'improvise : réduisons la complexité des points à 2 caractéristiques : chaque point correspond à un type de point chaque point a une couleur simplifions la notion de chemins : les chemins entre les points sont tous de longueur 1 pas de différence entre les chemins courbes, ceux en ligne droite, etc. Comment modéliser cela pour permettre par exemple à un pion d'évoluer dans cette organisation, se déplacant de point en point en passant par les chemins ?
Anonymus Posté 7 Janvier 2005 Posté 7 Janvier 2005 Tu peux le faire avec un tableau, par exemple. C'est plus visuel, plus simple à appréhender qu'avec une base de données. Donc: Imagines une feuille quadrillée. Tu laisses en blanc tous les chemins, et tu mets en noir tout le reste. ll ne te reste donc plus que les chemins sur la feuille. Sur une autre feuille transparente, avec le même quadrillage, tu places les pions. Chaque pion doit être sur du blanc, donc doit avoir des routes d'où en venir, et où en partir. Tu te retrouves avec une simulation de carte routière. Celle ci dit : Pour le pion placé en F5, voir s'il y a une route en E4, E5, E6, F4,F6, G4, G5, G6. Imaginons qu'il y ait une route en E4, tu peux te déplacer par là, et rejoindre ainsi la ville, le pion suivant. Pour finir, il suffit de considérer, par rapport au blanc et au noir, que le blanc est initialisé à 1, et le noir à 0, et le tour est joué. Voilà (en gros...)
Axe Posté 7 Janvier 2005 Auteur Posté 7 Janvier 2005 (modifié) Merci Anonymous. Okay : étape 2 [!] Avec ce quadrillage, faire attention à ce qu'il y ait 1,n chemin(s) entre chaque point. Allons plus loin, je donne 2 propriétés aux points : couleur - enum('bleu','vert','rouge') importance - int Pour les chemins, si je leur donne une propriété longueur - int Je peux calculer la distance entre 2 points adjacents/limitrophes en prenant la longueur du chemin qui les sépare, ce chemin est une case entre ces 2 points. Je peux calculer la distance entre 2 points éloignés en additionnant la longueur de tous les chemins qui se trouvent entre eux. Calculer ici le chemin le + court ne m'interesse pas, si j'en ai besoin je ressors mes cours de maths et ne fait pas perdre de temps à mes lecteurs. Si jusqu'ici il n'y à rien à redire, tout le monde suit, que je n'ai pas fait d'erreur, je me permet de vous proposer L'étape 3 Complexifions la notion de chemins pour en permettre 6 types : horizontal vertical courbe/virage de gauche à haut courbe/virage de haut à droite courbe/virage de droite à bas courbe/virage de bas à gauche Arrêtons-nous ici pour cette fois; ce que je demande : 1- est-ce que ce que j'ai dit dans ce post est correct (étape 2) ? 2- y a t-il des moyens simples, des astuces à connaître, pour gérer ces chemins de traverse (étape 3) ? Merci Modifié 7 Janvier 2005 par Axe
Anonymus Posté 7 Janvier 2005 Posté 7 Janvier 2005 A priori, c'est comme ca que je ferais. Le tableau, bien contruit, te donne d'emblée l'étape 3. Pour une matrice A1 => C3 Si on ajoute ou soustrait 1, c'est une droite, Si on ajoute ou soustrait une lettre, c'est que l'on monte ou descend. Si l'on fait les 2, c'est que l'on prend une courbe. A noter que le php permet de faire des opérations mathématiques sur les lettres. Essaies : <? $lettre = "a"; $lettre +=5; echo $lettre; Devrait/doit t'afficher une lettre, d'un écart de 5 par rapport à la position actuelle de $lettre, par rapport donc à 'a'. Beaucoup plus facile pour la matrice
Axe Posté 9 Janvier 2005 Auteur Posté 9 Janvier 2005 J'ai préféré une matrice, un quadrillage numéroté plutot que des lettres, ça donne $M[$y][$x] Il a 3 types de cases : vides, un item, ou un chemin. Il y a 6 types de chemins : vertical, horizontal, et les 4 virages. J'en suis à calculer les possibilités pour un pion de se déplacer d'item en item par les chemins, bloqué sur une fonction récursive qui boucle à l'infini
Anonymus Posté 9 Janvier 2005 Posté 9 Janvier 2005 Pour ce qui est des lettres au lieu des chiffres, c'etait plus pour que tu aies une visualisation type 'bataille navale', pas pour que tu adoptes cette méthode, qui n'est pas adaptée, effectivement. Pour ta fonction récursive, tu peux la mettre, on verra ce que l'on peut faire
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant