使用 Perl 猜数字游戏
数字猜谜游戏就是在给定的机会中猜测计算机随机选择的数字。
要使用的功能:
- rand n :此函数用于生成 0 到 n 之间的随机数。这个函数总是返回浮点数。所以它的结果被显式地转换为整数值。
- Chomp() :此函数用于从用户输入中删除字符。
解释:
在程序中,while循环一直运行,直到用户猜测的次数等于生成的次数或者尝试次数小于最大机会次数。如果尝试次数变得大于游戏停止的机会数并且用户输掉游戏。如果用户在给定的机会中猜对了正确的数字,那么他或她将获胜。在用户每次猜测后,程序会通知用户猜测的数字是否小于实际生成的数字。
在这段代码中, rand函数最初选择一个随机数作为 x。函数(rand k) 在 0 和 k 之间找到一个随机数。由于这个随机数是一个浮点数,所以使用“int”将其显式转换为整数。 x 存储整数。如果机会超过用户猜测用户将输的机会,则给予用户特定数量的机会来猜测该数字。
下面是实现:
# Number Guessing Game implementation
# using Perl Programming
print "Number guessing game\n";
# rand function to generate the
# random number b/w 0 to 10
# which is converted to integer
# and store to the variable "x"
$x = int rand 10;
# variable to count the correct
# number of chances
$correct = 0;
# number of chances to be given
# to the user to guess number
# the number or it is the of
# inputs given by user into
# input box here number of
# chances are 4
$chances = 4;
$n = 0;
print "Guess a number (between 0 and 10): \n";
# while loop containing variable n
# which is used as counter value
# variable chance
while($n < $chances)
{
# Enter a number between 0 to 10
# Extract the number from input
# and remove newline character
chomp($userinput = );
# To check whether user provide
# any input or not
if($userinput != "blank")
{
# Compare the user entered number
# with the number to be guessed
if($x == $userinput)
{
# if number entered by user
# is same as the generated
# number by rand function then
# break from loop using loop
# control statement "last"
$correct = 1;
last;
}
# Check if the user entered
# number is smaller than
# the generated number
elsif($x > $userinput)
{
print "Your guess was too low,";
print " guess a higher number than ${userinput}\n";
}
# The user entered number is
# greater than the generated
# number
else
{
print "Your guess was too high,";
print " guess a lower number than ${userinput}\n";
}
# Number of chances given
# to user increases by one
$n++;
}
else
{
$chances--;
}
}
# Check whether the user
# guessed the correct number
if($correct == 1)
{
print "You Guessed Correct!";
print " The number was $x";
}
else
{
print "It was actually ${x}.";
}
输入:
5
6
8
9
输出:
Number guessing game
Guess a number (between 0 and 10):
Your guess was too low, guess a higher number than 5
Your guess was too low, guess a higher number than 6
Your guess was too low, guess a higher number than 8
You Guessed Correct! The number was 9
注意:在上面的程序中用户可以修改rand函数的值来增加这个游戏中的数字范围,也可以通过增加机会变量的值来增加机会的数量。