pygame之键盘控制方块移动方法

1、**pygame.KEYDOW ------ **检测按键瞬间动作

‌检测按键被按下的瞬间事件:pygame.KEYDOWN‌ # 有延迟

获取按键状态 (实现平滑移动) : pygame.key.get_pressed()

键盘上的左箭头:‌pygame.K_LEFT

键盘上的右箭头:pygame.K_RIGHT

python 复制代码
if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_LEFT:
        player_rect.x -= 10  # 直接修改 x 坐标
    elif event.key == pygame.K_RIGHT:
        player_rect.x += 10  # 直接修改 x 坐标

2、pygame.key.get_pressed() ------ 持续获取按键状态

注意:如果使用 get_pressed,不需要放在 if event.type == KEYDOWN 块中

python 复制代码
# 在 while 循环内部,事件处理之后
keys = pygame.key.get_pressed()

if keys[pygame.K_LEFT]:
    player_rect.x -= 5  # 每帧移动 5 像素,速度更平滑
if keys[pygame.K_RIGHT]:
    player_rect.x += 5

3、边界检查

python 复制代码
keys = pygame.key.get_pressed()

if keys[pygame.K_LEFT] and player_rect.left > 0:
    player_rect.x -= 5
if keys[pygame.K_RIGHT] and player_rect.right < screen_width:  # screen_width 是窗口宽度
    player_rect.x += 5

4、按键控制方块移动(完整代码)

python 复制代码
import pygame
import sys

# 初始化
pygame.init()

# 设置窗口
screen = pygame.display.set_mode((800,600))
pygame.display.set_caption("键盘控制方块移动")

# 创建玩家矩形 (x, y, width, height)
player_rect = pygame.Rect(350, 250, 50, 50)
player_color = (255, 0, 0)  # 红色

# 时钟对象,用于控制帧率
clock = pygame.time.Clock()

running = True
while running:
    # 1. 事件处理
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 2. 获取按键状态 (实现平滑移动)
    keys = pygame.key.get_pressed()
    
    if keys[pygame.K_LEFT]:
        player_rect.x -= 5
    if keys[pygame.K_RIGHT]:
        player_rect.x += 5
    
    # 可选:添加上下移动
    if keys[pygame.K_UP]:
        player_rect.y -= 5
    if keys[pygame.K_DOWN]:
        player_rect.y += 5

    # 3. 边界检查 (防止移出屏幕)
    if player_rect.left < 0:
        player_rect.left = 0
    if player_rect.right > 800:
        player_rect.right = 800
    if player_rect.top < 0:
        player_rect.top = 0
    if player_rect.bottom > 600:
        player_rect.bottom = 600

    # 4. 绘制
    screen.fill((0, 0, 0))  # 黑色背景
    pygame.draw.rect(screen, player_color, player_rect)  # 绘制玩家
    
    # 5. 更新显示
    pygame.display.flip()
    
    # 控制帧率为 60 FPS
    clock.tick(60)

pygame.quit()
sys.exit()

5、补充知识点:创建矩形

创建玩家矩形 (x, y, width, height)

player_rect = pygame.Rect(350, 250, 50, 50) #x,y,宽,高

player_color = (255, 0, 0) # 红色

pygame.draw.rect(screen, player_color, player_rect)
player_rect = pygame.Rect(350, 250, 50, 50)

player_rect.x -= 5 x坐标-5

相关推荐
从小就看凹凸曼^o^13 小时前
Python基础5 - 字典与集合:(1)字典
开发语言·python
小赵AI手记13 小时前
技术拆解(十七)具身智能:机器人动作生成为何走向Diffusion Policy?
人工智能·笔记·python·机器人
本地化文档14 小时前
poethepoet-docs-l10n
python·github·gitcode·sphinx
baopixiaoz14 小时前
AI量化策略师|Web3 量化交易研究员
大数据·人工智能·python·区块链
Uncommon.14 小时前
使用Pytorch自动计算梯度
人工智能·pytorch·python
阿标的博客15 小时前
Python实训案例(二):输出植物证书
python
流浪00115 小时前
Python基础语法(三):函数
开发语言·python
鸿芯微控科技15 小时前
压电点胶阀出胶量不稳定怎么排查?驱动波形、背压、点胶重量与Python分析
开发语言·python·压电点胶阀·精密点胶·点胶重量·流体控制
一位正在转型AI全栈的前端工程师15 小时前
从 0 到 1 搭建生产级 RAG 系统:切片、召回与重排序调优实录
python·前端工程化
糖炒栗子032615 小时前
learn-claude-code 简要记录
笔记·python