无法让 Python Pygame 对象改变方向

我无法在 Pygame 中获取我的对象来改变我的代码方向。


import pygame


pygame.init()


width = 900

height = 700

background_image = pygame.image.load("board.png")

background_image = pygame.transform.scale(background_image, (900, 700))


virus_pic = pygame.image.load("virus.png")

trojanvirus_pic = pygame.image.load("trojan_virus.png")

armouredvirus_pic = pygame.image.load("armoured_virus.png")


antivirus_pic = pygame.image.load("antivirus.png")

trojanantivirus_pic = pygame.image.load("trojan_antivirus.png")

armouredantivirus_pic = pygame.image.load("armoured_antivirus.png")


screen = pygame.display.set_mode((width, height))

pygame.display.set_caption("Anti Virus")


#def anitvirus():


def virus(x_virus,y_virus):

    screen.blit(virus_pic, (x_virus, y_virus))


def intro():

    background_image = pygame.image.load("intro_background.png")

    background_image = pygame.transform.scale(background_image, (900, 700))

    logo_image = pygame.image.load("logo.png")

    logo_image = pygame.transform.scale(logo_image, (600, 200))


    pygame.display.update()

    running = True

    while running:

        for event in pygame.event.get():

            if event.type == pygame.QUIT:

                running = False

                pygame.quit()

            if event.type == pygame.KEYDOWN:

                if event.key == pygame.K_SPACE:

                    main()


        screen.blit(background_image, (0, 0))

        screen.blit(logo_image, (width/2-300,100))


        pygame.display.update()


def main():

    x_virus = 0

    y_virus = 70


    pygame.display.update()

    running = True

    while running:

        for event in pygame.event.get():

            if event.type == pygame.QUIT:

                running = False

                pygame.quit()


        screen.blit(background_image, (0, 0))


        if x_virus != 320:

            x_virus += 1

            virus(x_virus,y_virus)


这是进行游戏移动的代码^


        pygame.display.update()

intro()

我不知道是否所有的 if 语句都是最有效的方法。我尝试了不同的东西,但 if 语句似乎在大多数情况下都有效。我将不胜感激任何帮助。谢谢。


不负相思意
浏览 155回答 1
1回答

侃侃无极

您没有正确地对图像进行 blitting。我们来看看这个函数:def virus(x_virus,y_virus):    screen.blit(virus_pic, (x_virus, y_virus))你接受 x 和 y 坐标并尝试 blitvirus_pic到screen. 问题是你没有考虑这里的不同范围,你需要传递screen和virus_pic作为参数,否则你的函数不知道它们是什么,所以改变你的函数看起来像这样def virus(screen,virus_pic,x_virus,y_virus):    screen.blit(virus_pic, (x_virus, y_virus))然后在您的main()函数中更改相应的代码部分。我也冒昧地将其简化了一点    if x_virus != 320:        x_virus += 1    if x_virus == 320:        if y_virus != 400:            y_virus += 1    if y_virus == 400:        if x_virus != 500:            x_virus += .5    if x_virus == 500:        if y_virus != 10:            y_virus -= 1    virus(screen,virus_pic,x_virus,y_virus)让我知道事情的后续!编辑:它不改变方向的原因是因为在每一帧,它的坐标每次都只被相同的精确值改变,因此,速度向量保持不变,你只能看到一个方向的运动。您需要找到一种方法来使这些更改具有动态性。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python