首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在pygame中的按键事件上对图像进行blit

如何在pygame中的按键事件上对图像进行blit
EN

Stack Overflow用户
提问于 2013-11-02 00:50:52
回答 2查看 463关注 0票数 0

当event K_SPACE被触发时,我正在尝试将图像显示在屏幕上。但是,当我按空格键时,什么也没有发生。我试过在屏幕更新或翻转的地方移动,但遇到了困难。

下面是我的代码:

代码语言:javascript
复制
def Play():

    background = pygame.image.load(bifPlay).convert() 
    char = pygame.image.load(mif).convert_alpha()
    bullet = pygame.image.load(bulletLoad).convert()
    zombie = pygame.image.load(zombieLoad).convert_alpha()
    #converting images needed so pygame can use them
    x,y = 115,350
    movex, movey = 0,0
    zombieX = 1100
    zombieY = random.randint(0,675)
    bulletX = x+90
    bulletY = y+37.5
    clock = pygame.time.Clock()
    zombieSpeed = 100
    bulletSpeed = 200
    while True:

        milli = clock.tick()
        seconds = milli/1000.
        zomMovement = seconds*zombieSpeed
        bulletMovement = seconds*bulletSpeed
        zombieX-=zomMovement
        bulletX+=bulletMovement
        x += movex
        y += movey
        screen.blit(background,(0,0))
        screen.blit(char,(x,y))
        screen.blit(zombie,(zombieX,zombieY))
        spacePressed = pygame.key.get_pressed()

        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
    #code above allows the user to exit - while program is running if event is exit
    #allows user to exit program.
            if event.type == KEYDOWN:
                if event.key == K_UP:
                    movey =-1
                elif event.key == K_DOWN:
                    movey =+1
                elif event.key == K_SPACE:
                    screen.blit(bullet,(bulletX,bulletY))
            if event.type == KEYUP:
                if event.key == K_UP:
                    movey =0
                elif event.key == K_DOWN:
                    movey =0

        if y == 675: 
            y -= 1
        if y == 0: 
            y +=1
        pygame.display.update()
EN

回答 2

Stack Overflow用户

发布于 2013-11-02 00:58:39

您的图像正在显示,但只显示了一次,然后它就被背景冲走了。使用clock.tick()减慢循环的速度,看看它是否正在显示。

票数 1
EN

Stack Overflow用户

发布于 2014-01-03 06:18:07

由于您有spacePressed,因此使用它来绘制项目符号如下:

代码语言:javascript
复制
if spacePressed[K_SPACE]:
    screen.blit(bullet, (bulletx, bullety))

您也可以对任何密钥使用spacePressed。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19731385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档