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, . , , (), , .
, , - ? , , , , , . .