Simulateur de train

Bonjour à tous,

Je souhaite développer un petit programme pour simuler un réseau de trains.

L’idée serait d’avoir une interface graphique pour la construction du réseau (le positionnement des voies et des feux) et pour l’animation (les trains qui roulent en faisant tchoutchou). Bien évidemment, toute la gestion des trains se fait automatiquement selon des principes simples (feu rouge : le train ne passe pas, feu vert il peut passer, un tronçon de voie est occupé si un train est dessus et donc un autre train ne peut pas y rentrer…), il faudra donc pouvoir lier les éléments graphiques les uns aux autres (un aiguillage avec un feu). De la même façon, chaque élément de voie doit pouvoir avoir des informations de longueur, de vitesse, ou autres. Et les trains auront aussi des caractéristiques du type accélération, vitesse max, etc.

Pour la représentation je voudrais quelque chose d’assez simple du genre :

Et j’imagine bien chaque élément de voie placé à la souris à partir d’une barre d’outil, et modifiable en faisant un double clic dessus. On paramètre tout le bouzin et on regarde comment ça tourne.

Voilà pour l’idée.

Maintenant mes connaissances en programmation sont plutot bonnes en visual basic, mais pas trop en C, C++, C# ou autre, ni en programmation orienté objet (j’ai quand même quelques bases). Et je peux apprendre :slight_smile:

Je voudrais savoir quel langage de programmation et « logiciel » de développement seraient les mieux adaptés pour ça. Surtout pour la partie graphique. Et tout ça doit pouvoir tourner sur un PC avec windows.

Merci d’avance :crying:

Java ou C#. Avec une nette préférence pour Java car plus rapide à apprendre, plus “propre” en terme de programmation objet et surtout disposant de beaucoup plus de bibliothèques et d’outils gratuits que le C#.

Celà dit, démarrer un projet tel que le tien avec un nouveau langage, ça ne va pas se faire en deux jour.
Tiens, pour démarrer du bon pied avec Java: http://java.developpez.com

Etant donné que tu connais déjà VB… VB.net me semble plus simple à aborder que Java à apréhender…

J’avais zappé ce point. La giraffe a raison.

Ah bon?

Java étant plus vieux il a effectivement un grand nombre d’outils gratuit. Mais pour le cas qui nous intéresse, je ne suis pas sur de voir quel est l’intérêt de parler de ça ici? La communauté .NET s’est aggrandi, il y a un gros paquet de projet gratos aussi, et les technos fournis de base comme WPF ou même XNA permettent de faire du « qui shine » proprement et rapidement.

Bref désolé, je ne voulais pas relancer un nième débat, mais ça sent quand même le troll ces deux remarques. Perso j’utilise les deux technos au jour le jour, donc qu’on ne m’accuse pas d’être partial :slight_smile:

Dans le cas qui nous intéresse le mieux est de toutes façons le VB.net vu les connaissances VB que possède King Kaa.

Pour le reste, et bien que mon avis ait été un peu lapidaire, je suis prêt à expliquer le pourquoi de mon opinion (fondée elle aussi sur une pratique professionnelle quotidienne des deux langages en question). Mais il va falloir un thread dédié avec des barbelés et des modos armés pour surveiller le tout, vu la sensibilité du sujet. :slight_smile:

C’est peut être hors sujet mais ce genre de petit soft existe déjà donc si tu veux aller plus vite tu peux regarder de ce coté.
Sinon il y a Openttd qui simule très bien les trains.

Bon alors d’abord le VB si tu as commencé en VB, ensuite je vais précher pour ma chapelle :

moi je dirais python vu qi’l y a plein de tutoriels sur le net super bien fait, notamment pour les interfaces graphiques.
(ou tu peux aussi faire ca en interface web avec un mini serveur web comme cherrypy).
un tres bon tuto :
http://www.framasoft.net/article1971.html
sinon pour de la doc python clique sur tutorial apres :
http://del.icio.us/bussiere/python

et la grande force de python :

[quote]There is also a very long reply on how Python has been used for Railway Computer-control Simulation which lists the use of Python 2.5 as,

