When I was first learning perl quite some time ago, I wrote a casino-related program that was cheesily named "perlette". Its not really dice related, but it might give you a good start. To input bets: Name: (number, color, even/odd). Commands: Show bets, show winnings, spin, exit.
#!/usr/bin/perl -w
use strict;
srand(time ^ ($$ + ($$<<15)));
# ************* set comparment # to color
my %compartments = (0 => 'green', 00 => 'green');
for (my $i=1; $i<=36; $i++)
{
$compartments{$i} = ($i<19) ? "red" : "black";
}
my %money_per_player = ();
my %bets = ();
sub sbyvalue
{
$money_per_player{$b} == $money_per_player{$a};
}
# ************* start main processing loop
print "Place your bets!\n\n> ";
while ()
{
$_ = <>;
chomp $_;
if (m/(.+)(:\s)(\d+)/g)
{
if ($3 < 37 && $3 > 0)
{
my $money = 100;
print "Hello $1! I haven't seen you before. You start wi
+th $money.\n" unless exists $money_per_player{$1};
while ( my($key, $value) = each %money_per_player)
{
$money = $value if ($key eq $1);
}
$money_per_player{$1} = $money-1;
$bets{$1} = $3;
print "$1 bets on number $3.\n";
print "$1 now has \$$money_per_player{$1}.\n";
}
elsif ($3 eq "00")
{
my $money = 100;
print "Hello $1! I haven't seen you before. You start wi
+th $money.\n" unless exists $money_per_player{$1};
while ( my($key, $value) = each %money_per_player)
{
$money = $value if ($key eq $1);
}
$money_per_player{$1} = $money-1;
$bets{$1} = 37;
print "$1 bets on number $3.\n";
print "$1 now has \$$money_per_player{$1}.\n";
}
elsif ($3 == 0)
{
my $money = 100;
print "Hello $1! I haven't seen you before. You start wi
+th $money.\n" unless exists $money_per_player{$1};
while ( my($key, $value) = each %money_per_player)
{
$money = $value if ($key eq $1);
}
$money_per_player{$1} = $money-1;
$bets{$1} = 0;
print "$1 bets on number $3.\n";
print "$1 now has \$$money_per_player{$1}.\n";
}
else
{
print "You have not entered a valid bet, please choose aga
+in.\n";
}
}
elsif (m/(.+)(:\s)(.+)/g)
{
if ($3 eq "odd" || $3 eq "even" || $3 eq "black" || $3 eq "red
+")
{
my $money = 100;
print "Hello $1! I haven't seen you before. You start wi
+th $money.\n" unless exists $money_per_player{$1};
while ( my($key, $value) = each %money_per_player)
{
$money = $value if ($key eq $1);
}
$money_per_player{$1} = $money-1;
$bets{$1} = $3;
print "$1 bets on $3.\n";
print "$1 now has \$$money_per_player{$1}.\n";
}
else
{
print "You have not entered a valid bet, please choose aga
+in.\n";
}
}
elsif (m/^exit$/)
{
exit;
}
elsif (m/^show bets$/)
{
while ( my($key, $value) = each %bets)
{
print "$key bets on $value.\n";
}
}
elsif (m/^show winnings$/)
{
foreach my $key (sort sbyvalue keys %money_per_player)
{
print "Now $key has \$$money_per_player{$key}.\n";
}
}
elsif (m/^spin$/)
{
print "The Perlette wheel is spinning.......";
my $spin = int(rand(38));
$spin = "00" if ($spin == 37);
print "$spin $compartments{$spin}\n";
while ( my($key, $value) = each %bets)
{
if ($value eq "odd")
{
$money_per_player{$key} += ($spin%2 == 1) ? 2 : 0;
}
elsif ($value eq "even")
{
$money_per_player{$key} += ($spin%2 == 0) ? 2 : 0;
}
elsif ($value eq "black")
{
$money_per_player{$key} += ($spin > 18) ? 2 : 0;
}
elsif ($value eq "red")
{
$money_per_player{$key} += ($spin < 19 && $spin !=0) ?
+ 2 : 0;
}
else
{
$money_per_player{$key} += ($value == $spin) ? 36 : 0;
}
}
print "The players ranked by winnings:\n";
foreach my $key (sort sbyvalue keys %money_per_player)
{
print "Now $key has \$$money_per_player{$key}.\n";
}
reset 'b';
print "\nPlace your bets!\n";
}
else
{
print "You have not entered a valid command.\n";
}
print "\n> ";
}
P.S. Don't make fun of the coding! I was a super-newbie then :) |