Python pygame key.set\u重复不工作
我是pygame的新手,我正在尝试制作乒乓球以学习它。我正试图使控制平滑,以便按下箭头将工作,但它现在不工作Python pygame key.set\u重复不工作,python,pygame,Python,Pygame,我是pygame的新手,我正在尝试制作乒乓球以学习它。我正试图使控制平滑,以便按下箭头将工作,但它现在不工作 import sys, pygame pygame.init() size = (500, 350) screen = pygame.display.set_mode(size) x = 1 xwid = 75 yhei = 5 pygame.key.set_repeat(0, 500) while True: vector = 0 for event in pygame
import sys, pygame
pygame.init()
size = (500, 350)
screen = pygame.display.set_mode(size)
x = 1
xwid = 75
yhei = 5
pygame.key.set_repeat(0, 500)
while True:
vector = 0
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
vector = 4
elif event.key == pygame.K_LEFT:
vector = -4
pygame.draw.rect(screen,(255,255,255),(x,size[1] - yhei,xwid,yhei),0)
pygame.display.update()
screen.fill((0,0,0))
x += vector
if x <= 0:
x = 0
elif x >= size[0] - xwid:
x = size[0] - xwid
导入系统,pygame
pygame.init()
大小=(500350)
screen=pygame.display.set_模式(大小)
x=1
xwid=75
yhei=5
pygame.key.set_重复(0500)
尽管如此:
向量=0
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:sys.exit()
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_RIGHT:
向量=4
elif event.key==pygame.K_左:
向量=-4
pygame.draw.rect(屏幕,(255255255),(x,大小[1]-yhei,xwid,yhei),0)
pygame.display.update()
屏幕填充((0,0,0))
x+=向量
如果x=大小[0]-xwid:
x=尺寸[0]-xwid
为什么按住左箭头或右箭头不起作用?我知道你的意思。试试这个:
import sys, pygame
from pygame.locals import *
pygame.init()
size = (500, 350)
screen = pygame.display.set_mode(size)
x = 1
xwid = 75
yhei = 5
clock = pygame.time.Clock()
while True:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
key_pressed = pygame.key.get_pressed()
if key_pressed[K_LEFT]:
x -= 4
if x <= 0:
x = 0
if key_pressed[K_RIGHT]:
x += 4
if x >= size[0] - xwid:
x = size[0] - xwid
pygame.draw.rect(screen,(255,255,255),(x,size[1] - yhei,xwid,yhei),0)
pygame.display.update()
screen.fill((0,0,0))
导入系统,pygame
从pygame.locals导入*
pygame.init()
大小=(500350)
screen=pygame.display.set_模式(大小)
x=1
xwid=75
yhei=5
clock=pygame.time.clock()
尽管如此:
时钟滴答(60)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
pygame.quit()
sys.exit()
按键=pygame.key.get_pressed()
如果按[左]键:
x-=4
如果x=大小[0]-xwid:
x=尺寸[0]-xwid
pygame.draw.rect(屏幕,(255255255),(x,大小[1]-yhei,xwid,yhei),0)
pygame.display.update()
屏幕填充((0,0,0))
如果将delay
参数设置为0
,则按键重复将被禁用。政府对此并不十分清楚:
pygame.key.set\u repeat()控制保持键的重复方式
set\u repeat()->None
set\u repeat(延迟、间隔)->None
启用键盘重复时,按下的键将生成
多个pygame.KEYDOWN事件。延迟是指
将发送第一次重复的pygame.KEYDOWN之前的毫秒。
之后,每隔一段时间将发送另一个pygame.KEYDOWN
毫秒如果未传递任何参数,则禁用键重复。
当pygame初始化时,密钥重复被禁用
我的
您可以将延迟设置为1
,它将按预期工作:
pygame.key.set_repeat(1, 10) # use 10 as interval to speed things up.
但是请注意,您不应该使用set\u repeat
和pygame.KEYDOWN
事件来实现移动。如果你这样做,你将无法观察到真正的单键击球,因为如果玩家按下一个键,将创建一大堆pygame.KEYDOWN
事件
更好地使用。看一看他的小例子:
import pygame
pygame.init()
screen = pygame.display.set_mode((680, 460))
clock = pygame.time.Clock()
# use a rect since it will greatly
# simplify movement and drawing
paddle = pygame.Rect((0, 0, 20, 80))
while True:
if pygame.event.get(pygame.QUIT): break
pygame.event.pump()
# move up/down by checking for pressed keys
# and moving the paddle rect in-place
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]: paddle.move_ip(0, -7)
if keys[pygame.K_DOWN]: paddle.move_ip(0, 7)
# ensure the paddle rect does not go out of screen
paddle.clamp_ip(screen.get_rect())
screen.fill((0,0,0))
pygame.draw.rect(screen, (255,255,255), paddle)
pygame.display.flip()
clock.tick(60)
试试看
pygame.key.set_repeat(1,500)
你想做什么?如果你想更多地了解pygame,我建议你做一些小游戏。这里有一个很好的例子:如果你看代码,一切都很好。它在按下时移动,不起作用的是重复,这就是我的全部asking@KillConsole:您链接中的示例不包括我试图用设置\u repeat
pygame.key.set_repeat(1,500)