美文网首页
Day12—作业

Day12—作业

作者: C0mpass | 来源:发表于2018-09-04 23:48 被阅读0次
  • pygame大球吃小球
"""__author__=Zeng"""
import pygame
from random import randint
from math import sqrt
from math import fabs

if __name__ == '__main__':
    # 初始化游戏模块
    pygame.init()
    # 创建窗体
    window = pygame.display.set_mode((400, 600))
    window.fill((255, 255, 255))

    balls = []  # 创建一个列表来存放多个小球
    # 游戏运行
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()
            if event.type == pygame.MOUSEBUTTONDOWN:
                # 鼠标点下事件创建小球
                ball = {
                        'color':(randint(0,255), randint(0,255), randint(0,255)),
                        'r':randint(10,20),
                        'pos':event.pos,
                        'x_speed':randint(-2,2),
                        'y_speed':randint(-2,2)
                }
                balls.append(ball)
        # 屏幕重覆盖
        window.fill((255, 255, 255))
        # 各个球相对位置判断
        for ball in balls:
            x,y = ball['pos']
            # 遍历其他球
            for ball1 in balls:
                x1,y1 = ball1['pos']
                # 如果两个球相撞,半径大的球吃掉半径小的球,而小球消失
                if ball1['pos'] != ball['pos'] and sqrt((x-x1)**2+(y-y1)**2) < (ball['r']+ball1['r']):
                    # 球半径大的吸收半径小的,将小球销毁
                    if ball['r'] >= ball1['r']:
                        ball['r'] += ball1['r']
                        # 如果球的半径过大,将其销毁,改变为初始的任意球
                        if (x-ball['r'] <= 0 or x+ball['r'] >= 400) or (y-ball['r'] <= 0 or y+ball['r'] >= 600):
                            ball['r'] = randint(10,20)
                        balls.remove(ball1)
            x_speed = ball['x_speed']
            y_speed = ball['y_speed']
            x += x_speed
            y += y_speed
            # 越界判断,越界改变方向轴速度
            if x > 400 - ball['r']:
                x = 400 - ball['r']
                ball['x_speed'] = 0 - ball['x_speed']
            elif x < ball['r']:
                x = ball['r']
                ball['x_speed'] = 0 - ball['x_speed']
            if y > 600 - ball['r']:
                y = 600 - ball['r']
                ball['y_speed'] = 0 - ball['y_speed']
            elif y < ball['r']:
                y = ball['r']
                ball['y_speed'] = 0 - ball['y_speed']
            pygame.draw.circle(window,ball['color'],(x,y),ball['r'])
            # 更新球坐标
            ball['pos'] = x,y
        pygame.time.delay(10)
        pygame.display.flip()

相关文章

  • day12 作业 2018-07-31

    -- coding: utf-8 --"""File Name: day12作业Author : ...

  • Day12卡片法积累素材

    DAY12 学习课程:《Day12:向大师偷艺,如何用纳博科夫卡片法积累一流作家的顶级素材》 今日作业:完成三张写...

  • 【2班3组】Day24,打造个人品牌的实操方法(进阶)

    [学员信息] 22+金色太阳+Day12小作业 [作业要求] 给自己找一个有机会能达到第一的细分领域。 [作业...

  • 求和函数Sumif.Sumifs

    DAY12 求和函数Sumif,Sumifs 回顾目标: 001.听课后,完成作业,及时打卡,复盘。 评估结果: ...

  • 【1班3组】+ Day12《如何提炼出牛逼的文章观点》

    【1班3组】+ Day12《如何提炼出牛逼的文章观点》 【学员信息】311-曲奇小溪-小作业7 大作业1: 可以从...

  • day12作业

    使用Pygame,做一个小游戏。鼠标点击的位置生成一个随机大小、颜色和运动方向的小球,小球碰撞后,半径大的小球吃掉...

  • day12作业

    用pygame编写多个球各自移动,两球相撞互相反弹,球碰到边界反弹,球通过点击屏幕产生。

  • Day12—作业

    pygame大球吃小球

  • day12作业

  • 作业_Day12

    声明一个电脑类属性:品牌、颜色、内存大小方法:打游戏、写代码、看视频 a.创建电脑类的对象,然后通过对象点的方式获...

网友评论

      本文标题:Day12—作业

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