环境:树莓派,系统raspbian,系统自带两个版本的python以及pygame。

1、画板

程序如下:

 1 !/home/pi/game_1.py
 2 import pygame
 3
 4 width = 640
 5 height = 480
 6 radius = 100
 7 fill = 1
 8
 9 pygame.init()  #初始化pygame
10
11 window = pygame.display.set_mode((window, height))
12 window.fill(pygame.Color(255, 255, 255))  # 用白色填充画板
13 while True:
14     pygame.draw.circle(window, pygame.Color(255, 0, 0),
15     (width / 2, height / 2), radius, fill)  # 红色画圆
16     pygame.display.update()     # 更新图像

输入命令:python game_1.py

运行程序,结果如下:

键盘输入:ctrl + c

终止程序。

然而,由于树莓派图形界面的卡爆,返回到命令窗口再ctrl + c有时候会卡掉,不如直接在pygame窗口上操作来的爽快,其实pygame窗口就是用gui编程的,类似于tkinter模块做成的gui,那么关掉窗口就需要事件输入反应,在原来的game_1.py文件后面加入代码:

1 while True:
2     if pygame.QUIT in [e.type for e in pygame.event.get()]:
3         break

我发现树莓派连接网络这方面真是慢,插上电源启动网络若干分钟才能SSH连接到树莓派ip,至于访问外网,时有时无,有时候由于某种故障,例如长时间不动树莓派或者重启wifi就会导致网络连接失败,putty成为inactive,这个时候只有重新拔插电源才能正常,否则直接SSH会显示time out,只能说没有HDMI线就是麻烦,一重启网络或者重启电脑就会出错。

2、Surface

Surface可想象成一个矩形的图像,可以由多个图像帧组成,用于实现游戏或动画中一个场景,接下来要做的就是合并两张图片。

tips:由于这里需要图片,因此在购买了HDMI转换器后,使用网络还是很方便的,首先方便传图,下载了scrot,下载后直接在命令行输入:scrot即可截取当前屏幕图片,也可以通过输入:scrot -h命令查看帮助文档,比如选择截图范围就可以输入:scrot -s就可以截取想要的图片范围了,保存的图片放在当前路径下,可以使用pi里面自带的picture viewer查看图片。

程序如下:

 1 import pygame
 2
 3 pygame.init()
 4 #设置黑色背景surface大小
 5 screen = pygame.display.set_mode((450,450))
 6 #加载第一张图片,并将其转换为与当前模式相匹配的模式
 7 background = pygame.image.load("banboo.jpg").convert_alpha()
 8 theremin = pygame.image.load("panda.jpg").convert_alpha()
 9 #将第一张图片与surface合并,并通过参数设置图片合并的位置
10 screen.blit(background, (0,0))
11 screen.blit(theremin, (135, 150))
12 while True:
13         pygame.display.update()

结果显示如下:

分析:由上图可以看出,大熊猫并没有被完全显示,因为大熊猫“panda.jpg”这个图片的分辨率大于竹子“banboo.jpg”这个图片,因此才不能显示完整的熊猫图片,因此可以尝试调节大熊猫的像素来适应竹子的像素。

3、在Surface上绘图

如果要绘制一段文字,就需要加载字体,需要用到font模块来加载字体文件并渲染文本。可以先通过pygame.font.get_fonts()函数可以获取pi上的字体列表:

1 import pygame
2
3 pygame.init()
4 for fontname in pygame.font.get_fonts():
5     print fontname

输出结果如下图:

下面将使用代码加载freemono这个字体来渲染文本:

 1 import pygame
 2
 3 pygame.init()
 4 screen  = pygame.display.set_mode((725, 92))
 5 #设置字体类型为“freemono”,大小为72号
 6 font = pygame.font.SysFont("freemono", 72, bold = 1)
 7 textSurface = font.render("I love my pi!", 1,
 8                           pygame.Color(255, 255, 255))
 9 screen.blit(textSurface, (10, 10))
