What is the best way to create a connection between trains and tracks?

I am working on a project to visually track trains. I edited the object relationships between trains, tracks, and the corresponding drawing classes for several times, and I am not happy with any of them. Maybe you guys can help me here.

Here are the interfaces to the objects that I have.

Tracks:

  • addControlPoint (IntPoint)
  • getPointAtPosition (float positionOnTheCurve)
  • getTangentAtPosition (float positionOnTheCurve)
  • getMaxPosition ()

TrackDrawer:

  • setGraphicsContext (Graphics g);
  • draw (Track track);

A train:

  • set / getTrack (track track)
  • set / getTrackPosition (float position)
  • set / getSpeed ​​(int speed)
  • moveForward (elapsedTime)

TrainDrawer:

  • setGraphicsContext (Graphics g)
  • draw (train train)

.

init() {
    Tracks track = new Tracks();
    track.addPoint( point1 );
    track.addPoint( point2 );
    track.addPoint( point3 );  

    Train train = new Train();
    train.setTrack(track);
    train.setPosition(0);
}

run() {
   while (running) {
       elapsedTime = calcTime();
       update(elapsedTime);
       Graphics g = getGraphics();
       draw(g);
   }
}

update(long elapsedTime) {
    train.setSpeed(10);
    train.moveForward(elapsedTime);
}

draw(Graphics g) {
    trackDrawer.draw(track);
    trainDrawer.draw(train);
}

:

  • , ? , , .

  • , , , . TrainDrawer, . , , (), , .

  • , , - ? , , , , , . .

+3
2

, TrainDrawer TrackDrawer .

, Trains Tracks , . Draftsman ( "" ), .

+2
  • , , . ? . , .

  • - , . .

  • ! , , . - , .

+2

Source: https://habr.com/ru/post/1756431/


All Articles