如何使用Matlab制作简易版八分音符酱游戏
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要介绍"如何使用Matlab制作简易版八分音符酱游戏"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"如何使用Matlab制作简易版八分音符酱游戏"文章
千家信息网最后更新 2025年11月13日如何使用Matlab制作简易版八分音符酱游戏
这篇文章主要介绍"如何使用Matlab制作简易版八分音符酱游戏"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"如何使用Matlab制作简易版八分音符酱游戏"文章能帮助大家解决问题。
效果
游戏方式
给电脑插上耳机后叫喊叭 !
说明
1)使用此代码应首先安装:
Audio Toolbox工具箱,博主使用的版本为:
Audio Toolbox 版本 3.0 (R2021a)
2)为保证游戏加载完所有素材后再开始,故设置了加载完成界面后停滞3秒再开始运行游戏
若一进入界面就挂了,应是资源加载太久,请关掉窗口后尝试重新运行
工具箱主要部分代码
1)基础设置
这里懒得改了直接照抄的语音命令识别的截断数据,大家可以依据自己需要进行更改:
[audio_t,fs] = audioread('stop_command.flac');classificationRate = 20;adr=audioDeviceReader('SampleRate',fs,'SamplesPerFrame',floor(fs/classificationRate));audioBuffer=dsp.AsyncBuffer(fs);声音信号绘图:
if ishandle(fig) audio_t=adr(); write(audioBuffer,audio_t); audio_y=read(audioBuffer,fs,fs-adr.SamplesPerFrame); audio_x=(0:(length(audio_y)-1))./(length(audio_y)-1); audioHdl.XData=audio_x; audioHdl.YData=audio_y;end
注意:
代码后必须要进行声音采集设备的释放及timer实类的删除,否则会出现如下提示bug:A given audio device may only be opened once.
即一个设备被开启两次
因此需要设置如下回调避免该情况:
set(gcf,'tag','co','CloseRequestFcn',@clo);function clo(~,~) stop(game) delete(game) release(adr) delete(findobj('tag','co')); clf,close,clcend完整代码
function audioGame%@author:slandarer%使用工具箱情况:%Audio Toolbox 版本 3.0 (R2021a)% figure 创建fig=figure('Units','normalized','Position',[0.2 0.2 0.6 0.5]);fig.NumberTitle='off';fig.MenuBar='none';fig.Resize='off';fig.Name='audio Game by slandarer';% axes_1 创建(主axes)ax_1=axes(fig);ax_1.Position=[0 0 1 1];ax_1.XTick=[];ax_1.YTick=[];ax_1.ZTick=[];ax_1.XLim=[0 600];ax_1.YLim=[0 200];hold(ax_1,'on')% axes_2 创建(声波显示axes创建)ax_2=axes(fig);ax_2.Position=[0.7 0.8 0.3 0.2];ax_2.XTick=[];ax_2.YTick=[];ax_2.ZTick=[];ax_2.XLim=[0 1];ax_2.YLim=[-1 1];ax_2.Box='on';ax_2.LineWidth=2;ax_2.Color=[250,250,247]./255;hold(ax_2,'on')% 绘图函数句柄groundHdl=fill(ax_1,[0,600,600,0],[0,0,65,65],[0,64,115]./255);holeHdl_1=fill(ax_1,[0,50,50,0]+500,[0,0,65,65],[1 1 1],'EdgeColor',[1 1 1]);holeHdl_2=fill(ax_1,[0,50,50,0]+800,[0,0,65,65],[1 1 1],'EdgeColor',[1 1 1]);holeHdl_3=fill(ax_1,[0,50,50,0]+1100,[0,0,65,65],[1 1 1],'EdgeColor',[1 1 1]);audioHdl=plot(ax_2,[0,1],[0,0],'Color',[0,64,115]./255);roleHdl_a=scatter(ax_1,100,95,300,'filled','CData',[0,64,115]./255);roleHdl_b=fill(ax_1,[-5 0 5]+100,[90,65,90],[0,64,115]./255);% 基础属性role.y=0;role.v=0;role.a=-2;% 窗口主要回调=============================================================[audio_t,fs] = audioread('stop_command.flac');classificationRate = 20;adr=audioDeviceReader('SampleRate',fs,'SamplesPerFrame',floor(fs/classificationRate));audioBuffer=dsp.AsyncBuffer(fs);pause(3)fps=20;game=timer('ExecutionMode','FixedRate','Period',1/fps,'TimerFcn',@audioMainGame);start(game)set(gcf,'tag','co','CloseRequestFcn',@clo);function clo(~,~) stop(game) delete(game) release(adr) delete(findobj('tag','co')); clf,close,clcend function audioMainGame(~,~) holeHdl_1.XData=holeHdl_1.XData-5; holeHdl_2.XData=holeHdl_2.XData-5; holeHdl_3.XData=holeHdl_3.XData-5; if holeHdl_1.XData(1)<-50,holeHdl_1.XData=holeHdl_1.XData+900;end if holeHdl_2.XData(1)<-50,holeHdl_2.XData=holeHdl_2.XData+900;end if holeHdl_3.XData(1)<-50,holeHdl_3.XData=holeHdl_3.XData+900;end if ishandle(fig) audio_t=adr(); write(audioBuffer,audio_t); audio_y=read(audioBuffer,fs,fs-adr.SamplesPerFrame); audio_x=(0:(length(audio_y)-1))./(length(audio_y)-1); audioHdl.XData=audio_x; audioHdl.YData=audio_y; if any(audio_y>0.2)&&role.y>-1&&role.y<1 role.v=20; end role.v=role.v+role.a; role.v(role.v<-5)=-5; role.y=role.y+role.v; flag1=holeHdl_1.XData(1)<=95&holeHdl_1.XData(2)>=105; flag2=holeHdl_2.XData(1)<=95&holeHdl_2.XData(2)>=105; flag3=holeHdl_3.XData(1)<=95&holeHdl_3.XData(2)>=105; if (~flag1)&&(~flag2)&&(~flag3) role.y(role.y<0)=0; roleHdl_a.YData=95+role.y; roleHdl_b.YData=[90,65,90]+role.y; else if role.y<=-1 stop(game) for i=1:10 roleHdl_a.YData=(95+role.y)-i*(65+role.y)/10; roleHdl_b.YData=[90,65,90]+role.y-i*(65+role.y)/10; pause(0.1) end else roleHdl_a.YData=95+role.y; roleHdl_b.YData=[90,65,90]+role.y; end end end endend关于"如何使用Matlab制作简易版八分音符酱游戏"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
代码
八分音符
简易
音符
制作
工具
工具箱
版本
知识
基础
声音
情况
界面
行业
设备
绘图
运行
不同
实用
信号
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
管家婆怎么复制数据库
宝塔设置小程序数据库
电脑服务器密码从哪儿可以看到
社工库qq群数据库
互联网科技情报
软件开发项目资料要求
上海创钦网络技术有限公司
网络安全教育竞赛奖项
网络安全开发包详解 源码
恩智浦软件开发待遇怎么样
网络安全发展的问题
网络技术dhcp续约报文
事务数据库原理
系统类图数据库设计
计算机3级网络技术答题
关闭ole服务器
网络安全与通信工程
军区网络安全领导
博兴协同办公oa软件开发公司
移动应用软件开发期末大作业
浙江工控软件开发如何收费
网络安全发展的问题
计算机数据库求和函数
管家婆数据库文件丢失
普法进行时第三章网络安全
标准的专业数据库网
关系式数据库db是什么
与数据库相关的系统加载
Qt 连接数据库 画图
传奇技能数据库解毒术