10 while True:
11         pygame.display.update()

输出结果如下:

 4、处理事件与输入

在pygame中,用户触发的事件会被捕获并以Event的对象形式放入消息队列,而pygame.event模块提供从消息队列中获取未被处理的事件对象并能够对事件进行进一步的处理。接下来将会扩展pygame_1程序来通过捕捉鼠标事件来绘制不同的圆形,原理是越靠近窗口边缘,圆的半径越大。

程序如下图所示:

结果图很漂亮:

5、播放声音

tips:这里,树莓派屏幕右上方出现一个彩色方块的原因时供电不足,建议截usb插口的话,用供电的多接口usb,因为严重供电不足,否则的话播放音乐插耳机的时候各种故障,然后系统崩溃,树莓派发热发烫。

5.1在命令行中输入以下命令打开工具界面:

sudo raspi-config

5.2选择Advanced-option回车后,选择Audio再回车

5.3由于默认的声音输出口试HDMI输出,如果你的HDMI连接的显示屏是没有声音播放口的话建议转为模拟信号输出,也就是耳机输出,选择Forced audio即可

好的,现在你可以百度一个在线音乐,在耳机插孔插上耳机就可以听到音乐了。

6、播放视频

为了不让我的树莓派早夭,我决定去拿供电usb,果然那可恶的小方块不见了,但是不稳定,用电多的时候,还是会随着电源的红色信号灯一闪一闪,小方块也会一闪一闪,可能是供电的电源仍然不够,或者是因为我插上的东西太多了,或许无线鼠标和键盘会比较好。;

pygame.movie模块可以播放视频,前提是视频必须是MPEG1格式的,也就是类似于“.mpg”结尾的视频。当然可以通过安装ffmpeg将其他格式的视频转换为mpg格式。

代码如下:

 1 import pygame
 2 from time import sleep
 3
 4 pygame.init()
 5
 6 screen = pygame.display.set_mode((320, 240))
 7 movie = pygame.movie.Movie("foo.mpg")
 8 movie.play()
 9 while True:
10     if not(movie.get_play):
11         print("rewind")
12         movie.rewind()  # 倒带
13     movie.play()  #重新播放
14     if pygame.QUIT in [event.type for event in pygame.event.get()]:
15         break

温馨提示:在pygame.examples模块中有很多完整的实例程序,可以在/usr/share/pyshared/pygame/exalmpes目录中找到源代码。

转载于:https://www.cnblogs.com/wing1995/p/4596099.html

