gpt4 book ai didi

python - 无法让 Python Pygame 对象改变方向

转载 作者:行者123 更新时间:2023-12-01 08:47:17 25 4
gpt4 key购买 nike

我无法让 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)

if x_virus == 320:
if y_virus != 400:
y_virus += 1
virus(x_virus,y_virus)

if y_virus == 400:
if x_virus != 500:
x_virus += .5
virus(x_virus,y_virus)

if x_virus == 500:
if y_virus != 10:
y_virus -= 1
virus(x_virus,y_virus)

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

        pygame.display.update()
intro()

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

最佳答案

您没有正确地传送图像。我们来看看这个函数:

def virus(x_virus,y_virus):
screen.blit(virus_pic, (x_virus, y_virus))

您获取 x 和 y 坐标并尝试将 virus_pic 传输到屏幕。问题是你没有考虑这里的不同范围,你需要传递 screenvirus_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)

让我知道进展如何!

编辑:

它不改变方向的原因是因为在每一帧中,它的坐标每次只改变相同的精确值,因此,速度矢量保持不变,你只能看到一个方向的移动。

您需要找到一种方法使这些更改成为动态的。

关于python - 无法让 Python Pygame 对象改变方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53253299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com