Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 如何知道在pygame中空格键按下是否超过2秒_Python_Pygame - Fatal编程技术网

Python 如何知道在pygame中空格键按下是否超过2秒

Python 如何知道在pygame中空格键按下是否超过2秒,python,pygame,Python,Pygame,所以,我用pygame制作了一个简单的游戏,其中一个忍者必须躲避他面前的障碍物,问题是我不知道如何知道空格键(用于跳跃)是否按下超过2秒 我在很多网站上搜索过这个答案,但都找不到 请注意,我是一个初学者 这是我的密码: import pygame,time #import pygame.init() #pygame initialization screen = pygame.display.set_mode((0,0)) pygame.quit() canvas = pygame.di

所以,我用pygame制作了一个简单的游戏,其中一个忍者必须躲避他面前的障碍物,问题是我不知道如何知道空格键(用于跳跃)是否按下超过2秒

我在很多网站上搜索过这个答案,但都找不到

请注意,我是一个初学者

这是我的密码:

import pygame,time #import


pygame.init() #pygame initialization

screen = pygame.display.set_mode((0,0))
pygame.quit()

canvas = pygame.display.set_mode((1000,780)) #creating screen
caption = pygame.display.set_caption("Ninja Run") #creating caption

iconImage = pygame.image.load("C:/Garv/python/pygame/Ninja Game/Ninja_logo.png")
icon = pygame.display.set_icon(iconImage) #drawing icon image

land = pygame.image.load("C:/Garv/python/pygame/Ninja Game/land.jfif") #land image
sky = pygame.image.load("C:/Garv/python/pygame/Ninja Game/sky.jfif") # sky image

x = 50
y = 594

start = time.time()
ninjaRun = [pygame.image.load("C:/Garv/python/pygame/Ninja Game/ninja running 1.jpg"),pygame.image.load("C:/Garv/python/pygame/Ninja Game/ninja running 2.jpg")] #ninja images
ninjaImage = ninjaRun[0]

# ninjaStars = pygame.image.load("C:/Garv/python/pygame/Ninja Game/ninja stars.png")

class Ninja:
    def __init__(self,canvas,start,run,image,x,y): #Initializing of variables
        self.canvas = canvas
        self.start = start
        self.run = run
        self.image = image
        self.x = x
        self.y = y
    def ninja(self): #ninja movement method
        self.image = ninjaRun[0]
        self.time = 15
        self.sec = int((time.time()-self.start)*self.time)
        if self.sec % 2 != 0:
            self.image = ninjaRun[0]
        elif self.sec % 2 == 0:
            self.image = ninjaRun[1]
            
        self.canvas.blit(self.image, (self.x,self.y)) #ninja draw
        
        
player = Ninja(canvas,start,ninjaRun,ninjaRun[0],x,y) #calling Ninja class

cnt = 0

startTime = time.time()
        
while True: #main loop
    for event in pygame.event.get(): #event handler
        if event.type == pygame.QUIT: #quit handler
            pygame.quit()
            import sys
            sys.exit()
        
        if event.type == pygame.KEYDOWN: #keydown
            if event.key == pygame.K_SPACE: 
                player.y -= 200
                if player.y < 394:
                    player.y += 200
        if event.type == pygame.KEYUP: #keyup
            if event.key == pygame.K_SPACE:
                player.y += 200
                
                
    # canvas.blit(ninjaStars, (500,500))
    pygame.draw.rect(canvas,(250,250,250),(500,500,20,20))
    canvas.blit(land, (0,718)) #land drawing
    canvas.blit(sky, (0,0)) #sky drawing
    player.ninja() #ninja drawing
    
    pygame.display.update() #display update
    
    
import pygame,time#import
pygame.init()#pygame初始化
screen=pygame.display.set_模式((0,0))
pygame.quit()
canvas=pygame.display.set_模式((1000780))35;创建屏幕
caption=pygame.display.set_caption(“忍者奔跑”)#创建字幕
iconImage=pygame.image.load(“C:/Garv/python/pygame/Ninja Game/Ninja_logo.png”)
icon=pygame.display.set_图标(iconImage)#绘制图标图像
land=pygame.image.load(“C:/Garv/python/pygame/Ninja-Game/land.jfif”)#land-image
sky=pygame.image.load(“C:/Garv/python/pygame/Ninja-Game/sky.jfif”)#天空图像
x=50
y=594
开始=时间。时间()
ninjaRun=[pygame.image.load(“C:/Garv/python/pygame/Ninja Game/Ninja running 1.jpg”)、pygame.image.load(“C:/Garv/python/pygame/Ninja Game/Ninja running 2.jpg”)#忍者图像
ninjaImage=ninjaRun[0]
#忍者之星=pygame.image.load(“C:/Garv/python/pygame/Ninja-Game/Ninja-stars.png”)
忍者等级:
定义初始化(self、canvas、start、run、image、x、y):#初始化变量
self.canvas=画布
self.start=开始
self.run=run
self.image=image
self.x=x
self.y=y
定义忍者(自我):#忍者移动方法
self.image=ninjaRun[0]
self.time=15
self.sec=int((time.time()-self.start)*self.time)
如果self.sec%2!=0:
self.image=ninjaRun[0]
elif self.sec%2==0:
self.image=ninjaRun[1]
self.canvas.blit(self.image,(self.x,self.y))#忍者绘画
玩家=忍者(画布,开始,忍者,忍者[0],x,y)#召唤忍者职业
cnt=0
startTime=time.time()
如果为True:#主循环
对于pygame.event.get()中的事件:#事件处理程序
如果event.type==pygame.QUIT:#退出处理程序
pygame.quit()
导入系统
sys.exit()
如果event.type==pygame.KEYDOWN:#KEYDOWN
如果event.key==pygame.K_空间:
player.y-=200
如果player.y<394:
player.y+=200
如果event.type==pygame.KEYUP:#KEYUP
如果event.key==pygame.K_空间:
player.y+=200
#帆布布利特(忍者(500500))
pygame.draw.rect(画布,(250250),(500500,20,20))
画布.布利特(土地,(0718))#土地图纸
canvas.blit(天空,(0,0))#天空绘制
player.ninja()#忍者绘图
pygame.display.update()#显示更新
用于获取调用后的毫秒数:

为True时:#主循环
对于pygame.event.get()中的事件:#事件处理程序
如果event.type==pygame.QUIT:#退出处理程序
# [...]
如果event.type==pygame.KEYDOWN:#KEYDOWN
如果event.key==pygame.K_空间:
space\u start=pygame.time.get\u ticks()
# [...]
如果event.type==pygame.KEYUP:#KEYUP
如果event.key==pygame.K_空间:
space\u end=pygame.time.get\u ticks()
如果空间结束-空间开始>=2000:
# [...]

按键时,用
time.time()
记录时间,释放后,检查差值是否大于2秒。@Loocid在pygame中,您应该使用
pygame.time.get_ticks()