(笔记+实例)python之pygame基础2

实现效果: 实现9个小球互相碰撞之后反弹

代码如下

/*动画精灵:把动画精灵想象成一个小图片,一种可以再屏幕上移动的图形对象,
两个基本属性:
   1.图像image:为动画精灵显示的图片
   2.矩形区rect:包含动画精灵的矩形区域
动画精灵sprite模块,动画精灵Sprite基类
*/
import pygame, sys  // #引入pygame
from random import *  //#引入random所有的包,choice调用
class MyBallClass(pygame.sprite.Sprite):  // #创建一个class类 pygame下的精灵模块下的基类
   def __init__(self, image_file, location, speed):   //#init方法 slef不可移动,省略
       pygame.sprite.Sprite.__init__(self)   //#初始化动画精灵
       self.image = pygame.image.load(image_file)  //#赋值 传参 加载图片
       self.rect = self.image.get_rect()  // #两个基本属性 得到定义图像边界矩形
       self.rect.left, self.rect.top = location  //#左边距,上边距 设置球的初始位置
       self.speed = speed  // #赋值 传参  速度
   def move(self): // # 定义移动方法
       self.rect = self.rect.move(self.speed)  //#自带的move方法
       if self.rect.left < 0 or self.rect.right > width:  //#如果球的位置移动到左边小于0 或者右边大于窗口宽度
           self.speed[0] = -self.speed[0]  //#反向运动
       if self.rect.top < 0 or self.rect.bottom > height:  //#如果球的位置移动到上边小于0 或者下边大于窗口宽度
           self.speed[1] = -self.speed[1]  //#反向运动

''' 碰撞删除  检测  再放回去'''
def animate(group):  // #小球的组
   screen.fill([255,255,255])  // #背景颜色
   for ball in group:  //#再组中调用move方法
       ball.move()
   for ball in group:
       group.remove(ball)  //#从组中删除
       if pygame.sprite.spritecollide(ball, group, False):   //#检查动画与组的碰撞
           ball.speed[0] = -ball.speed[0]  //# 横向翻转
           ball.speed[1] = -ball.speed[1]  //# 纵向翻转
       group.add(ball)  //#将球再放回到组中 
       screen.blit(ball.image, ball.rect)  //# 快移
   pygame.display.flip()  //#刷新
   pygame.time.delay(20)  //#延迟
  
#screen = pygame.display.set_mode([64
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论

打赏作者

唐老鸭要上天

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值