mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-12 15:50:20 -08:00
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:
@@ -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).
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user