美文网首页
day12作业

day12作业

作者: 七夜_174e | 来源:发表于2018-07-30 19:17 被阅读0次

使用Pygame,做一个小游戏。鼠标点击的位置生成一个随机大小、颜色和运动方向的小球,小球碰撞后,半径大的小球吃掉半径小的小球并变大,当小球大过屏幕高度就消失掉。

import pygame
import random
import math
all_balls = []
if __name__ == '__main__':
    pygame.init()
    screen = pygame.display.set_mode((640, 480))
    screen.fill((255, 255, 255))
    pygame.display.flip()

    # all_balls中保存多个球
    # 每个球要保存 :半径、圆心坐标、颜色、x速度、y速度


    while True:
        pygame.time.delay(8)
        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.randint(0, 255), random.randint(0, 255), random.randint(0, 255)),
                    'x_speed': random.randint(-3, 3),
                    'y_speed': random.randint(-3, 3)
                }
                # 保存球
                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']
            x += x_speed
            y += y_speed
            if x + ball_dict['r'] >= 640 or  x - ball_dict['r'] <= 0:
                x_speed *= -1
   
            if y - ball_dict['r'] <= 0 or y + ball_dict['r'] >= 480:
                y_speed *= -1
            pygame.draw.circle(screen, ball_dict['color'], (x, y), ball_dict['r'])
            # 更新球对应的坐标
            ball_dict['pos'] = x, y
            ball_dict['x_speed'] = x_speed
            ball_dict['y_speed'] = y_speed

        for ball_1 in all_balls:
            x1, y1 = ball_1['pos']
            for ball_2 in all_balls:
                x2, y2 = ball_2['pos']
                if ball_1 != ball_2:
                    if math.sqrt((x1 - x2)**2 + (y1 - y2)**2) < ball_1['r']+ball_2['r']:
                        if ball_2['r'] > ball_1['r']:
                            ball_2['r'] += ball_1['r']
                            all_balls.remove(ball_1)
                        else:
                            ball_1['r'] += ball_2['r']
                            all_balls.remove(ball_2)
        for ball in all_balls:
            if ball['r'] > 240:
                all_balls.remove(ball)


        pygame.display.update()

相关文章

  • 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/dtcqvftx.html