Python 如何设置两个键盘事件之间的间隔?
我想让玩家在迷宫中一次移动一个街区 我试着用一个时钟和Python 如何设置两个键盘事件之间的间隔?,python,time,pygame,Python,Time,Pygame,我想让玩家在迷宫中一次移动一个街区 我试着用一个时钟和time.time(),但都没用 这是我的游戏循环: while self.running: self.counter += 1 self.clock.tick(self.fps) if self.counter == self.fps: self.counter = 0 self.canUpdate = True 这是移动的代码: if self.game.canUpdate:
time.time()
,但都没用
这是我的游戏循环:
while self.running:
self.counter += 1
self.clock.tick(self.fps)
if self.counter == self.fps:
self.counter = 0
self.canUpdate = True
这是移动的代码:
if self.game.canUpdate:
if pressed_keys[K_DOWN]:
self.moveDown()
self.game.canUpdate = False
def moveDown(self):
if self.canMoveTo(self.gridx, self.gridy+1):
for sprite in self.game.sprites:
if sprite != self:
sprite.y -= self.game.gridSize
self.gridy += 1
print(self.gridy, self.game.canUpdate)
按下向下箭头
gridy
增加到500以上,并且self.game.canUpdate
保持为True您可以使用time.sleep()
使用按键事件调用此块,以便下一次按键时,代码执行停止500秒,然后等待下一次按键事件。此外,如果你计划做更大的事情,那么Counter()
需要计算500,这比sleep()需要更多的CPU 如果要在每次按键时移动一次,则应使用or。按下向下键时,带有键
属性pygame.K_down
的单个pygame.KEYDOWN
事件将添加到事件队列中。只需检查是否在事件循环中按下此键,然后移动精灵
import pygame as pg
pg.init()
screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
BG_COLOR = pg.Color('gray12')
pos = pg.Vector2(120, 80)
done = False
while not done:
for event in pg.event.get():
if event.type == pg.QUIT:
done = True
elif event.type == pg.KEYDOWN:
if event.key == pg.K_DOWN:
# This will be executed once per event.
pos.y += 20
elif event.key == pg.K_UP:
pos.y -= 20
screen.fill(BG_COLOR)
pg.draw.rect(screen, (0, 128, 255), (pos, (20, 20)))
pg.display.flip()
clock.tick(60)
pg.quit()
@danielchen,我很高兴你找到了你要找的东西。
import pygame as pg
pg.init()
screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
BG_COLOR = pg.Color('gray12')
pos = pg.Vector2(120, 80)
done = False
while not done:
for event in pg.event.get():
if event.type == pg.QUIT:
done = True
elif event.type == pg.KEYDOWN:
if event.key == pg.K_DOWN:
# This will be executed once per event.
pos.y += 20
elif event.key == pg.K_UP:
pos.y -= 20
screen.fill(BG_COLOR)
pg.draw.rect(screen, (0, 128, 255), (pos, (20, 20)))
pg.display.flip()
clock.tick(60)
pg.quit()