* The main database where all states are kept (signal aspects, given and actual turnout states, track occupation …). It’s a simple binary protocol using TCP; the server maintains string:int pairs in a Python dict. It’s made with Twisted and running under twistd.

* The automatic drive controlling software of the model trains. It listens for changes of signals and track occupation and controls the model trains using a commercial digital model railroad controller attached to /dev/ttyS0. Also using Twisted/twistd, and
  pyserial.

* Various helper scripts and little servers for small functional units (tramway reverser, level crossings)[/quote]

c’est que python est utilisé pour tout et n’importe quoi que tu as des modules ou des comptes rendus d’expérience.
http://technofreakatchennai.wordpress.com/…ho-uses-python/

La solution idéale étant Java sous Eclipse, avec EMF+GMF.

Voir l’exemple Taipan dans les tutoriels sur le wiki d’Eclipse.

A l’usage je ne suis pas très d’accord avec le vieux refrain de “tu viens de VB? Alors utilise VB.NET”. VB et VB.NET n’ont rien en commun. Il y a juste quelques astuces pour faire croire que VB.NET ressemble à VB, mais le problème, c’est que les anciens vbistes passant à .NET du coup ont l’impression d’utiliser la même techno, et passe à côté la plupart du temps. J’ai vu comme ça des anciens vbsistes bossant sur .NET depuis 3 ans, et ne sachant ce qu’est une interface.

C’est pourquoi souvent je conseil C#, histoire de bien marquer au moins psychologiquement le fait qu’on est vraiment passé à une techno qui n’a rien, mais alors rien à voir.

C’est quand même fou de retrouver toujours les mêmes posts des mêmes personnes dans les questions contenant « quels langage » :slight_smile: .

Si tu veux partir de zéro, effectivement le VB.Net avec Xna est une bonne idée, tu as tout de même les bases du VB qui restent les mêmes.

Mais comme dit plus haut, tu peux effectivement récupérer les sources d’OpenTTD et rajouter ce qui te manque (meilleure IA, gestion automatique des trains etc …). L’avantage étant que tu disposes d’une bonne base, avec (je suppose) ce que nécessite ce genre de programme (gestion des exceptions, des logs), l’inconvénient est qu’il te faudra t’approprier le programme d’autres personnes dans un langage que tu ne connais pas (là aussi, je suppose qu’OpenTTD n’est pas en VB.NET).

Edit : suite au message juste au dessus du mien, je dirais rapidement qu’effectivement les méthodes sont différentes, mais on retrouve la syntaxe ce qui évite toujours d’avoir à réaprendre ça. Après, il peut effectivement faire du C# …

Faut que tu regardes aussi la théorie des graphes en particulier les réseaux PERT.

edit:
Je n’y connais rien en simu de train, sauf pour avoir jouer des heures et des heures à Transport Tycoon, mais le projet de réseau PERT que j’avais fait pendant mes études me dit que PERT, ou des algos similaires, peut te donner des solutions.

[quote=“Twin, post:6, topic: 36578”]Dans le cas qui nous intéresse le mieux est de toutes façons le VB.net vu les connaissances VB que possède King Kaa.

Pour le reste, et bien que mon avis ait été un peu lapidaire, je suis prêt à expliquer le pourquoi de mon opinion (fondée elle aussi sur une pratique professionnelle quotidienne des deux langages en question). Mais il va falloir un thread dédié avec des barbelés et des modos armés pour surveiller le tout, vu la sensibilité du sujet. :)[/quote]

Et pourquoi ne pas faire ce post ? Nous sommes entre gens civilisés, et je suis sur que chaque partie peut apporter des arguments réels.
Parce que j’entends ca tout le temps en ce moment des javaistes, et je suis vraiment pas convaincu. Ayant moi meme pratiqué Java pendant qq année, et m’interessant un peu à C#, je trouve a C# que des qualités par rapport a java.
Mais je suis loin d’etre un expert.
Et ca m’interesse de suivre un vrai debat sur le sujet.

Parce qu’il faut quand meme reconnaitre que ton post initial etait quand meme bien trollesque :crying:

