Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果我在游戏中连续按两次键,我想让角色跑得更快_Python_Pygame - Fatal编程技术网

Python 如果我在游戏中连续按两次键,我想让角色跑得更快

Python 如果我在游戏中连续按两次键,我想让角色跑得更快,python,pygame,Python,Pygame,这是我写的代码的一部分 enter code here import pygame from pygame.locals import QUIT, KEYDOWN, KEYUP,\ K_LEFT, K_RIGHT, K_DOWN, K_SPACE, K_UP pygame.init() pygame.key.set_repeat(30, 30) while True: to_x1 = 0 for event

这是我写的代码的一部分

enter code here
    import pygame
    from pygame.locals import QUIT, KEYDOWN, KEYUP,\
        K_LEFT, K_RIGHT, K_DOWN, K_SPACE, K_UP
    pygame.init()
    pygame.key.set_repeat(30, 30)
    while True:
        to_x1 = 0
        for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    sys.quit()
                keys = pygame.key.get_pressed()
                if keys[pygame.K_LEFT]:
                    to_x1 = -5
                if keys[pygame.K_RIGHT]:
                    to_x1 = 5
        CHARIC_1.xpos1 = CHARIC_1.xpos1 + to_x1
CHARIC_1.xpos1是角色的x坐标。 我想让我的角色在我快速按两次左右键时跑得更快。
我一辈子都不知道。如果您知道如何操作,我希望您能告诉我。

您必须使用键盘事件
键下键(请参阅),而不是。用于获取调用
pygame.init()
后的毫秒数。存储按键的时间。如果在一定时间内按下按钮两次,则会增加速度:

按键时间=0
快捷键时间=500 0.5秒
尽管如此:
当前时间=pygame.time.get_ticks()
# [...]
对于pygame.event.get()中的事件:
# [...]
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_左:
如果to_x1==-5且当前_时间<按键时间+快速按键时间:
to_x1=-10
其他:
to_x1=-5
按键时间=当前时间
如果event.key==pygame.K_RIGHT:
如果to_x1==5且当前_时间<按键时间+快速按键时间:
to_x1=10
其他:
to_x1=5
按键时间=当前时间
CHARIC_1.xpos1=CHARIC_1.xpos1+到_x1
# [...]

最简单的例子:

导入pygame
pygame.init()
window=pygame.display.set_模式((500500))
clock=pygame.time.clock()
rect=pygame.rect(0,0,20,20)
rect.center=window.get_rect().center
to_x1=0
按键时间=0
快捷键时间=500 0.5秒
运行=真
运行时:
当前时间=pygame.time.get_ticks()
时钟滴答(60)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_左:
如果to_x1==-5且当前_时间<按键时间+快速按键时间:
to_x1=-10
其他:
to_x1=-5
按键时间=当前时间
如果event.key==pygame.K_RIGHT:
如果to_x1==5且当前_时间<按键时间+快速按键时间:
to_x1=10
其他:
to_x1=5
按键时间=当前时间
矩形x+=至_x1
rect.centerx=rect.centerx%窗口。获取宽度()
rect.centery=rect.centery%窗口。获取高度()
窗口填充(0)
pygame.draw.rect(窗口,(255,0,0),rect)
pygame.display.flip()

您必须使用键盘事件
KEYDOWN
(请参阅)而不是。用于获取调用
pygame.init()
后的毫秒数。存储按键的时间。如果在一定时间内按下按钮两次,则会增加速度:

按键时间=0
快捷键时间=500 0.5秒
尽管如此:
当前时间=pygame.time.get_ticks()
# [...]
对于pygame.event.get()中的事件:
# [...]
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_左:
如果to_x1==-5且当前_时间<按键时间+快速按键时间:
to_x1=-10
其他:
to_x1=-5
按键时间=当前时间
如果event.key==pygame.K_RIGHT:
如果to_x1==5且当前_时间<按键时间+快速按键时间:
to_x1=10
其他:
to_x1=5
按键时间=当前时间
CHARIC_1.xpos1=CHARIC_1.xpos1+到_x1
# [...]

最简单的例子:

导入pygame
pygame.init()
window=pygame.display.set_模式((500500))
clock=pygame.time.clock()
rect=pygame.rect(0,0,20,20)
rect.center=window.get_rect().center
to_x1=0
按键时间=0
快捷键时间=500 0.5秒
运行=真
运行时:
当前时间=pygame.time.get_ticks()
时钟滴答(60)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_左:
如果to_x1==-5且当前_时间<按键时间+快速按键时间:
to_x1=-10
其他:
to_x1=-5
按键时间=当前时间
如果event.key==pygame.K_RIGHT:
如果to_x1==5且当前_时间<按键时间+快速按键时间:
to_x1=10
其他:
to_x1=5
按键时间=当前时间
矩形x+=至_x1
rect.centerx=rect.centerx%窗口。获取宽度()
rect.centery=rect.centery%窗口。获取高度()
窗口填充(0)
pygame.draw.rect(窗口,(255,0,0),rect)
pygame.display.flip()

快速是什么意思?有什么规则可以告诉你按键的距离是否足够近?然后呢?角色应该跑多快?角色是否应该以相同的速度运行,直到。。。什么时候你需要仔细考虑实际需要发生的事情的逻辑,然后这将是很简单的:你只需要知道你必须记住的事情(例如,“上次按键发生在多长时间之前?”)以及如何处理这些信息。但对于堆栈溢出来说,这都不是一个好问题。如果你需要设计方面的帮助,你可以试试gamedev.stackexchange.com,但是你仍然需要一个更精确的想法来了解你希望事情如何运作;(2) 将按键状态保存到变量中;(3) 研究如何获取系统时间;将其添加到您的按键处理程序中;(4) 当你得到一个左键或右键,然后你检查(a)它是否与前一个相同;(b) 它和前一个“很接近”吗?如果是这样,则根据需要将移动参数增加到10或-10。您可以找到一个示例