Pong Velocity Fix

[email protected] (Sheppy R)
Newsgroups perl.sdl.devel
Message-ID <[email protected]>
In Pong from the SDL manual, I was experiencing an issue where the paddle
movement was slower in one direction than the other.  The cause of this is
the way Perl and SDL handled the numbers passed.  Anything between 0 and 1
was floored to 0, but anything -1 and 0 was floored to -1.

Here is the fix that I used to correct the difference in velocities in the
Pong game:

sub round_down {
>     my $number = shift;
>     my $sign = ($number <=> 0);
>     my $roundNumber = ($sign * int(abs($number)));
>     return $roundNumber;
> }
>


I implemented the calls like this...

# handles the player's paddle movement
> $app->add_move_handler( sub {
>     my ($step, $app) = @_;
>     my $paddle = $player1->{paddle};
>     my $v_y = $player1->{v_y};
>
>     my $change = round_down($v_y * $step);
>     $paddle->y($paddle->y + $change);
> });
>

Hopefully, this will be useful in adding this functionality directly to the
SDLx::Rect.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.