mardi 29 juin 2010

Gestion des véhicules

Enfin, le problème de la gestion des véhicules est résolu!

Enfin, quand j'aurais implémenté mon design que voici:



En effet, le souci, c'est que, comme beaucoup de gens, j'imagine, j'ai mes idées dans les endroits les plus ésotériques (c'est à dire dans les endroits où réfléchir est la chose la plus intéressante disponible). Je me précipite dès que possible donc sur un papelard pour fixer tout cela au clair.

L'idée principale, ici, c'est que chaque véhicule possède un chemin, et suit ce chemin sans discuter. Le chemin permet donc d'abstraire tout ce qui est en dessous: vitesse max, arrêts nécessaires, position des wagons pour les trains. Lorsque le véhicule arrive au bout du chemin, il peut alors demander au réseau (ferré ou routier, hein, pas le réseau de communications. Quoique...) comment, à partir de sa position actuelle, aller à sa prochaine destination. Le réseau fait tourner son petit Dijkstra (que je vais probablement préférer à A*, mais j'en recauserai), et renvoie un nouveau chemin que le véhicule peut apposer à son chemin courant. Et c'est reparti!

2 commentaires:

Kokuma a dit…

Que de souvenirs ! Ca me rappelle l'option tchoutchou à l'IIE !

Tout ça pour être désagréable et dire "mais s'il y a plusieurs véhicules, comment éviter les collisions ?". L'innocent novice n'ayant pas fait l'option tchoutchou me répondra le plus candidement du monde "Facile, il suffit de réserver le prochain tronçon que je vais emprunter !". Et là, le vétéran qui s'est déjà cassé les dents sur le problème de répondre "Aha ! Mais quid des problèmes deadlocks ?"

Enfin, je dis ça, mais les accidents de trains peuvent aussi offrir un spectacle intéressant aux vaches qui les regardent passer... Ou alors, la magie du clipping permet aux trains de se traverser sans dégâts :)

M87 a dit…

Une option que j'envisage est de gérer les trains à l'aide de signaux, installés par l'utilisateur. Si l'utilisateur deadlocke, tant pis pour lui :)

Pour les collisions, soit je laisse passer à travers (!), soit j'utilise ma belle bibliothèque géométrique et gère mes collisions wagon par wagon, ce qui pourrait permettre de beaux crashs!