python-3.x 我怎样才能让pacman在我停止按某个特定键后继续移动?

k10s72fa  于 2022-12-24  发布在  Python
关注(0)|答案(1)|浏览(112)

我希望主角继续沿着我选择的方向移动,直到我按下另一个键。下面是我所做的代码:

for event in pygame.event.get():
    if event.type==pygame.KEYDOWN:
        if event.key==pygame.K_q:
            pygame.quit()
        elif event.key==pygame.K_w:
            dir="Up"
        elif event.key==pygame.K_s:
            dir="Down"
        elif event.key==pygame.K_d:
            dir="Right"

        if dir=="Up":
            if valid_move((ChY-45)//size, (ChX)//size):
                ChY-=15
        if dir=="Down":
            if valid_move((ChY+45)//size, (ChX)//size):
                ChY+=15
        if dir=="Right":
            if valid_move((ChY)//size, (ChX+45)//size):
                ChX+=15
        if dir=="Left":
            if valid_move((ChY)//size, (ChX-45)//size):
                ChX-=15
knsnq2tg

knsnq2tg1#

这是一个Indentation的问题,你必须在应用程序循环中而不是在事件循环中不断地移动Pacman:

# application loop
run = True
while run:

    # event loop 
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
        if event.type == pygame.KEYDOWN:
            if event.key==pygame.K_q:
                run = False
            elif event.key==pygame.K_w:
                dir="Up"
            elif event.key==pygame.K_s:
                dir="Down"
            elif event.key==pygame.K_d:
                dir="Right"
            elif event.key==pygame.K_a:
                dir="Left"

    # INDENTATION
    #<--|

    if dir=="Up":
        if valid_move((ChY-45)//size, (ChX)//size):
            ChY-=15
    if dir=="Down":
        if valid_move((ChY+45)//size, (ChX)//size):
            ChY+=15
    if dir=="Right":
        if valid_move((ChY)//size, (ChX+45)//size):
            ChX+=15
    if dir=="Left":
        if valid_move((ChY)//size, (ChX-45)//size):
            ChX-=15

    # [...]

相关问题