大家好,我是查理。明天教大家制作一个简化版球球大作战\
话不不多说,上代码

# -*- coding: utf-8 -*-# @Time    : 2018/7/30 16:19# @Author  : G.Hope# @Email   : 1638327522@qq.com# @File    : 吃球.py# @Software: PyCharmimport pygameimport randomimport math# 生成随机色彩def random_color():    return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)# 判断是否碰撞,并使大球吃掉小球(小球隐没,大球变大)def eat(ball1, ball2):    x1, y1 = ball1['pos']    x2, y2 = ball2['pos']    x_distance = x1 - x2    y_distance = y1 - y2    distance = math.sqrt(x_distance ** 2 + y_distance ** 2)    if distance < ball1['r'] + ball2['r']:        if ball1['r'] > ball2['r']:            ball1['r'] = ball2['r'] + ball1['r']            all_balls.remove(ball2)        else:            ball2['r'] = ball2['r'] + ball1['r']            all_balls.remove(ball1)if __name__ == '__main__':    pygame.init()    screen = pygame.display.set_mode((800, 600))    screen.fill((255, 255, 255))    pygame.display.flip()    # all_balls中保留多个球    # 每个球要保留:半径、圆心坐标、色彩、x速度、y速度    all_balls = [        {            'r': random.randint(10, 20),            'pos': (100, 100),            'color': random_color(),            'x_speed': random.randint(-1, 1),            'y_speed': random.randint(-1, 1)        },        {            'r': random.randint(10, 20),            'pos': (200, 200),            'color': random_color(),            'x_speed': random.randint(-1, 1),            'y_speed': random.randint(-1, 1)        },        {            'r': random.randint(10, 20),            'pos': (300, 300),            'color': random_color(),            'x_speed': random.randint(-1, 1),            'y_speed': random.randint(-1, 1)        }    ]    while True:        for event in pygame.event.get():            if event.type == pygame.QUIT:                exit()            if event.type == pygame.MOUSEBUTTONDOWN:                # 点一下鼠标创立一个球                ball = {                    'r': random.randint(10, 20),  # 随机大小                    'pos': event.pos,  # 设置圆心为以后鼠标点击的坐标                    'color': random_color(),                    'x_speed': random.randint(-1, 1),  # 随机方向                    'y_speed': random.randint(-1, 1)                }                # 保留球                all_balls.append(ball)        # 刷新界面        screen.fill((255, 255, 255))        for ball_dict in all_balls:            # 取出原理的x,y坐标以及他们的速度            x, y = ball_dict['pos']            x_speed = ball_dict['x_speed']            y_speed = ball_dict['y_speed']            if x >= 800:  # 设置边界并更改挪动方向                x = 800                x_speed = -1                ball_dict['x_speed'] = x_speed            if x < 0:                x = 0                x_speed = 1                ball_dict['x_speed'] = x_speed            if y >= 600:                y = 600                y_speed = -1                ball_dict['y_speed'] = y_speed            if y < 0:                y = 0                y_speed = 1                ball_dict['y_speed'] = y_speed            x += x_speed            y += y_speed            pygame.draw.circle(screen, ball_dict['color'], (x, y), ball_dict['r'])            # 更新球对应的坐标            ball_dict['pos'] = x, y        pygame.display.update()        # 碰撞        for ball1 in all_balls:            for ball2 in all_balls:                if ball1 == ball2:                    continue                eat(ball1, ball2)

制作不易,记得三连哦