在我停止按特定键后,如何使Pacman继续移动?

发布于 2025-02-01 10:25:31 字数 829 浏览 4 评论 0原文

我希望主角继续朝我选择的特定方向移动,直到按下另一个键为止。 这是我所做的代码:

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

I want the main character to continue to move in the specific direction I chose until I press another key.
This is the code for what I did:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

没︽人懂的悲伤 2025-02-08 10:25:31

这是凹痕。您必须在应用程序循环中连续移动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

    # [...]

It is a matter of Indentation. You have to move Pacman continuously in the application loop instead of the event loop:

# 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

    # [...]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文