美文网首页
球球大作战

球球大作战

作者: 剑眉星目cz | 来源:发表于2018-07-30 23:09 被阅读0次
import pygame
import math
import random

def random_color():
    return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)

def random_speed():
    return random.randint(-3, 3)

def impact(ball1, ball2):
    x1, y1 = ball1['pos']
    x2, y2 = ball2['pos']
    distance_x = x1 - x2
    distance_y = y1 - y2
    distance = math.sqrt(distance_x ** 2 + distance_y ** 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((600, 400))
    screen.fill((255, 255, 255))
    pygame.display.flip()

    # all_ball中保存多个球
    # 每个球要保存:半径、圆心坐标、颜色、x速度、y速度
    all_balls = [
        {'r': random.randint(10, 20), 'pos': (100, 100), 'color': random_color(),
         'x_speed': random_speed(), 'y_speed': random_speed()},
        {'r': random.randint(10, 20), 'pos': (100, 100), 'color': random_color(),
         'x_speed': random_speed(), 'y_speed': random_speed()},
    ]



    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()

            if event.type == pygame.MOUSEBUTTONDOWN:
                # 点击鼠标创建一个球
                ball = {'r': random.randint(10, 25),
                        'pos': event.pos,
                        'color': random_color(),
                        'x_speed': random_speed(),
                        'y_speed': random_speed()
                        }

                # 保存球
                all_balls.append(ball)



        # 刷新界面
        screen.fill((255, 255, 255))

        pygame.time.delay(10)

        # 多球运动
        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']
            x += x_speed
            y += y_speed
            if x + ball_dict['r'] >= 600:
                x = 600 -ball_dict['r']
                ball_dict['x_speed'] *= -1
            if x - ball_dict['r'] <= 0:
                x = ball_dict['r']
                ball_dict['x_speed'] *= -1
            if y + ball_dict['r'] >= 400:
                y = 400 -ball_dict['r']
                ball_dict['y_speed'] *= -1
            if y - ball_dict['r'] <= 0:
                y = ball_dict['r']
                ball_dict['y_speed'] *= -1

            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
                impact(ball1, ball2)

相关文章

  • day13_python_pygame(老师例题)

    球球大作战

  • 球球大作战

  • 球球大作战

    欢迎来到球球大作战,也是一个不错的选择,球球大作战是一个大球吃小球的一个游戏

  • 球球大作战

    球球大作战,大家应该都玩过,可是我今天玩的球球大作战可不是游戏哦! 这个星期五的晚上,妈妈说要带我...

  • 2017-07-20

    我最喜欢的电子游戏是球球大作战,跟贪吃蛇大作战相似。它的规则是求底下还没有标志的时候不能吐球、喷球。如果球在你...

  • 2017-08-25

    今天我们就来聊一款网上热门游戏球球大作战! 今天装逼松鼠带你挑战球球大作战生存模式! 首先让我看到生存模式,你有可...

  • 中秋佳节!球球大作战中秋皮肤花好月圆获取方法

    球球大作战中秋节花好月圆新皮肤上线啦,本次更新了2款光环皮肤,下面小编为大家带来的是球球大作战中秋光环皮肤花好月圆...

  • 球球大作战

  • 球球大作战

    前不久玩了一款游戏,球球大作战,知道它还是因为朋友们在各种群里分享的,刚开始也没当回事,就当一个广告一样置之不理,...

  • 球球大作战

    在一款名叫球球大作战的游戏中发现,一个人行动确实很难发展到很好,但是找人合作,找一个靠谱的合作才行。 找合作也分几...

网友评论

      本文标题:球球大作战

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