情景描述:
一个小球随机出现在1-5的数轴上的任意位置,随机地向右或向左滚动一个单位,直到小球到达数轴顶端停止滚动被吞噬,数轴两端的颜色也会因为吞噬而变深,之后将再重新在数轴上任意位置随机生成一个小球,继续随机地向右或向左滚动一个单位直到被吞噬。上述动作重复100次,分别计数小球到达数轴左右两端的个数。
情景展示:
情景实现:
matlab代码
clc;
clear;
close all;
figure('color',[1 1 1]);
hold on;
axis off;
axis equal;
left=0;
right=0;
plot([1,5],[0,0]);%画出一条横线
for i = 1:5
plot([i,i],[0,0.1]);%在横线上的标点
text(i-0.03,-0.1,num2str(i));%横线下的数字
end
t1=text(0.97,0.4,num2str(left));
t2=text(4.97,0.4,num2str(right));
t3=text(4.6,-0.3,"Admine:start");
dx=0.05;%速度
%圆和它的随机初始位置
x=randi([2,4]);
y=0.08;
h=plot(x,y,'r.','MarkerSize',38);
hl= plot(0.99,0.2,'black.','MarkerSize',38);
hr= plot(4.99,0.2,'black.','MarkerSize',38);
while true
if x==1
x=randi([2,4]);
set(h,'xdata',x);
drawnow;
left=left+1;
i=mod(left,15);
if i <=5 %颜色会越来越深
newColor=[1-0.2*i,1,1];
elseif i <=10
newColor=[1,1-0.2*(i-5),1];
else
newColor=[1,1,1-0.2*(i-10)];
end
set(t1,'string',num2str(left));
set(hl, 'Color', newColor);
set(t3,'String',"Admine:new");
elseif x==5
x=randi([2,4]);
set(h,'xdata',x);
drawnow;
right=right+1;
j =mod(right,15);
if j <=5 %颜色会越来越深
newColor=[1-0.2*j,1,1];
elseif j <=10
newColor=[1,1-0.2*(j-5),1];
else
newColor=[1,1,1-0.2*(j-10)];
end
set(t2,'string',num2str(right));
set(hr, 'Color', newColor);
set(t3,'String',"Admine:new");
else
p=randi([1,3]);%1表示左移,2表示停止,3表示右移
if p==1
x_next=x-1;
set(t3,'String',"Admine:left");
elseif p==2
x_next=x;
set(t3,'String',"Admine:pause");
else
x_next = x+1;
set(t3,'String',"Admine:right");
end
if x > x_next
while x >= x_next
pause(0.025);
set(h,'xdata',x);
drawnow;
x=x-dx;
end
x=x_next;
elseif x < x_next
while x <=x_next
pause(0.025);
set(h,'xdata',x);
drawnow;
x=x+dx;
end
x=x_next;
else
pause(0.5);
end
end
end