持续移动 方向与速度

持续移动 方向与速度

1.实现持续移动

让物体在无按键操作的情况下也能移动

问题 如何不按按键 物体依然移动

解决方案
把按键和移动分开

2.掌握方向变量

用变量 dy和dx 来储存方向和速度
例如 向上 dx = 0 dy = -1
向下 dx = 0 dy = 1
向左 dx = -1 dy = 0
向右 dx = 1 dy = 0

3.控制游戏帧率 用pygame.time.clock来控制游戏运行的速度

clock.tick(fps) 放在末尾 控制1秒之内的循环次数(这个就叫做fps帧数)

import pygame
import random
import time
pygame.init()
clock = pygame.time.Clock()
size = (600, 400)
screen = pygame.display.set_mode(size)#创建游戏窗口

pygame.display.set_caption("自动移动") # 设置窗口标题
x = random.randint(0, 200)
y = random.randint(0, 200)
dx = 0 #每次 x 移动的距离
dy = 0 #每次 y 移动的距离

running = True # 默认游戏运行
black = (0, 0, 0)
green = (0, 255, 0)
while running:
    screen.fill(black)
    # 获取用户输入的按键
    events = pygame.event.get() # 对按键进行判断(有用或者没用)
    # 输出用户输入的按键
    for e in events: # 识别出正确的按键类型 执行对应命令
        if e.type == pygame.KEYDOWN: # 当前事件的类型 按下按键(KEYDOWN)
            if e.key == pygame.K_RIGHT:
                # dx > 0
                # dy = 0
                dx = 0.1
                dy = 0
            if e.key == pygame.K_LEFT:
                dx = -0.1
                dy = 0
            if e.key == pygame.K_UP:
                dy = -0.1
                dx = 0
            if e.key == pygame.K_DOWN:
                dy = 0.1
                dx = 0
        if e.type == pygame.QUIT:
            running = False
    x = x+dx
    y = y+dy
    square = pygame.Rect(x, y, 100, 100) # 创建出一个左上角坐标(x, y), 边长为100
    pygame.draw.rect(screen, green, square, 5)  # 在窗口(screen)上绘制一个绿色(green)的正方形(square)
    # 刷新屏幕
    pygame.display.update()
    clock.tick(60)
    ...
pygame.quit()   # 释放资源

posted @ 2025-11-29 17:22  王奕健  阅读(13)  评论(0)    收藏  举报