一、背景
我们可以利用python中的tkinter框架创建一个简单的英语单词猜词游戏。用户将看到一个缺少几个字母的单词,并需要填写出正确的字母,填写正确后会提醒correct,错误则提示:try again. 本代码全程利用VScode中的ChatGPT插件来完成。
二、实现过程
步骤 1:导入必要的库
我们需要导入 tkinter
库来创建图形用户界面(GUI),还需要导入 random
库来随机选择单词。
import tkinter as tk
import random
步骤 2:创建主窗口
创建一个主窗口,并设置窗口的标题和大小。
root = tk.Tk()
root.title("Guess the Word Game")
root.geometry("400x300")
步骤 3:定义单词列表和游戏逻辑
我们需要一个单词列表和一个函数来随机选择一个单词并生成缺少字母的版本。
words = ["python", "tkinter", "widgets", "canvas", "button"]
def get_random_word():
word = random.choice(words)
hide_count = len(word) // 3 # 随机隐藏1/3的字母
word_list = list(word)
indexes = random.sample(range(len(word)), hide_count)
for index in indexes:
word_list[index] = "_"
return word, "".join(word_list)
步骤 4:设置游戏元素
设置一个标签来显示带有下划线的单词,一个输入框用于用户输入,以及一个按钮来检查答案。
original_word, displayed_word = get_random_word()
word_label = tk.Label(root, text=displayed_word, font=("Helvetica", 24))
word_label.pack(pady=20)
entry = tk.Entry(root, font=("Helvetica", 14))
entry.pack(pady=10)
result_label = tk.Label(root, text="", font=("Helvetica", 14))
result_label.pack(pady=10)
步骤 5:检查用户输入
定义一个函数来检查用户输入的单词是否正确。当用户点击按钮时,触发检查函数。
def check_answer():
user_input = entry.get()
if user_input.lower() == original_word:
result_label.config(text="Correct!", fg="green")
else:
result_label.config(text="Try Again!", fg="red")
check_button = tk.Button(root, text="Check Answer", command=check_answer)
check_button.pack(pady=10)
步骤 6:启动主循环
启动主循环来运行应用程序。
root.mainloop()
三、完整代码展示
根据以上每个步骤代码,我们整合出一个py文件,同时添加了答对正确自动切换到下一个单词的功能。每一次会随机隐藏三分之一的代码。游戏的界面如下:
完整的代码如下图所示:
import tkinter as tk
import random
# 创建主窗口
root = tk.Tk()
root.title("Guess the Word Game")
root.geometry("400x300")
# 单词列表
words = ["python", "tkinter", "widgets", "canvas", "button"]
# 获取随机单词并隐藏其一部分字母
def get_random_word():
word = random.choice(words)
hide_count = len(word) // 3 # 随机隐藏1/3的字母
word_list = list(word)
indexes = random.sample(range(len(word)), hide_count)
for index in indexes:
word_list[index] = "_"
return word, "".join(word_list)
# 重置游戏
def reset_game():
global original_word, displayed_word
original_word, displayed_word = get_random_word()
word_label.config(text=displayed_word)
entry.delete(0, tk.END)
result_label.config(text="")
# 设置游戏元素
original_word, displayed_word = get_random_word()
word_label = tk.Label(root, text=displayed_word, font=("Helvetica", 24))
word_label.pack(pady=20)
entry = tk.Entry(root, font=("Helvetica", 14))
entry.pack(pady=10)
result_label = tk.Label(root, text="", font=("Helvetica", 14))
result_label.pack(pady=10)
def check_answer():
user_input = entry.get()
if user_input.lower() == original_word:
result_label.config(text="Correct!", fg="green")
root.after(1000, reset_game) # 1秒后重置游戏
else:
result_label.config(text="Try Again!", fg="red")
check_button = tk.Button(root, text="Check Answer", command=check_answer)
check_button.pack(pady=10)
# 启动主循环
root.mainloop()
三、学后总结
这个英语猜单词游戏过随机隐藏单词中的部分字母让玩家进行猜测,简单但有趣。如果你有任何修改或扩展的想法,可以尝试:读取单词表,增加更多单词到单词列表中;增加计时功能;增加难度选项(如隐藏更多字母);添加记分系统等。