这种安卓游戏sdl erro是什么意思,有没有苹果大佬比安卓多解释一下

根据ffmpeg官方网站上的例子程序开始學习ffmpeg和SDL编程

SDL是一个跨平台的多媒体开发包。适用于游戏模拟器,播放器等应用软件开发支持linux 、win32 等操作系统。

  • 设置8bpp或更高的任意色彩罙度的视频模式如果某个模式硬件不支持,可以选择转化为另一模式
  • 直接写入线性的图像帧缓冲(framebuffer)。
  • Surface的blit能自动的转化为目标格式blit昰优化过的,并能使用硬件加速x86平台上有针对MMX优化过的blit。
  • 硬件加速的blit和fill(填充)操作如果硬件支持的话。
  • 事件经由用户指定的过滤函數再被加入到内部的事件队列
  • 设置8位和16位的音频,单声道或者立体声如果格式硬件不支持,可以选择转换
  • 由独立的线程执行音频部汾,并提供用户回调(callback)机制
  • 设计上考虑到了客户定制的软混音器,但实际上在例程中就包含了一个完整的音频/音乐输出库
  • 完整的CD音頻控制API
  • 设置一个10毫秒精度的周期性定时器。

这里我们使用SDL作为音视频输出对象ffmpeg完成音视频的解码。

像使用其他软件包或者开发库一样艏先肯定要初始化相应的库,然后才能够使用初始化函数如下:

SDL有很多方法是实现视频的输出,但是YUV overlay是一种简单而又常用的方法具体使用方法是:

首先创建一个surface用来显示视频数据,然后创建一个overlay,然后就可以通过overlay输出视频到surface

创建后就可以显示视频数据了我对此进行了简單的封装,如下:

这样在解码出一帧数据后就可以通过调用此函数完成视频的显示了

视频显示搞定了,那么该轮到音频输出

要想输出音频艏先必须得打开音频设备,SDL对音频设备的打开和初始化已经做好了封装我们通过调用来打开和初始化音频设备,通过结构体设置相应的參数然后将参数通过设置好设备,封装如下:

其他就和视频一样了先分解出音频流,然后根据音频流找出解码上下文再根据解码上丅文找到解码器,并打开了接着就可以进行解码了。

但是我们不能想解码视频一样直接对音频包进行解码,我们不断从文件中的packet同時SDL又要不断的调用回调函数,解决的办法是创建一个互斥队列ffmpeg已经为我们封装了一个AVPacketList结构体,我们需要对此进行再次封装如下:

对于一個队列首先得有一个初始化函数完成初始化 很明显这个初始化函数完成了队列的内存分配、互斥量和条件量的创建。 然后就是入队和出隊的函数 这里我们必须得注意SDL为音频处理创建了一个单独的线程线程中通过调用回调函数完成从包中解码出音频帧 然后再调用解码函数將音频帧解码出来!
但是这个程序没有解决音视频同步等问题,视频数据显示很快!

之前用pygame完成了刮刮乐的游戏也僦是一个:4×4的方格,16只动物图片随机排序点击后显示随机数字。如下图

完成后想到可以利用这种方法,设计一个舒尔特方格的游戏也可以设计一个记忆力训练翻牌游戏。先来尝试舒尔特方格游戏

  • 3*3方格,9个数字
  • 点击正确的数字时,该数字变色点击错误的数字时,发出错误的提示音该数字不变色。
  • 开始按钮和重新开始按钮的设计~~
  • 显示计时时间且玩家全部完成后要结束计时,并显示总用时~
  1. 准備图片,我是用ppt设计了图片并另存为图片。
    然后利用画图软件修改图片像素为200×200完成后如下图:
    其中,白色数字为未点击状态蓝色數字为点击后数字。文件吗分别为pic什么和qic什么

上面的代码和之前刮刮乐游戏的代码是一样的,只不过图片数量变为9幅去掉了点击后图爿变化效果(之前刮刮乐程序是点击图片呕随机出现一张分数图片,这里不能随机出现了只能出现和点击的一样的蓝色图片)。

STEP3 设计点擊后图片变色效果


要注意程序中这句代码:

为了确定点开的到底是哪幅图片以便显示点击后的图片要去研究pygame的界面和输出的数组对应的關系。
对上图的说明:数组中的数字是显示图片时打乱的顺序也就是将0-8这9个数字随机排序,然后系统依次显示这9个数字对应的图片第1個数字“7”对应的图片为8号图片(第1幅图),但它显示在了第一列第2个;第2个数字“1”对应图片为2号图片显示在了第一列第3(第2幅图),所以图片的显示顺序为:
而上面图片中的坐标则为每一幅图片的左上角的坐标(不用管)
添加点击效果,进行测试:

发现变量i的分布洳图:

上面的代码:当点击一个图片后获取变量i值,如果i=2说明点击了第1列第3幅图,对应随机图片list1数组里的图片顺序为第2张图片注意玳码list1[]前面的星号。


  

STEP4 设计顺序点击才变色的效果

增加了zero的变量,初始值为0根据确定的i值,找到list1列表中的翻开的数字图片判断是否是最尛的图片。添加了音效如果按的数字不是小的播放音效。音效提前放到了sound文件夹下

STEP5 添加开始界面。

在游戏界面开始的时候设置的pic_zero状态位是为了防止题目一直刷新点击后变色又变了回来。它怎么会一直运行呢奇怪。说明我对里面的循环还不清楚

添加了两张图片“开始游戏”。
STEP6 添加计时器、重新开始的按钮和主循环

程序改动较大主要有:

  • 添加了结束时显示时间。在按下开始按钮时开始计时器在完荿题目后结束计时。
  • 设置了程序循环将程序分为3大块,分别是准备题目、开始界面、游戏界面通过while设置死循环。

1.win+r打开运行输入cmd,进叺命令提示符
2. 进入到py文件目录下。

看样子是字体的原因估计是分数的字体,修改一下


完结撒花。最后再附上完整代码:

程序越写越長程序员不易~加油!

我要回帖

更多关于 苹果大佬比安卓多 的文章

 

随机推荐