注册 登录
编程论坛 Python论坛

move()方法中speed[0]和speed[1]什么意思?有什么作用?

shenggeyanwu 发布于 2017-11-04 09:58, 2846 次点击
import sys,pygame
from random import*

class MyBallClass(pygame.sprite.Sprite):
    def __init__(self,image_file,location,speed):
        pygame.sprite.Sprite.__init__(self)
        self.image=pygame.image.load(image_file)
        self.rect=self.image.get_rect()
        self.rect.left,self.rect.top=location
        self.speed=speed

    def move(self):
        self.rect=self.rect.move(self.speed)
        if self.rect.left<0 or self.rect.right>width:
            self.speed[0]=-self.speed[0]              #这个0是什么意思?有什么作用?
        if self.rect.top<0 or self.rect.bottom>height:
            self.speed[1]=-self.speed[1]              #这个1是什么意思?有什么作用?

def animate(group):
    screen.fill([255,255,255])
    for ball in group:
        group.remove(ball)
        if pygame.sprite.spritecollide(ball,group,False):
            ball.speed[0]=-ball.speed[0]
            ball.speed[1]=-ball.speed[1]

        group.add(ball)
        ball.move()
        screen.blit(ball.image,ball.rect)
    pygame.display.flip()
    pygame.time.delay(20)
size=width,height=1200,680
screen=pygame.display.set_mode(size)
screen.fill([255,255,255])
img_file='ppq.png'
group=pygame.sprite.Group()
for row in range(0,2):
    for column in range(0,2):
        location=[column*180+10,row*180+10]
        speed=[choice([2,-2]),choice([-2,2])]
        ball=MyBallClass(img_file,location,speed)
        group.add(ball)

running=True
while running:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            running=False
    animate(group)
pygame.quit()


请高手给我详细解答这个move()函数的原理,特别是其中的speed[0]和speed[1]到底什么意思?有什么作用?方括号里用红色标出的0和1是什么意思啊?

[此贴子已经被作者于2017-11-5 10:19编辑过]

0 回复
1