当前位置:首页>python>Python趣味编程学习记录13—见缝插针

Python趣味编程学习记录13—见缝插针

  • 2026-10-21 13:28:30
Python趣味编程学习记录13—见缝插针
本次要实现很多跟针的发射与转动
import pgzrun # 导入游戏库needles = [] # 存储所有针的列表,开始为空# 导入针的图片、设置锚点相对坐标newNeedle = Actor('needle', anchor=(170+50, 1.5))newNeedle.x = 220    # 设置针锚点的x坐标newNeedle.y = 300    # 设置针锚点的y坐标needles.append(newNeedle) # 初始一根针加入列表中def draw(): # 绘制模块,每帧重复执行    screen.fill('white') # 白色背景    screen.draw.circle((400, 300), 80, 'red') # 绘制圆盘    for needle in needles: # 绘制列表中的每根针        needle.draw()       # 绘制针def update(): # 更新模块,每帧重复操作    for needle in needles: # 对列表中的每根针遍历处理        if needle.x == 400: # 如果针到了目标位置,则开始旋转            needle.angle += 1 # 针的角度逐渐增加,即慢慢旋转def on_mouse_down(): # 当按下任意键盘键时执行    global newNeedle     newNeedle.x = 400 # 针移动到目标位置    # 再新建一根针    newNeedle = Actor('needle', anchor=(170+50, 1.5))    newNeedle.x = 220    # 设置针锚点的x坐标    newNeedle.y = 300    # 设置针锚点的y坐标    needles.append(newNeedle) # 初始一根针加入列表中pgzrun.go() # 开始执行游戏
运行效果:
下一步将空心圆换成实心圆,并加入游戏失败的条件、游戏得分和音效等
import pgzrun # 导入游戏库TITLE = 'Python见缝插针 --- by 悦读己'# 导入初始位置针的图片、设置锚点相对坐标startNeedle = Actor('needle', anchor=(170+50, 1.5))startNeedle.x = 200    # 设置针锚点的x坐标startNeedle.y = 300    # 设置针锚点的y坐标needles = [] # 存储所有针的列表,初始为空rotateSpeed = 1 # 旋转速度,默认是1,后面游戏结束后改成0score = 0    # 游戏得分def draw(): # 绘制模块,每帧重复执行    screen.fill('white') # 白色背景    startNeedle.draw()    # 初始位置针的绘制    for needle in needles: # 绘制列表中的每根针        needle.draw()       # 绘制针    screen.draw.filled_circle((400, 300), 80, 'red') # 绘制圆盘    screen.draw.text(str(score), (50, 250),                     fontsize=50, color='green') # 显示游戏得分    if rotateSpeed == 0: # 游戏失败        screen.draw.text("Game Over!", (10, 320), fontsize=35, color='red')def update(): # 更新模块,每帧重复操作    for needle in needles: # 对列表中的每根针遍历处理        needle.angle += rotateSpeed # 针的角度逐渐增加,即慢慢旋转def on_mouse_down(): # 当按下任意键盘键时执行    global rotateSpeed, score    if rotateSpeed >0: # 播放音效        music.play_once('弹簧')    # 再新建一根针    newNeedle = Actor('needle', anchor=(170+50, 1.5))    newNeedle.x = 400     # 设置针锚点的x坐标    newNeedle.y = 300     # 设置针锚点的y坐标    for needle in needles:        # 如果新针和其他针碰撞,则游戏失败        if newNeedle.colliderect(needle):             print('游戏失败')            rotateSpeed = 0 # 游戏失败,针停止旋转            music.play_once('溜走')    if rotateSpeed > 0: # 如果针还在旋转        score += 1 # 则得分加1    needles.append(newNeedle) # 把新针加入列表中pgzrun.go() # 开始执行游戏

若喜欢,点赞和关注一下!

若侵权,请联系删除!

最新文章

随机文章