当前位置: 首页 > news >正文

使用Python和Pygame库创建简单的的彩球效果

简介

Pygame是一款强大的游戏开发库,可以用于创建各种有趣的图形效果。为了更好地了解Pygame的功能,今天我们将要做的是在屏幕上随机生成一些彩色的小球,并使它们以不同的速度和方向移动。当小球碰到屏幕边缘时,它们将反弹。

功能实现

  • 1.安装所需要的Pygame库,如果你电脑上之前安装过,忽略此步骤。
pip3 install pygame

如果你在此步骤中出现以下错误:

image.png 根据错误最下面的提示,可能是由于缺少某些依赖项或版本不兼容导致的,这时我们用它提示的命令升级下pip:

python -m pip install --upgrade pip

再次执行安装Pygame库命令,应该就可以了。

  • 2.创建新的Python空白文件,在头部导入Pygame库和random库并初始化Pygame库。
import pygame 
import random 
#初始化pygame库 
pygame.init()
  • 3.定义屏幕尺寸和背景颜色
width, height = 800, 600 
screen = pygame.display.set_mode((width, height)) 
background_color = (0, 0, 0)
  • 4.定义小球参数
ball_radius = 10 
balls = [] 
colors = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (255, 255, 0), (255, 0, 255), (0, 255, 255)]
  • 5.创建小球类
class Ball:def __init__(self, x, y, dx, dy, color):self.x = xself.y = yself.dx = dxself.dy = dyself.color = colordef update(self):self.x += self.dxself.y += self.dy# 碰撞检测,反弹小球if self.x < ball_radius or self.x > width - ball_radius:self.dx *= -1if self.y < ball_radius or self.y > height - ball_radius:self.dy *= -1def draw(self):pygame.draw.circle(screen, self.color, (self.x, self.y), ball_radius)
  • 6.创建一些随机小球
for _ in range(10):x = random.randint(ball_radius, width - ball_radius)y = random.randint(ball_radius, height - ball_radius)dx = random.randint(-5, 5)dy = random.randint(-5, 5)color = random.choice(colors)ball = Ball(x, y, dx, dy, color)balls.append(ball)
  • 7.游戏循环
running = True
while running:for event in pygame.event.get():if event.type == pygame.QUIT:running = Falsescreen.fill(background_color)# 更新和绘制小球for ball in balls:ball.update()ball.draw()pygame.display.flip()
  • 8.退出程序
pygame.quit()

这样我们的程序逻辑基本写完了,剩下的就是保存文件,在命令窗口执行程序即可,效果如下:
在这里插入图片描述

因为随机生成的彩色小球,所以看着有些乱,哈哈,有点晃眼,你可以根据自己的需求和创意修改代码,例如增加更多的小球、调整小球的速度范围、改变背景颜色等,以创建更多样化的粒子效果。

总结

Pygame是一个跨平台的Python库,专门用于游戏和多媒体应用程序开发。它基于SDL(简单直观的多媒体库),可以让开发者使用Python语言开发2D游戏、交互式应用程序和多媒体应用程序。Pygame库提供了许多有用的功能,同时也提供了许多有用的文档和示例代码,方便我们学习和使用。

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
Python全套学习资料

在这里插入图片描述

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓
在这里插入图片描述

http://www.lryc.cn/news/272797.html

相关文章:

  • 第2课 使用FFmpeg读取rtmp流并用openCV显示视频
  • 【中小型企业网络实战案例 七】配置限速
  • Hive实战:实现数据去重
  • 客户满意度调查常用的ChatGPT通用提示词模板
  • Android--Jetpack--Paging详解
  • Unity 基于UDP实现本地时间与网络时间校验 防客户端修改日期作弊
  • ArduPilot开源代码之MatekSys Optical Flow 3901-L0X
  • 【时钟】分布式时钟HLC|Logical Time|Vector Clock|True Time
  • 人工智能AI与3D视觉技术的结合正在引领新一代移动机器人的革新
  • NSSCTF 简单包含
  • FlinkSQL处理Canal-JSON数据
  • 玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— DevEco Studio下载与安装
  • 大模型上下文长度的超强扩展:从LongLora到LongQLora
  • pdf格式转换为txt格式
  • scss使用for循环遍历,动态赋值类名并配置不同颜色
  • GaussDB数据库使用COPY命令导数
  • SunFMEA软件免费试用:FMEA的目标和限制是什么?
  • 【Redis交响乐】Redis中的数据类型/内部编码/单线程模型
  • APK 瘦身
  • GitHub上的15000个Go模块存储库易受劫持攻击
  • 避免3ds Max效果图渲染一片黑的4个正确解决方法
  • UI演示双视图立体匹配与重建
  • 添加一个编辑的小功能(PHP的Laravel)
  • YOLOv8改进 | 主干篇 | ConvNeXtV2全卷积掩码自编码器网络
  • elasticsearch7.17.9两节点集群改为单节点
  • 二叉树的层序遍历,力扣
  • 构建Dockerfile报错/bin/sh: 1: cd: can‘t cd to /xxx/yyy问题记录
  • Vue常用的修饰符详解(有哪些,怎么用)
  • Linux C/C++ 获取CPUID
  • 2023年“中银杯”安徽省网络安全B模块(部分解析)