Merci à tous.

En fait ce projet est aussi l’occasion de plonger un peu plus en avant dans la programmation. Et apprendre un nouveau langage ne me fait pas peur, je ne suis pas à 6 mois près. :slight_smile:

Ne sachant pas trop vers quoi me tourner, je suis preneur de tous les conseils et avis, avant de me lancer

J’aime bien l’idée de Bussiere, pour stocker les données dans un base de données, je vais creuser un peu dans cette voie.

Et j’avais pensé à XNA aussi, je vais étudier un peu tout ça :crying:

[quote=« King_Kaa, post:14, topic: 36578 »]Merci à tous.

En fait ce projet est aussi l’occasion de plonger un peu plus en avant dans la programmation. Et apprendre un nouveau langage ne me fait pas peur, je ne suis pas à 6 mois près. :slight_smile:

Ne sachant pas trop vers quoi me tourner, je suis preneur de tous les conseils et avis, avant de me lancer

J’aime bien l’idée de Bussiere, pour stocker les données dans un base de données, je vais creuser un peu dans cette voie.

Et j’avais pensé à XNA aussi, je vais étudier un peu tout ça :cry:[/quote]

Passer de vb, à .NET, à mon avis ce n’est pas juste apprendre un nouveau langage, ça c’est fait en une journée. Non passer de VB à .NET, c’est changer de paradigme, c’est passer à l’objet. Louper ça, c’est juste manquer l’intérêt majeur d’une techno comme .NET ou Java. D’où ma remarque sur ne pas utiliser VB.NET mais directement C#, pour bien marquer la différence (dans la mesure bien entendu où tu choisis .NET :crying: )

Wow. :slight_smile:

bah apprendre un langage, c’est à dire juste sa synthaxe, je pense pas que ça prenne énormément de temps. Apprendre par contre les outils qui tournent autour, et apprendre la manière de penser qui va bien, ça c’est long.
Désolé si ce n’était pas clair ^^

En fait on s’en fout.
Ce qu’il faut, c’est une bonne combo papier crayon pour concevoir le soft correctement et créer les algo. Après, pour la réalisation, va au plus simple :), de préférence avec un IDE qui te permet d’éviter d’avoir à tout recoder. Je pense quand même que Visual studio express apporte les outils les plus efficaces pour prototyper rapidement, même si Eclipse se défend bien.

Bah disons qu’avec Eclipse, rien qu’en formalisant le modèle de données (les trains et leurs attributs, les rails et leurs relations, les feux rouges, les règles de circulation…), tu bénéficie d’un environnement permettant l’instanciation d’objets (trançon, trains, feux rouges), la sauvegarde de circuits et leur rejeu, désigner des circuits en etrapolant le modèle de base avec GMF, de même pour la barre d’outils et les propriétés des objets. Oui oui, tout ça rien qu’en modélisant les données.

[quote=« King_Kaa, post:14, topic: 36578 »]Merci à tous.

En fait ce projet est aussi l’occasion de plonger un peu plus en avant dans la programmation. Et apprendre un nouveau langage ne me fait pas peur, je ne suis pas à 6 mois près. :slight_smile:

Ne sachant pas trop vers quoi me tourner, je suis preneur de tous les conseils et avis, avant de me lancer

J’aime bien l’idée de Bussiere, pour stocker les données dans un base de données, je vais creuser un peu dans cette voie.

Et j’avais pensé à XNA aussi, je vais étudier un peu tout ça :crying:[/quote]
Si tu es sur paname je suis pret a te filer des cours de python, ou a t’aider a débugguer ton programme.
Pm moi si ca t’interesse.

Edit : Je vais me faire taper mais pour moi le plus important dans un langage c’est la communauté et la doc. Si tu as quelqu’un sous la main capable de t’expliquer un langage cela fait toute la difference. Un langage aura beau être génial si tu dois galérer tout seul c’est foutu.
Si tu as quelqu’un dans le coin capable de t’aider pour java ou .Net ou autre et de disponible fonce sur ce langage.

Bussiere

Bussiere