繁体   English   中英

如何在PyGame中输入格斗游戏指令

[英]How to make fighting game command inputs in PyGame

我目前正在制作格斗游戏,想知道如何添加命令输入。 我知道这有点无关紧要,很多替代品都是可能的,但使用熟悉的格斗游戏输入会很好。

我目前有这样的事情:

        keys = pygame.key.get_pressed()
        if keys[pygame.K_DOWN]:
            commandcount +=1
            if commandcount > 0 and commandcount < 30 and keys[pygame.K_RIGHT] and keys[pygame.K_z]:               
                player1.projectile = True

“commandcount”有助于将 window 的操作保持在一定时间之前可用。

这样做的主要问题是您仍然可以按任何顺序按下输入,弹丸仍然会出来。

谢谢

尝试使用 pygame.KEYDOWN 事件而不是 pygame.key.get_pressed() 以便观察顺序。 使用列表来跟踪这些 KEYDOWN 事件的顺序。 当订单与特定组合匹配时,执行移动并重置列表。 该列表也会在一定时间后使用组合重置。 我制作了一个示例程序,其中组合向下,右,z 激活火球。

import pygame

# pygame setup
pygame.init()

# Open a window on the screen
width, height = 600, 600
screen = pygame.display.set_mode((width, height))


def main():
    clock = pygame.time.Clock()
    black = (0, 0, 0)
    move_combo = []
    frames_without_combo = 0

    while True:
        clock.tick(30)  # number of loops per second
        frames_without_combo += 1

        if frames_without_combo > 30 or len(move_combo) > 2:
            print("COMBO RESET")
            frames_without_combo = 0
            move_combo = []

        screen.fill(black)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
            if event.type == pygame.KEYDOWN:
                move_combo.append(event.key)  # Only keys for combos should be added

        if move_combo == [pygame.K_DOWN, pygame.K_RIGHT, pygame.K_z]:
            print("FIRE BALL")
            frames_without_combo = 0
        print(move_combo)
        pygame.display.update()


main()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM