在编程学习过程中,创造小游戏是巩固知识的有趣方式。本文将介绍如何使用Python的Turtle模块创建一个简单的打字练习游戏,玩家需要通过键盘输入屏幕上落下的字母来获得分数。
这个打字练习游戏的核心机制很简单:
from random import choice, randrange
from string import ascii_lowercase
from turtle import *
from freegames import vector
我们导入了必要的模块:
random用于随机选择字母和位置string提供小写字母集合turtle提供图形界面freegames.vector简化了二维坐标操作
targets = [] # 存储字母位置向量
letters = [] # 存储当前屏幕上的字母
score = 0 # 玩家得分
inside()函数检查点是否在屏幕范围内:
def inside(point):
"""Return True if point on screen."""
return -200 < point.x < 200 and -200 < point.y < 200
draw()函数负责在屏幕上绘制所有字母:
def draw():
"""Draw letters."""
clear()
for target, letter in zip(targets, letters):
goto(target.x, target.y)
write(letter, align='center', font=('Consolas', 20, 'normal'))
update()
move()函数控制字母的生成和移动:
def move():
"""Move letters."""
if randrange(20) == 0: # 1/20概率生成新字母
x = randrange(-150, 150)
target = vector(x, 200)
targets.append(target)
letter = choice(ascii_lowercase)
letters.append(letter)
for target in targets: # 所有字母下移1单位
target.y -= 1
draw()
for target in targets:
if not inside(target): # 检查字母是否离开屏幕
return
ontimer(move, 100) # 100毫秒后再次调用move()
press()函数处理玩家的键盘输入:
def press(key):
"""Press key."""
global score
if key in letters: # 输入正确
score += 1
pos = letters.index(key)
del targets[pos]
del letters[pos]
else: # 输入错误
score -= 1
print('Score:', score) # 显示当前得分
setup(420, 420, 370, 0) # 设置窗口大小和位置
hideturtle() # 隐藏海龟光标
up() # 抬起画笔
tracer(False) # 关闭动画效果
listen() # 监听键盘输入
# 为每个小写字母绑定按键事件
for letter in ascii_lowercase:
onkey(lambda letter=letter: press(letter), letter)
move() # 开始游戏循环
done() # 游戏结束
原代码注释中提出了几个改进方向:
target.y -= 1中的值或ontimer(move, 100)的时间间隔ascii_letters代替ascii_lowercase,并相应调整按键绑定score值动态调整ontimer的时间间隔randrange(20)的条件,使其与得分相关这个基础游戏还有很多扩展可能性:
通过这个简单的打字游戏项目,我们学习了如何使用Python的Turtle模块创建交互式图形应用。这种小游戏不仅适合编程练习,也可以作为学习打字的工具。读者可以基于这个框架,尝试实现前面提到的改进建议或自己的创意,打造更丰富的游戏体验。
编程的乐趣在于创造,希望这个项目能激发你更多的编程灵感!