如何在 Python 中创建猜数游戏?

探索Python中的猜数字游戏

你可能已经猜到了这篇文章的主题。或许你已经熟悉猜数字游戏,并且正在寻找一种使用Python来实现它的方法。

让我们一起学习如何从头开始构建一个猜数字游戏。

猜数字游戏详解

游戏规则很简单:用户需要猜测一个由程序随机生成的、介于1到100之间的整数。就这么简单。

游戏真的如此简单吗?

是的,确实如此。

但是,我们必须为用户提供一些线索来帮助他们猜测数字。这就是提示。我们需要向用户显示一条信息,说明他们当前猜测的数字是小于还是大于目标数字。这样,用户就可以知道应该向哪个方向调整他们的猜测。

我们可以通过添加额外的功能来增加游戏的趣味性,例如限制最大猜测次数、扩大数字范围或者设置计时器等等。

首先,构建一个基本可运行的游戏是至关重要的。之后,我们可以逐步添加更多功能。所以,在本文中,我们将先构建游戏的基本版本,然后逐步添加新功能。

我希望你能尝试在不直接复制粘贴代码的情况下创建这个游戏。因此,我将首先解释算法。这将帮助你独立编写代码或者快速理解现有代码。

让我们深入了解猜数字游戏的算法。

算法解析

在开始编码之前,请务必确保你已经理解了算法。

  • 确定数字的范围。默认情况下,范围是1到100,但你可以根据需要修改它。
  • 从上述范围(1-100)中生成一个随机整数。
  • 通过向用户显示一条类似“猜一个X到Y之间的数字”的消息来开始游戏。你可以根据需要自定义此消息。
  • 初始化一个变量为0,用于跟踪用户尝试猜测的总次数。
  • 开始一个无限循环:
    • 让用户输入一个猜测的数字。
    • 如果用户猜测的数字与随机生成的数字相等,则向用户发送祝贺消息,例如“太棒了!你用了X步就猜对了!”。
    • 在祝贺用户后,结束循环。
    • 如果用户猜测的数字小于随机生成的数字,则向用户发送一条消息,例如“你猜的数字太小了”。
    • 如果用户猜测的数字大于随机生成的数字,则向用户发送一条消息,例如“你猜的数字太大了”。
    • 最后,将用户猜测次数的计数器加1。

阅读完算法后,你的脑海中应该会浮现出代码的轮廓。即使你还没有完全想出代码,也不用担心。但请确保你理解了上面的算法。

现在是时候动手编写代码了。事不宜迟,让我们开始吧!

代码实现

你尝试自己编写代码了吗?

如果你尝试了并且完成了,那真是太棒了!请查看下面的代码并理解它,为你的知识添加更多视角。

即使你没有编写代码也不要担心,请参考以下代码并理解它。尝试以你自己的方式修改和编写它,以便更好地理解。

那么,让我们来看看代码:

import random

class NumberGuessingGame:
    def __init__(self):
        self.LOWER = 1
        self.HIGHER = 100
        
    def get_random_number(self):
        return random.randint(self.LOWER, self.HIGHER)
    
    def start(self):
        random_number = self.get_random_number()
        print(f"请猜一个 {self.LOWER} 到 {self.HIGHER} 之间的随机数")

        chances = 0
        while True:
            user_number = int(input("请输入你猜的数字: "))
            if user_number == random_number:
                print(f"-> 恭喜!你用了 {chances + 1} 步就猜对了!")
                break
            elif user_number < random_number:
                print("-> 你猜的数字太小了")
            else:
                print("-> 你猜的数字太大了")
            chances += 1

numberGuessingGame = NumberGuessingGame()
numberGuessingGame.start()

从这段代码中,你可以了解到一些事情:

  • 范围在__init__方法中定义,这样可以在类的所有方法中使用。
  • 我们可以轻松地在一个地方更改它,从而在整个应用程序中相应地更改。
  • 有一个单独的方法来生成随机数,这遵循了“关注点分离”的原则。 在这里,我们的方法代码很少,但将来可能会增加。
  • 最后,我们使用了类,以便与游戏相关的每个方法都封装在其中。这样,它可以很容易地在其他应用程序中重复使用。

以上讨论的重点在于编写干净的代码。即使在多年以后,我们也应该尝试编写自己能理解的清晰代码。

游戏的示例输出如下所示:

$ python number_guessing_game.py 
请猜一个 1 到 100 之间的随机数
请输入你猜的数字: 50
-> 你猜的数字太小了
请输入你猜的数字: 75
-> 你猜的数字太小了
请输入你猜的数字: 90
-> 你猜的数字太大了
请输入你猜的数字: 85
-> 你猜的数字太大了
请输入你猜的数字: 80
-> 恭喜!你用了 5 步就猜对了!

我假设你已经安装了Python,可以尝试上面的代码。

额外功能

现在我们将为游戏添加一个新功能:限制用户猜测数字的最大次数。如果用户在限定的次数内没有猜中数字,则游戏失败。

我们如何实现这个功能呢?

这只需要简单的两步即可完成,让我们看看具体步骤:

  • 定义用户猜测数字的最大次数。
  • 在用户输入下一次猜测之前,检查用户是否还有猜测机会。如果用户没有剩余机会,则结束游戏。

下面的代码可以实现这个功能:

  • __init__ 方法中添加以下代码:
self.MAX_CHANCES = 10
  • 在用户输入下一次猜测之前,添加以下条件判断:
if chances == self.MAX_CHANCES:
                print("-> 唉!你输了游戏,你的机会用完了")

现在,尝试在没有猜对数字的情况下进行游戏。你应该会看到类似以下的输出:

$ python number_guessing_game.py 
请猜一个 1 到 100 之间的随机数. 你有10次猜测的机会.
请输入你猜的数字: 1
-> 你猜的数字太小了
请输入你猜的数字: 2
-> 你猜的数字太小了
请输入你猜的数字: 3
-> 你猜的数字太小了
请输入你猜的数字: 4
-> 你猜的数字太小了
请输入你猜的数字: 5
-> 你猜的数字太小了
请输入你猜的数字: 6
-> 你猜的数字太小了
请输入你猜的数字: 7
-> 你猜的数字太小了
请输入你猜的数字: 8
-> 你猜的数字太小了
请输入你猜的数字: 9
-> 你猜的数字太小了
请输入你猜的数字: 10
-> 你猜的数字太小了
-> 唉!你输了游戏,你的机会用完了

太棒了!我们为游戏添加了一个额外的功能。但这还不是终点。你可以添加更多功能,使其对用户更具吸引力。现在轮到你大显身手了,让它变得更好吧!

结论

我们已经成功创建了一个简单的猜数字游戏。现在,轮到你回想一下小时候玩过的游戏了。尝试使用编程语言实现它们,并与你的朋友分享。我们可以将许多童年游戏数字化。

接下来,探索一些Python IDE和在线编译器来运行你的Python代码。

祝你编程愉快!😊

如果你对文字游戏情有独钟,不妨了解一下如何在Wordle游戏中取得更好的成绩。

喜欢这篇文章吗?请分享给更多人吧!