博客
关于我
MATLAB App Designer入门实战(三)
阅读量:226 次
发布时间:2019-02-28

本文共 1745 字,大约阅读时间需要 5 分钟。

入门实战第三弹——连连看小游戏App开发指南

作为一名MATLAB开发者,你或许已经对连连看小游戏产生了兴趣。本文将为你详细介绍如何在MATLAB中开发一个简单的连连看小游戏,并分享一些实用的开发技巧。

13. 获取文件夹内所有图片链接

在开发连连看小游戏时,首先需要获取文件夹内所有图片的链接。MATLAB中可以通过`dir`函数来实现这一点。以下是具体步骤:

假设你有一个名为“图片”文件夹,位于路径`E:\MATLAB\R 2019b\bin\连连看\图片`中,你可以通过以下代码获取该文件夹内所有 JPG 图片的信息:

path = 'E:\MATLAB\R 2019b\bin\连连看\图片';picInformation = dir(fullfile(path, '*.jpg'));

接下来,你可以通过循环遍历`picInformation`数组,获取每张图片的完整路径:

picPath = [path, '', picInformation(i).name];

14. 确定鼠标点击的图片序号

在实际开发中,经常会遇到以下问题:当图片数量较多且位置不整齐时,如何准确判断用户点击的图片序号?为了解决这一问题,我们可以将图片转换为可以交互的控件,并为每张图片设置回调函数。

由于图片数量较多,直接为每张图片创建UIimage控件会带来内存和逻辑上的负担。于是,我们可以采用以下优化方法:

方法一:批量创建隐藏的UIimage控件

在`startupFcn`中,可以批量创建隐藏的UIimage控件,并为每个控件设置回调函数。通过`createCallbackFcn`函数,我们可以为每个隐藏控件共享一个回调函数。

例如:

% 在循环中创建隐藏的UIimage控件handles(i, j) = createCallbackFcn(app, @VirtualImageClicked, true);set(app.drawPicHdl(i, j), 'ImageClickedFcn', handles(i, j));

方法二:利用UserData属性

为了在回调函数中区分不同的图片控件,我们可以为每个控件设置`UserData`属性。这样,在用户点击时,可以通过`event.Source.UserData`获取到相关信息。

例如:

% 为每个UIimage控件设置UserData属性app.drawPicHdl(i, j).UserData = [i, j];

15. 在图片上方绘制线条

在开发连连看小游戏时,通常需要在图片上方绘制线条以指引用户选择。为了实现这一功能,可以考虑以下方法:

如果UIAxes位于UIimage或其他控件下方,画出的图像也会在UIimage或其他控件下方。但如果UIAxes位于UIimage或其他控件上方,图像会位于控件上方。这可能会导致图像不在预期的位置。

为了解决这一问题,可以将UIAxes设置为透明的,这样图形就不会覆盖UIimage或其他控件。例如:

% 将UIAxes设置为透明axes(handles.hMainAxes).MapStyle = 'transparency';

如果需要绘制线条,可以使用`uinew`函数创建UIAxes,并在上面绘制线条。例如:

h = uinew(handles.hMainAxes);plot(h, 0:1:2, 0:0:1);

如果需要在图片上方绘制更复杂的图形,可以考虑使用`uilabel`控件来显示文字或线条。例如:

% 创建UILabel控件并绘制线条hLabel = uilabel(handles.hMainAxes);hLabel.Position = [0.5, 0.5];hLabel.String = '连线此图片';

总结

通过以上方法,你可以在MATLAB中开发一个简单的连连看小游戏。从获取图片链接到绘制线条,每一步都需要细致设计和测试。希望本文的内容能为你的开发提供有价值的参考。如需进一步了解具体实现,可以访问以下链接:

MATLAB 连连看小游戏 m 文件链接:[链接1](#) MATLAB 连连看小游戏 mlapp 文件链接:[链接2](#)

转载地址:http://odls.baihongyu.com/

你可能感兴趣的文章
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NIO Selector实现原理
查看>>
nio 中channel和buffer的基本使用
查看>>
NIO基于UDP协议的网络编程
查看>>
NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
查看>>
Nitrux 3.8 发布!性能全面提升,带来非凡体验
查看>>
NI笔试——大数加法
查看>>
NLog 自定义字段 写入 oracle
查看>>
NLP 基于kashgari和BERT实现中文命名实体识别(NER)
查看>>
NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
查看>>
NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
查看>>
NLP学习笔记:使用 Python 进行NLTK
查看>>
NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
查看>>
NLP:使用 SciKit Learn 的文本矢量化方法
查看>>
Nmap扫描教程之Nmap基础知识
查看>>
Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
查看>>
NMAP网络扫描工具的安装与使用
查看>>
NMF(非负矩阵分解)
查看>>
NN&DL4.1 Deep L-layer neural network简介
查看>>
NN&DL4.3 Getting your matrix dimensions right
查看>>