持续移动 方向与速度
持续移动 方向与速度
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() # 释放资源
浙公网安备 33010602011771号