Revise the documentation for 80_Slots/perl

Add instructions on how to restore the BASIC behavior to
80_Slots/perl/slots.pl

Add the entire description section of the Perl documentation (including
the change I made because I thought the original was a bug, and how to
restore the original behavior) to 80_Slots/perl/README.md
This commit is contained in:
Tom Wyant
2022-01-09 08:59:40 -05:00
parent 3efbb9164c
commit b492671bf0
2 changed files with 26 additions and 2 deletions

View File

@@ -1,3 +1,23 @@
Original source downloaded [from Vintage Basic](http://www.vintage-basic.net/games.html)
Conversion to [Perl](https://www.perl.org/)
This Perl script is a port of slots, which is the 80th entry in Basic
Computer Games.
I know nothing about slot machines, and my research into them says to me
that the payout tables can be fairly arbitrary. But I have taken the
liberty of deeming the BASIC program's refusal to pay on LEMON CHERRY
LEMON a bug, and made that case a double.
My justification for this is that at the point where the BASIC has
detected the double in the first and third reels it has already detected
that there is no double in the first and second reels. After the check
for a bar (and therefore a double bar) fails it goes back and checks for
a double on the second and third reels. But we know this check will
fail, since the check for a double on the first and second reels failed.
So if a loss was intended at this point, why not just call it a loss?
To restore the original behavior, comment out the entire line commented
'# Bug fix?' (about line 75) and uncomment the line with the trailing
comment '# Bug?' (about line 83).

View File

@@ -72,7 +72,7 @@ while ( 1 ) { # Iterate indefinitely
}
} elsif ( $reel_x == $reel_z ) {
if ( $reel_z ) {
$winnings += double( $bet );
$winnings += double( $bet ); # Bug fix?
# NOTE that the below code is what is actually implemented
# in the basic, but it is implemented strangely enough (a
# GOTO a line that contains a test that, if I understand the
@@ -80,7 +80,7 @@ while ( 1 ) { # Iterate indefinitely
# I know nothing about slot machines, but research suggests
# the payoff table is fairly arbitrary. The code above makes
# code above makes the game orthogonal.
# $winnings += you_lost( $bet );
# $winnings += you_lost( $bet ); # Bug?
} else {
$winnings += double_bar( $bet );
}
@@ -215,6 +215,10 @@ a double on the second and third reels. But we know this check will
fail, since the check for a double on the first and second reels failed.
So if a loss was intended at this point, why not just call it a loss?
To restore the original behavior, comment out the entire line commented
C<'# Bug fix?'> (about line 75) and uncomment the line with the trailing
comment C<'# Bug?'> (about line 83).
=head1 PORTED BY
Thomas R. Wyant, III F<wyant at cpan dot org>