Python Pygame 实现简易滑块接球游戏教程
本文介绍如何使用Python的Pygame库开发一个简单的滑块接小球游戏。通过绘制圆形、矩形及随机数生成,演示基本的鼠标交互与碰撞逻辑。文章提供完整代码解析,涵盖游戏初始化、主循环处理、球体运动控制及生命值计分机制,适合Python初学者练习基础游戏开发思维。
Pygame滑块接球游戏简介
本文将使用Pygame库创建一个滑块接小球的示例游戏,供读者参考学习。
首先展示游戏运行效果截图。

该游戏逻辑简单直观,主要涉及Pygame中的圆形绘制、矩形绘制以及随机数生成等功能。通过此案例,可以锻炼基础的鼠标控制能力、游戏设计思维以及简单的碰撞判断逻辑。接下来直接展示代码实现。
游戏参数初始化与设置
在编写代码前,需先明确游戏运行所需的各项参数。
游戏核心逻辑与主循环实现
pygame.init()
screen = pygame.display.set_mode((800, 600))
# 生命和得分
lives = 3
score = 0
# 设置颜色
white = 255, 255, 255
yellow = 255, 255, 0
black = 0, 0, 0
red = 220, 50, 50
# 设置字体
font = pygame.font.Font(None, 38)
pygame.mouse.set_visible(False)
game_over = True
# 设置鼠标坐标及鼠标事件参数
# 鼠标坐标
mouse_x = mouse_y = 0
# 滑板坐标
pos_x = 300
pos_y = 580
# 球坐标
ball_x = random.randint(0, 500)
ball_y = -50
# 球半径
radius = 30
# 下落速度
vel = 0.5
def print_text(font, x, y, text, color=white):
imgText = font.render(text, True, color)
screen.blit(imgText, (x, y))
以下是对关键参数的解释:
变量game_over初始设置为True,目的是让游戏在启动时处于暂停状态,等待用户鼠标点击后才开始运行。这一机制同时也用于处理游戏结束后重新开始的情况。此外,pygame.mouse.set_visible(False)用于隐藏系统鼠标指针,使游戏体验更沉浸。
接下来是游戏的核心主体部分代码。
# 主循环
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
elif event.type == pygame.MOUSEMOTION:
mouse_x, mouse_y = event.pos
move_x, move_y = event.rel
elif event.type == pygame.MOUSEBUTTONDOWN:
lives = 3
score = 0
game_over = False
keys = pygame.key.get_pressed()
if keys[K_ESCAPE]:
exit()
screen.fill((0, 0, 10))
if game_over:
print_text(font, 220, 300, "Press MouseButton To Start", white)
else:
# 球落到了地上
if ball_y > 600:
ball_y = -50
ball_x = random.randint(0, 800)
lives -= 1
if lives == 0:
game_over = True
# 球被滑板接住了
elif pos_y < ball_y and pos_x < ball_x < pos_x + 120:
score += 10
ball_y = -50
ball_x = random.randint(0, 800)
# 既没有落地上也没被接住的时候,则不断增加y坐标数值使球从顶部落下
else:
ball_y += vel
ball_pos = int(ball_x), int(ball_y)
pygame.draw.circle(screen, yellow, ball_pos, radius, 0)
# 滑板不要划出边界
pos_x = mouse_x
if pos_x < 0:
pos_x = 0
elif pos_x > 700:
pos_x = 700
# 画滑板并跟随鼠标左右移动
pygame.draw.rect(screen, white, (pos_x, 580, 100, 20), 0)
print_text(font, 50, 0, "Score: " + str(score), red)
print_text(font, 650, 0, "Lives:" + str(lives), red)
pygame.display.update()
基本逻辑如下:当球体下落至屏幕底部,或者与滑块发生接触时,通过重置球体的y坐标使其回到屏幕顶部。具体判断条件为:当球体的y坐标大于滑块的y坐标(即球到达滑块高度),且球体的x坐标位于滑块的x坐标范围内时,判定为碰撞成功,球体随即重置到顶部。该游戏逻辑较为简单,后续在引入Sprite精灵类时,将采用更规范的用法及更严谨的碰撞计算方法。
总结与展望
以上是本文的全部内容,希望对各位的学习有所帮助,欢迎大家继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









