| Games-RailRoad documentation | Contained in the Games-RailRoad distribution. |
Games::RailRoad::Train - a train object
version 1.101330
This class models a train object that moves on the rails.
The node from where the train is coming (a Games::RailRoad::Vector object).
The node where the train is headed (a Games::RailRoad::Vector object).
A number between 0 and 1 indicating where exactly the train is between its from and to nodes.
Create and return a new train object. One can pass a hash reference with the available attributes.
Request $train to draw itself on $canvas, assuming that each square
has a length of $tilelen.
Jerome Quelin
This software is copyright (c) 2008 by Jerome Quelin.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
| Games-RailRoad documentation | Contained in the Games-RailRoad distribution. |
# # This file is part of Games-RailRoad # # This software is copyright (c) 2008 by Jerome Quelin. # # This is free software; you can redistribute it and/or modify it under # the same terms as the Perl 5 programming language system itself. # use 5.010; use strict; use warnings; package Games::RailRoad::Train; BEGIN { $Games::RailRoad::Train::VERSION = '1.101330'; } # ABSTRACT: a train object use Moose; use MooseX::Has::Sugar; use MooseX::SemiAffordanceAccessor; use Games::RailRoad::Types qw{ Num_0_1 }; # -- attributes has from => ( rw, isa=>'Games::RailRoad::Vector' ); has to => ( rw, isa=>'Games::RailRoad::Vector' ); has frac => ( rw, isa=>Num_0_1 ); # -- constructor & initializers # provided by moose # -- public methods sub draw { my ($self, $canvas, $tilelen) = @_; my $from = $self->from; my $to = $self->to; my $frac = $self->frac; my $diag = 2; my $colf = $from->posx; my $rowf = $from->posy; my $colt = $to->posx; my $rowt = $to->posy; $canvas->delete("$self"); my $x = ( $colf + ($colt-$colf) * $frac ) * $tilelen; my $y = ( $rowf + ($rowt-$rowf) * $frac ) * $tilelen; $canvas->createOval( $x - $diag, $y - $diag, $x + $diag, $y + $diag, -fill => 'blue', -tags => [ "$self" ], ); } # -- private methods 1;
__END__