[英]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.