2021年5月7日python的简单小游戏(3)-多彩球碰边反弹与鼠标增数

多个多彩球碰边反弹

import pgzrun
import random
WIDTH=800
HEIGHT=400
balls = []
#定义100个小球的所有信息
for i in range (10):  
    x = random.randint(100, WIDTH-100)  # 小球X方向坐标
    y = random.randint(100, HEIGHT-100)  # 小球Y方向坐标
    speed_x = random.randint(1, 5)  # 小球X方向速度
    speed_y = random.randint(1, 5)  # 小球y方向速度
    r=random.randint(10,50)#小球半径
    colorR = random.randint(10, 255)#小球颜色
    colorG = random.randint(10, 255)#小球颜色
    colorB = random.randint(10, 255)#小球颜色
#将100个小球存入列表
    ball = [x, y, speed_x,speed_y, r, colorR, colorG, colorB]
    balls.append(ball)

def draw():#画所有的同心圆
    screen.fill('white')
    for ball in balls:#绘制所有的圆
        screen.draw.filled_circle((ball[0],ball[1]),ball[4],(ball[5],ball[6],ball[7]))
        for x in range(1,ball[4],3):#以原来的圆心,画几个同心圆
            screen.draw.filled_circle((ball[0], ball[1]), ball[4]-x, (random.randint(ball[5], 255), random.randint(ball[6], 255), random.randint(ball[7],255)))



def on_mouse_move(pos,rel,buttons):#当鼠标移动时 ,鼠标互动
    if mouse.LEFT in buttons:#当按下鼠标左键时
        x=pos[0]#鼠标的x坐标
        y=pos[1]#鼠标的y坐标
        speed_x = random.randint(1, 5)  # 小球X方向速度
        speed_y = random.randint(1, 5)  # 小球y方向速度
        r = random.randint(10, 50)  # 小球半径
        colorR = random.randint(10, 255)  # 小球颜色
        colorG = random.randint(10, 255)  # 小球颜色
        colorB = random.randint(10, 255)  # 小球颜色
        ball = [x, y, speed_x, speed_y, r, colorR, colorG, colorB]
        balls.append(ball)

def update():  # 更新模块
    for ball in balls:
        ball[0] = ball[0]+ball[2]  # 更新X方向坐标
        ball[1] = ball[1]+ball[3]  # 更新Y方向坐标
        #碰壁时返弹
        if ball[0] > WIDTH-ball[4] or ball[0] < ball[4]:  # x方向上碰壁反弹
            ball[2] = -ball[2]
        if ball[1] > HEIGHT-ball[4] or ball[1] < ball[4]:  # y方向上碰壁反弹
            ball[3] = -ball[3]

pgzrun.go()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值