美文网首页
day11-作业

day11-作业

作者: 七一欧 | 来源:发表于2018-07-30 22:34 被阅读0次

    代码:

    """qiyiou"""
    import pygame
    import random
    import math
    
    
    # random_color = random.randint(0,255),random.randint(0,255),random.randint(0,255)
    
    if __name__ == '__main__':
       pygame.init()
       screen = pygame.display.set_mode((600,400))
       screen.fill((255,255,255))
       pygame.display.flip()
    
       # all_balls中保存多个球
       # 每个球要保存:半径、圆心坐标、颜色、x速度、y速度
       random_color = random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)
    
       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': (100, 100),
            'color': random_color,
            'x_speed': random.randint(-1, 1),
            'y_speed': random.randint(-1, 1)
            }
       ]
    
    
       while True:
           random_color = random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)
    
           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(-3,3),
                       'y_speed':random.randint(-3,3)
                   }
           #     保存球
                   all_balls.append(ball)
    
    
           # 刷新界面
           screen.fill((255,255,255))
    
    
           for ball1_dict in all_balls:
               # 取出原来的x坐标和y坐标以及他们的速度
               x1,y1 = ball1_dict['pos']
               x_speed = ball1_dict['x_speed']
               y_speed = ball1_dict['y_speed']
               ball1_r = ball1_dict['r']
               if x1+ball1_r >= 600:
                   x_speed *= -1
               if x1-ball1_r <= 0:
                   x_speed *= -1
               if y1+ball1_r >= 400:
                   y_speed *= -1
               if y1-ball1_r<= 0:
                   y_speed *= -1
    
               x1 += x_speed
               y1 += y_speed
    
    
               pygame.draw.circle(screen,ball1_dict['color'],(x1,y1),ball1_dict['r'])
               pygame.time.delay(5)
               # 更新球对应的坐标
               ball1_dict['pos'] = x1,y1
               # 更新球对应的速度
               ball1_dict['x_speed'] = x_speed
               ball1_dict['y_speed'] = y_speed
    
               for ball2_dict in all_balls:
                   if all_balls.index(ball1_dict) == all_balls.index(ball2_dict):
                       pass
                   else:
                       x2,y2 = ball2_dict['pos']#取ball2坐标
                       ball2_r =  ball2_dict['r'] #取ball2半径
    
                       a = (x1-x2)**2+(y1-y2)**2
                       if math.sqrt(a) <= (ball1_r+ball2_r):
                           if ball1_r >= ball2_r:
                               ball1_dict['r'] =  ball1_dict['r'] + ball2_dict['r']
                               all_balls.remove(ball2_dict)
    
    
           pygame.display.update()
    
    
    

    结果:

    相关文章

      网友评论

          本文标题:day11-作业

          本文链接:https://www.haomeiwen.com/subject/fqvqvftx.html