玩转树莓派《二》——用python实现动画与多媒体相关推荐

  1. 玩转树莓派 —智能家居(语音控制电器开关 及语音模块的二次开发)

    本文内容为玩转树莓派 -智能家居(语音控制电器开关 及语音模块的二次开发) 1.语音模块 本人使用的是ld3320二代语音识别开发板 通过和电脑连接的是ttl转接口 连接的时候 大家注意l连接方式 2 ...

  2. openhd 树莓派_玩转树莓派Raspberry Pi 篇二:XBMC篇

    玩转树莓派Raspberry Pi 篇二:XBMC篇 2014-04-14 11:23:51 543点赞 737收藏 114评论 大家好,又见面了. 知乎上有人问"给 PC 装黑苹果的人是什 ...

  3. 玩转树莓派,看这一篇文章就够了

    树莓派是一款基于ARM架构的小型电脑,可以运行Linux等操作系统,被广泛应用于物联网.嵌入式系统等领域.本文将介绍如何玩转树莓派,让你快速上手并实现一些有趣的项目. 一.购买树莓派和配件 首先需要购 ...

  4. 玩转树莓派入门系列——1.从裸机到连接

    玩转树莓派入门系列--1.从裸机到连接 一.拆箱 一直都想体验下树莓派4b,这次直接购买了项目套装系列,包括了一大堆的传感器,图片中只包括树莓派硬件系列,包括,主板,外壳,风扇以及散热片 主板 首先贴 ...

  5. 如何在树莓派上进行python编程_《树莓派Python编程指南》怎么样_目录_pdf在线阅读 - 课课家教育...

    计算机已经不再只是用来工作的方盒子.任何拥有一个可编程处理中心的东西都可以称作计算机.游戏终端.智能手机.全球卫星定位系统(GPS)单元.平板电脑以及其他许多令人难以置信的设备都说明了这一点.它们都是 ...

  6. w怎么接显示 树莓派zero_纯干货!一根线玩转树莓派ZeroW(图文教程,亲测有效)...

    #一.写在前面本文旨在介绍如何用最少的外设(成本)完成树莓派Zero W最基础最重要的功能.注意:本文原始发表时官方镜像版本是2017-04-10的,在2019年5月10日有网友提出本方案已经不完全适 ...

  7. 在MAC环境下玩转树莓派

    在MAC环境下玩转树莓派 一.Mac使用终端装系统 二.Mac使用终端连接ssh 之前我们拍的基础视频都是在windows环境下进行写系统还有ssh连接这些基础操作. 那么这期教程就是对之前基础教程的 ...

  8. 轻松玩转树莓派Pico之三、Windows+Ubuntu虚拟机模式下VSCode C语言开发环境搭建

    目录 1.VSCode下载与安装 2.VSCode基础插件安装 3.SSH连接与配置 4.SSH免密登录 5.Pico编译 工欲善其事,必先利其器.之前的介绍的Pico流程都是通过命令行编译,没有进行 ...

  9. 树莓派开箱+上手python小游戏

    树莓派开箱&上手python小游戏 树莓派开箱&上手python小游戏 安装所需设备 烧录系统 使用NOOBS方式烧录失败 下载官方系统镜像文件烧录成功 配置WiFi和SSH 一.Wi ...

最新文章

  1. ceph osd 由于“No space left on device” 异常down,通过扩容文件系统或者显式运行osd进程解决
  2. 投影串口测试程序_【原创】串口通信测试程序
  3. Linux在线求助 man page
  4. nginx常用功能全揭秘
  5. 设计模式5 行为模式
  6. 初探 Unix 操作系统
  7. android uri获取参数,android-无法从深度链接获取Uri数据
  8. java对象转xml jackson_五分钟Jackson入门(三) JSON数据类XML转换(附项目源码)
  9. [其它] - 为什么中国的程序员技术偏低
  10. rds基于什么开发_java rds
  11. UI标签库专题一:JEECG智能开发平台 BaseTag(样式表和JS引入标签)
  12. 基于MeanShift的Camshift算法原理详解(opencv实现,有源码)
  13. Word域代码公式交叉引用
  14. android toolbar 搜索框,SearchView配合RecyclerView实现分页搜索过滤关键字
  15. 空洞卷积(膨胀卷积)的相关知识以及使用建议(HDC原则)
  16. 女儿7岁就要做牙齿矫正,这些年我都做错了什么?
  17. GameMakerStudio2调用外部dll库
  18. pdf压缩 网上常见方法比较
  19. C语言实现Prim算法与Kruskal算法(浙大 陈越版)
  20. java电脑中可以删除吗,电脑中c盘cflog是什么文件夹?是否可以随意删除

热门文章

  1. JSP失物招领系统源码JSP寻物启事JSP校园失物招领系统-毕业设计-课程设计
  2. matlab中如何标记点
  3. pthread_cancle并不能结束线程
  4. 2023 智能AI在线益智五子棋网站源码
  5. 大数据成国际博弈焦点
  6. ETG 标准是如何分布定义的?
  7. oracle+表无法查询,Oracle SQL Developer - 无法同时查询2个表
  8. 简要介绍 | 计算机视觉中的开放词汇:挑战与未来
  9. 最新代雅阁噪音测试软件,【图】雅阁八代全车隔音噪音测试报告(用科学的数据说话)(转)...
  10. React(5)React兄弟组件之间的通信