matlab - 如何在 Matlab GUI 中移动具有相同按钮的形状以及当弹丸击中形状时如何计算得分?
问题描述
我是 MATLAB 新手。最近我一直在做一个项目。
问题 1:我必须使用一个按钮在特定的 GUI 轴上生成一个矩形,其位置范围(x 轴)为 30 到 50。我的意思是我应该能够使用同一个按钮在范围内移动矩形。问题是我可以创建一个静态矩形,但我不知道如何使用正确的语法移动矩形。
问题2:该项目就像一个弹丸击中矩形(表示范围)得分将被计算但我不知道如何计算得分。
以下是用于 GUI 的所有功能。矩形放置的放置按钮功能和用于投掷弹丸和计算分数的 Throwbutton 功能。
% --- Executes just before Project is made visible.
function Project_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
handles.throwbutton.Enable = 'off';
handles.slider1.Enable = 'off';
handles.slider2.Enable = 'off';
% --- Executes on button press in throwbutton.
function throwbutton_Callback(hObject, eventdata, handles)
get(handles.throwbutton,'String');
handles.slider1.Enable = 'off';
handles.slider2.Enable = 'off';
u = get(handles.slider1,'Value');
a = get(handles.slider2,'Value');
g = 9.8;
t = 0:0.03:10;
a_theta = unitsratio('rad', 'deg')*a;
ux = u*cos(a_theta);
uy = u*sin(a_theta);
x = ux*t;
y = uy*t - 0.5*g*t.^2;
for i = 1:size(x,2)
if(i>1 && y(i)<=0)
break;
end
axes(handles.axes2);
plot(x(i),y(i),'b*')
hold on;
pause(0.02);
end
R = sqrt((x.^2)+(y.^2));
global score;
score = 0;
if (R>30)
score = score+1;
s1 = num2str(score);
set(handles.edit3,'String',s1);
else
s2 = num2str(score);
set(handles.edit3,'String',s2);
end
function placebutton_Callback(hObject, eventdata, handles)
guidata(hObject, handles);
get(handles.placebutton,'string');
handles.slider1.Enable = 'on';
handles.slider2.Enable = 'on';
axes(handles.axes2);
rectangle('Position',[30 0 5 2], 'EdgeColor','c',...
'LineWidth',3);
hold on;
解决方案
推荐阅读
- c - 为什么我的代码中有编译时错误
- angular - Angular界面添加子项如何
- php - 如何在 PHP "echo" 中插入带有撇号和其他特殊字符的文本?
- python - 使用日期时间循环
- javascript - 使用 Lodash 对对象进行求和的深度数组
- c# - Html.BeginForm() 在我的控制器上执行错误的操作
- python - 在多线程程序中的字典上使用 .copy() 是否安全?
- php - 如何在laravell中切换语言
- java - 使用 S3a 连接器到 S3 的 HDFS 应用程序
- arrays - 我有几个带有斜线分隔的文件夹路径字符串,我可以将它排列为数组树结构吗?