Files
basic-computer-games/61_Math_Dice/perl/mathdice.pl
RibTips 1c6984aa69 MathDice in perl
A version of MathDice written in perl
2022-01-02 18:19:53 -05:00

122 lines
2.4 KiB
Perl

#!/usr/bin/perl
use strict;
use warnings;
&main;
# Main subroutine
sub main {
&print_intro;
while (1==1) {
&game_play; #function that actually plays the game
}
}
sub game_play {
my $num = 0;
my $sum = 0;
my $tries = 0;
until ($num == 2) { # there are 2 dice rolls so we do it until the num equals 2
$num++;
my $roll = 1+int rand(6); # getting a random number between 1 and 6
&print_dice($roll); # function call to print out the dice
$sum = $sum + $roll; # keeping track of the summary
#print "Sum: $sum Roll: $roll\n";
if ($num == 1) {
print " +\n"; # if its the first roll then print an addition sign
}
if ($num == 2) {
print " =\n"; # if its the second roll print the equals sign and wait for an answer
my $answer = <STDIN>;
chomp($answer);
if ($answer == 0) {
die "You input '0', Thanks for playing!\n";
}
elsif ($answer == $sum) {
print "RIGHT!\nTHE DICE ROLL AGAIN\n";
}
else { # code execution if they don't get the right answer
print "NO,COUNT THE SPOTS AND GIVE ANOTHER ANSWER\n";
$answer = <STDIN>;
chomp($answer);
if ($answer == $sum){
print "RIGHT!\nTHE DICE ROLL AGAIN\n";
}
else {
print "N0, THE ANSWER IS $sum\n";
}
}
}
}
}
sub print_dice {
my $roll = shift;
print " -----\n";
if ($roll == 1) {
&print_blank;
&print_one_mid;
&print_blank;
}
if ($roll == 2) {
&print_one_left;
&print_blank;
&print_one_right;
}
if ($roll == 3) {
&print_one_left;
&print_one_mid;
&print_one_right;
}
if ($roll == 4) {
&print_two;
&print_blank;
&print_two;
}
if ($roll == 5) {
&print_two;
&print_one_mid;
&print_two;
}
if ($roll == 6) {
&print_two;
&print_two;
&print_two;
}
print " -----\n";
}
sub print_one_left {
print "I * I\n";
}
sub print_one_mid {
print "I * I\n";
}
sub print_one_right {
print "I * I\n";
}
sub print_two {
print "I * * I\n";
}
sub print_blank {
print "I I\n";
}
sub print_intro {
my $spaces = " "x31;
print "$spaces MATH DICE\n";
$spaces = " "x15;
print "$spaces CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n";
print "THIS PROGRAM GENERATES SUCCESSIVE PICTURES OF TWO DICE.\n";
print "WHEN TWO DICE AND AN EQUAL SIGN FOLLOWED BY A QUESTION\n";
print "MARK HAVE BEEN PRINTED, TYPE YOUR ANSWER AND THE RETURN KEY.\n";
print "TO CONCLUDE THE LESSON, TYPE '0' AS YOUR ANSWER.\n\n\n";
}