键盘功能没有响应

3视图(30天)
我如何将键盘功能集成到这个代码吗?我试着沿着YouTube教程后,然而创造者使用操纵杆和我只是想使用箭头控制x轴点的位置。我是新Matlab这样一个解释就太好了。谢谢你!
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -点跳- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
清晰;
关闭所有;
clc;
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -设置- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
拉=得到(大的,“拉”);
昏暗的=[(拉(3)-拉(4))/ 2 0拉(4)拉(4)];
大小= 40;
底= 0;
上=下+ 20;
v = 0;
pad1X1 = 0;
pad1X2 = 50;
pad1Y = 0;
pad2X1 =兰德(1)* 45;
pad2X2 = pad2X1 + 5;
pad2Y =(兰德(1)* 10.5)+底;
pad3X1 =兰德(1)* 45;
pad3X2 = pad3X1 + 5;
pad3Y =(兰德(1)* 15)+底;
pad4X1 =兰德(1)* 45;
pad4X2 = pad4X1 + 5;
pad4Y =(兰德(1)* 15)+底;
pad5X1 =兰德(1)* 45;
pad5X2 = pad5X1 + 5;
pad5Y =(兰德(1)* 15)+底;
padXAll = [pad1X1 pad2X1 pad3X1 pad4X1 pad5X1;
pad1X2 pad2X2 pad3X2 pad4X2 pad5X2];
padYAll = [pad1Y pad2Y pad3Y pad4Y pad5Y];
[padYAll印第安纳]= (padYAll, 2);
padXAll = padXAll(:,印第安纳州);
全球xPos
xPos = 25;
yPos = 1;
点= [xPos yPos];
xMove = 0;
yMove = 1;
情节(padXAll (: 1) [pad1Y pad1Y),“线宽”,2)
持有;
情节(padXAll (:, 2), [pad2Y pad2Y),“线宽”,2)
持有;
情节(padXAll (:, 3), [pad3Y pad3Y),“线宽”,2)
持有;
情节(padXAll (:, 4), [pad4Y pad4Y),“线宽”,2)
持有;
情节(padXAll (:, 5), [pad5Y pad5Y),“线宽”,2)
持有;
点=散射(xPos yPos,“填充”);
持有;
xlim (50 [0])
ylim([底前)
集(gcf,“位置”昏暗的,“KeyPressFcn”@keyboardFunction)
% pongFigure =图(“颜色”,[。6、。6。8],KeyPressFcn, @keyboardFunction,“单位”,“正常”、“位置”,(。1。1。8。8]);
% pongAxes =轴(gcf‘颜色’,‘白’,‘XLim’, XLim, YLim, YLim,“位置”,暗);
u = 0;
代表= 0;
反弹= 1;
oldBottom =底部;
jumpHeight = [];
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -环- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
yPos > = - 1
“KeyPressFcn”@keyboardFunction;
代表=代表+ 1;
u = u + 1。;
我= 5:1:1
如果(yPos > padYAll(我)& & ((yPos + yMove) < padYAll) & &(我)
((xPos < = padXAll (2, 1) & & xPos > = padXAll(我))| |
(xPos + xMove < = padXAll(2,我)& & xPos + xMove > = padXAll(我)))
反弹= 1;
oldBottom =底部;
底= padYAll(我);
yPos =底部;
上=下+ 20;
j = 1:张
如果j = = 1
padYAll (j) =(兰德(1)* 10.5)+底;
其他的
padYAll (j) =(兰德(1)* 15)+底;
结束
padXAll兰德(j) = (1) * 45;
padXAll (j) = padXAll (j) + 5;
结束
[padYAll印第安纳]= (padYAll, 2);
padXAll = padXAll(:,印第安纳州);
打破
结束
结束
jumpHeight结束(+ 1)= yPos -底;
如果反弹= = 1
bounceHeight = max (jumpHeight);
jumpHeight = [];
screenmove = 1;
u = 1;
v = 15;
yMove = (1) * v;
反弹= 0;
其他的
v = - (2 * u) + v;
yPos = yPos + yMove;
yMove = (1) * v;
结束
如果(xPos + xMove) > 50
xPos = xPos + xMove - 50;
elseif(xPos + xMove) < 0
xPos = xPos + xMove + 50;
其他的
xPos = xPos + xMove;
结束
clf
情节(padXAll (: 1) [padYAll (1) padYAll (1)]。“线宽”2);
持有;
情节(padXAll (:, 2), [padYAll (2) padYAll (2)),“线宽”2);
持有;
情节(padXAll (:, 3), [padYAll (3) padYAll (3)),“线宽”2);
持有;
情节(padXAll (:, 4), [padYAll (4) padYAll (4)],“线宽”2);
持有;
情节(padXAll (:, 5), [padYAll (5) padYAll (5)),“线宽”2);
持有;
散射(xPos yPos,“填充”)
xlim (50 [0])
标题(“DotJump”)
级=组成([的高度:num2str(底部)]);
注释(“文本框”,(。5。5。3。3),“字符串”级,“FitBoxToText”,“上”)
如果yMove < = 0
screenmove = 0;
结束
如果(screenmove = = 1) & & ((oldBottom + yMove) <底部)
ylim ([oldBottom + yMove oldBottom + yMove + 20))
oldBottom = oldBottom + 20;
其他的
ylim ([-。约1顶部)
结束
持有
如果代表= = 1
暂停(5)
结束
暂停(幅)
结束
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -功能- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %
函数keyboardFunction(~、事件)
全球xPos
开关event.Key
情况下“leftarrow”
xPos = xPos - 5;
情况下“rightarrow”
xPos = xPos + 5;
结束
结束

接受的答案

汤米
汤米 2020年5月26日
添加一个 drawnow 在你 暂停(幅) 平面图形队列。
或者使用较长的停顿,但当然,扰乱了动画的帧速率。
看到 这个答案

更多的答案(0)

类别

找到更多的在桌面帮助中心文件交换

s manbetx 845


释放

R2019b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!