我无法让我的对象在我的代码中改变方向。
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语句在大多数情况下似乎有效。我很感谢你的帮助。谢谢。
发布于 2018-11-11 21:31:26
你没有正确地闪现图像。让我们来看看这个函数:
def virus(x_virus,y_virus):
screen.blit(virus_pic, (x_virus, y_virus))您接受x和y坐标,并尝试将virus_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)告诉我是怎么回事!
编辑:
它不改变方向的原因是,在每一帧中,它的坐标每次只被相同的精确值改变,因此,速度矢量保持不变,你只能看到一个方向的运动。
您需要找到一种方法,使这些更改是动态的。
https://stackoverflow.com/questions/53253299
复制相似问题