上个周末,我整理了一份可以用 Python 编写的游戏列表。但为什么呢?
如果您是 Python 程序员初学者,编写有趣的游戏可以帮助您更快更好地学习 Python 语言,而不会被语法之类的东西所困扰。我在学习 Python 的时候曾制作过一些这样的游戏;我非常享受这个过程!
你可以编写的第一个游戏,也是最简单的一个游戏,就是猜数字游戏(或者叫 “猜数字”!)。因此,我想写一篇循序渐进的教程来编写这个游戏的代码,并帮助初学者学习一些基础知识。
Let’s begin!
数字竞猜游戏是如何进行的?
在数字竞猜游戏中,用户要在给定的尝试次数内猜出一个随机生成的秘密数字。
每次猜测之后,用户都会得到提示,告诉他们猜测的数字是过高、过低还是正确。是的,当用户猜中秘密数字或尝试次数用完时,游戏就结束了。
数字猜谜游戏编码
让我们开始编码吧!创建一个新的 Python 脚本并开始编码。
第 1 步 - 导入随机模块
让我们从导入内置 random
模块开始。random
模块中的函数可以用来生成指定范围内的随机秘密数字:
import random
注意:random
模块给出的是伪随机数,而不是真正的随机数。因此,请勿将其用于密码生成等敏感应用。
第 2 步 - 设置范围和最大尝试次数
接下来,我们需要确定秘密号码的范围和允许玩家尝试的最大次数。在本教程中,我们把 lower_bound
和 upper_bound
分别设为 1 和 1000。另外,将允许的最大尝试次数 max_attempts
设为 10:
lower_bound = 1
upper_bound = 1000
max_attempts = 10
第 3 步 - 生成随机数
现在,让我们使用 random.randint()
函数在指定范围内生成一个随机数。这就是用户需要猜测的秘密数字:
secret_number = random.randint(lower_bound, upper_bound)
第 4 步 - 读取用户输入信息
为了获取用户的输入,让我们创建一个名为 get_guess()
的函数。记住,用户可以输入无效输入:超出 [lower_bound, upper_bound]
范围的数字、字符串或浮点数等。
我们将在 get_guess()
函数中处理这种情况,该函数会不断提示用户输入一个数字–在指定范围内–直到他们提供一个有效的输入。
在这里,我们使用 while
循环来提示用户输入有效输入,直到他们输入一个介于 lower_bound
和 upper_bound
之间的整数:
def get_guess():while True:try:guess = int(input(f"Guess a number between {lower_bound} and {upper_bound}: "))if lower_bound <= guess <= upper_bound:return guesselse:print("Invalid input. Please enter a number within the specified range.")except ValueError:print("Invalid input. Please enter a valid number.")
第 5 步 - 验证用户的猜测
接下来,让我们定义一个 check_guess()
函数,它将用户的猜测和秘密数字作为输入,并就猜测是否正确、过高或过低提供反馈。
该函数将玩家的猜测与秘密数字进行比较,并返回相应的信息:
def check_guess(guess, secret_number):if guess == secret_number:return "Correct"elif guess < secret_number:return "Too low"else:return "Too high"
第 6 步 - 跟踪尝试次数并检测游戏结束条件
现在我们将创建函数 play_game()
,该函数负责处理游戏逻辑并将所有内容整合在一起。该函数使用 attempts
变量来跟踪用户的尝试次数。在一个 while
循环中,用户会被提示输入一个猜测,并由 get_guess()
函数进行处理。
调用 check_guess()
函数可以获得用户猜测的反馈信息:
- 如果猜测正确,用户获胜,游戏结束。
- 否则,用户将获得另一次猜测机会。
- 这个过程一直持续到玩家猜中秘密数字或猜完为止。
下面是play_game()
函数:
def play_game():attempts = 0won = Falsewhile attempts < max_attempts:attempts += 1guess = get_guess()result = check_guess(guess, secret_number)if result == "Correct":print(f"Congratulations! You guessed the secret number {secret_number} in {attempts} attempts.")won = Truebreakelse:print(f"{result}. Try again!")if not won:print(f"Sorry, you ran out of attempts! The secret number is {secret_number}.")
第 7 步 - 玩游戏!
最后,每次运行 Python 脚本时,都可以调用 play_game() 函数:
if __name__ == "__main__":print("Welcome to the Number Guessing Game!")play_game()
将所有内容整合在一起
现在我们的 Python 脚本是这样的
# main.py
import random# define range and max_attempts
lower_bound = 1
upper_bound = 1000
max_attempts = 10# generate the secret number
secret_number = random.randint(lower_bound, upper_bound)# Get the user's guess
def get_guess():while True:try:guess = int(input(f"Guess a number between {lower_bound} and {upper_bound}: "))if lower_bound <= guess <= upper_bound:return guesselse:print("Invalid input. Please enter a number within the specified range.")except ValueError:print("Invalid input. Please enter a valid number.")# Validate guess
def check_guess(guess, secret_number):if guess == secret_number:return "Correct"elif guess < secret_number:return "Too low"else:return "Too high"# track the number of attempts, detect if the game is over
def play_game():attempts = 0won = Falsewhile attempts < max_attempts:attempts += 1guess = get_guess()result = check_guess(guess, secret_number)if result == "Correct":print(f"Congratulations! You guessed the secret number {secret_number} in {attempts} attempts.")won = Truebreakelse:print(f"{result}. Try again!")if not won:print(f"Sorry, you ran out of attempts! The secret number is {secret_number}.")if __name__ == "__main__":print("Welcome to the Number Guessing Game!")play_game()
下面是脚本运行样本的输出结果:
Welcome to the Number Guessing Game!
Guess a number between 1 and 1000: 500
Too low. Try again!
Guess a number between 1 and 1000: 750
Too high. Try again!
Guess a number between 1 and 1000: 625
Too low. Try again!
Guess a number between 1 and 1000: 685
Too low. Try again!
Guess a number between 1 and 1000: 710
Too low. Try again!
Guess a number between 1 and 1000: 730
Congratulations! You guessed the secret number 730 in 6 attempts.
结束
恭喜你您已经成功地用 Python 构建了一个数字竞猜游戏。我们很快会在另一个教程中再见。不过,别等我了。Python很有趣的,你也可以在互联网上找到更多有意思的代码和程序哦!
感谢大家花时间阅读我的文章,你们的支持是我不断前进的动力。期望未来能为大家带来更多有价值的内容,请多多关注我的动态!