📜  使用 Perl 猜数字游戏(1)

📅  最后修改于: 2023-12-03 15:22:15.445000             🧑  作者: Mango

使用 Perl 猜数字游戏

简介

本文将介绍使用 Perl 编写一个简单的猜数字游戏。

猜数字游戏是一个经典的猜测游戏,玩家需要根据给定的提示,猜测出一组数字。在这个游戏中,玩家需要猜一个四位数,每次猜测后将给出以下提示:

  1. 每个数字都在正确的位置上,是“XAXX”的形式;
  2. 每个数字存在于答案,但位置不正确,是“AXXB”的形式;
  3. 没有数字存在于答案中,是“0A0B”的形式。

在这个游戏中,玩家需要最少的次数猜测出答案。

实现

我们可以通过 Perl 来实现这个游戏。在这个实现中,我们使用了一个随机函数来生成一个四位数作为答案,然后在每次猜测中对用户的输入进行判断,并给出对应的提示。

以下是代码实现:

#!/usr/bin/perl

use strict;
use warnings;

# 生成答案
my @answer = map {int rand 10} 1 .. 4;

print "猜数字游戏开始!\n";
my $cnt = 0;
while (1) {
    # 读取用户输入
    print "请输入四个数字:";
    chomp (my $guess = <STDIN>);
    if ($guess =~ /^(\d)(\d)(\d)(\d)$/) {
        my @guess = ($1, $2, $3, $4);
        my ($a_count, $b_count) = (0, 0);
        # 对用户猜测进行判断
        for (my $i = 0; $i < 4; $i++) {
            if ($guess[$i] == $answer[$i]) {
                $a_count++;
            }
            elsif (grep {$guess[$i] == $_} @answer) {
                $b_count++;
            }
        }
        # 给出猜测的结果
        print "$a_count A $b_count B\n";
        $cnt++;
        # 如果猜测正确,游戏结束
        if ($a_count == 4) {
            print "恭喜你,猜对了!\n总共猜了 $cnt 次。\n";
            last;
        }
    }
    else {
        print "无效的输入,请重新输入!\n";
    }
}
运行效果

以下是程序的运行效果:

猜数字游戏开始!
请输入四个数字:1234
1 A 0 B
请输入四个数字:5678
0 A 2 B
请输入四个数字:9012
0 A 0 B
请输入四个数字:4921
4 A 0 B
恭喜你,猜对了!
总共猜了 4 次。
结论

本文介绍了使用 Perl 实现一个简单的猜数字游戏。通过这个实现,我们展示了如何利用 Perl 的各种特性来完成一个小型的程序。如果你有兴趣,可以拓展这个程序,增加更多的功能。