clear; %清除工作区
clc; %清除命令区
figure('name','传教士-野人'); %设置标题
axis ([0 ,10,0,10]); %建立坐标系
hold on;
%axis off;
text(3,9.8,'传教士与野人过河问题','fontsize',13,'color','r');
b1=line([2;2],[ 9;9.5],'color','k','linewidth',8);
b2=line([2;2],[ 8;8.5],'color','b','linewidth',8);
b3=line([2;2],[7;7.5],'color','y','linewidth',22);
text(2.5,9.25,'---野人','fontsize',10,'color','b');
text(2.5,8.25,'---传教士','fontsize',10,'color','b');
text(2.5,7.25,'---船','fontsize',10,'color','b');
text(8.9,9.7,'小组成员:','fontsize',10,'color','b');
text(9.5,9.2,'施六五','fontsize',10,'color','b');
text(9.5,8.7,'王鑫','fontsize',10,'color','b');
text(9.5,8.2,'张超林','fontsize',10,'color','b');
text(9.5,7.7,'刘晖','fontsize',10,'color','b');
text(9.5,7.2,'赵晓鹰','fontsize',10,'color','b');
text(9.5,6.7,'沈海严','fontsize',10,'color','b');
fill([3,3,7,7],[0,1.5,1.5,0],[1,0.1,0.5]);
fill([0,0,3,3],[0,2.5,2.5,0],[1,0.5,0.2]);
fill([7,7,10,10],[0,2.5,2.5,0],[1,0.5,0.2]);
c1=line([7.2;7.2],[ 2.5;4],'color','k','linewidth',8);
c2=line([7.5;7.5],[ 2.5;4],'color','k','linewidth',8);
c3=line([7.8;7.8],[ 2.5;4],'color','k','linewidth',8);
c4=line([8.1;8.1],[ 2.5;4],'color','b','linewidth',8);
c5=line([8.4;8.4],[ 2.5;4],'color','b','linewidth',8);
c6=line([8.7;8.7],[ 2.5;4],'color','b','linewidth',8);
c7=line([5;7],[1.5;1.5],'color','y','linewidth',40);
s=0.0;
ds=0.01;
pausetime1=0.00000000001;
%第一、二个野人上船
while s<0.3
s=s+ds;
set(c1,'xdata',[7.2-s,7.2-s],'ydata',[2.5,4]);
set(c2,'xdata',[7.5-2*s,7.5-2*s],'ydata',[2.5,4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
set(c1,'xdata',[6.9,6.9],'ydata',[2.5-s,4-s]);
set(c2,'xdata',[6.9,6.9],'ydata',[2.5-s,4-s]);
pause(pausetime1);
end
s=0;
while s<1
s=s+ds;
set(c1,'xdata',[6.9-s,6.9-s],'ydata',[1.9,3.4]);
set(c2,'xdata',[6.9-0.6*s,6.9-0.6*s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
%船开始行动
while s<2
s=s+ds;
set(c7,'xdata',[5-s,7-s],'ydata',[1.5,1.5]);
set(c1,'xdata',[5.9-s,5.9-s],'ydata',[1.9,3.4]);
set(c2,'xdata',[6.3-s,6.3-s],'ydata',[1.9,3.4]);
pause(pausetime1);
% set(gcf,'doublebuffer','on');
end
s=0;
%第一个野人开始上岸
while s<0.84
s=s+ds;
set(c1,'xdata',[3.9-s,3.9-s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
set(c1,'xdata',[3.06,3.06],'ydata',[1.9+s,3.4+s]);
pause(pausetime1);
end
s=0;
while s<1
s=s+ds;
set(c1,'xdata',[3.06-s,3.06-s],'ydata',[2.5,4]);
pause(pausetime1);
end
%第二个野人返回
s=0;
while s<2
s=s+ds;
set(c7,'xdata',[3+s,5+s],'ydata',[1.5,1.5]);
set(c2,'xdata',[4.3+s,4.3+s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
%第三个野人上船
while s<0.8
s=s+ds;
set(c3,'xdata',[7.8-s,7.8-s],'ydata',[2.5,4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
set(c3,'xdata',[7,7],'ydata',[2.5-s,4-s]);
pause(pausetime1);
end
s=0;
while s<1
s=s+ds;
set(c3,'xdata',[7-s,7-s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
%船开始行动
while s<2
s=s+ds;
set(c7,'xdata',[5-s,7-s],'ydata',[1.5,1.5]);
set(c3,'xdata',[5.9-s,5.9-s],'ydata',[1.9,3.4]);
set(c2,'xdata',[6.3-s,6.3-s],'ydata',[1.9,3.4]);
pause(pausetime1);
% set(gcf,'doublebuffer','on');
end
s=0;
%第三个野人上岸
while s<0.84
s=s+ds;
set(c3,'xdata',[3.9-s,3.9-s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
set(c3,'xdata',[3.06,3.06],'ydata',[1.9+s,3.4+s]);
pause(pausetime1);
end
s=0;
while s<2
s=s+ds;
set(c3,'xdata',[3.06-s,3.06-s],'ydata',[2.5,4]);
pause(pausetime1);
end
%第二个野人返回
s=0;
while s<2
s=s+ds;
set(c7,'xdata',[3+s,5+s],'ydata',[1.5,1.5]);
set(c2,'xdata',[4.3+s,4.3+s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
%第二个野人上岸
while s<0.7
s=s+ds;
%set(c1,'xdata',[7.2-s,7.2-s],'ydata',[2.5,4]);
set(c2,'xdata',[6.3+s,6.3+s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
%set(c1,'xdata',[6.9,6.9],'ydata',[2.5-s,4-s]);
set(c2,'xdata',[7,7],'ydata',[1.9+s,3.4+s]);
pause(pausetime1);
end
s=0;
while s<1
s=s+ds;
%set(c1,'xdata',[6.9-s,6.9-s],'ydata',[1.9,3.4]);
set(c2,'xdata',[7+0.6*s,7+0.6*s],'ydata',[2.5,4]);
pause(pausetime1);
end
s=0;
%第一、二个传教士上船
while s<1.2
s=s+ds;
set(c4,'xdata',[8.1-s,8.1-s],'ydata',[2.5,4]);
set(c5,'xdata',[8.4-1.25*s,8.4-1.25*s],'ydata',[2.5,4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
set(c4,'xdata',[6.9,6.9],'ydata',[2.5-s,4-s]);
set(c5,'xdata',[6.9,6.9],'ydata',[2.5-s,4-s]);
pause(pausetime1);
end
s=0;
while s<1
s=s+ds;
set(c4,'xdata',[6.9-s,6.9-s],'ydata',[1.9,3.4]);
set(c5,'xdata',[6.9-0.6*s,6.9-0.6*s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
%船开始行动
while s<2
s=s+ds;
set(c7,'xdata',[5-s,7-s],'ydata',[1.5,1.5]);
set(c4,'xdata',[5.9-s,5.9-s],'ydata',[1.9,3.4]);
set(c5,'xdata',[6.3-s,6.3-s],'ydata',[1.9,3.4]);
pause(pausetime1);
% set(gcf,'doublebuffer','on');
end
s=0;
%第一、二个传教士上岸
while s<0.84
s=s+ds;
set(c4,'xdata',[3.9-s,3.9-s],'ydata',[1.9,3.4]);
set(c5,'xdata',[4.3-1.4*s,4.3-1.4*s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
set(c4,'xdata',[3.06,3.06],'ydata',[1.9+s,3.4+s]);
set(c5,'xdata',[3.124,3.124],'ydata',[1.9+s,3.4+s]);
pause(pausetime1);
end
s=0;
while s<1.5
s=s+ds;
set(c4,'xdata',[3.06-s,3.06-s],'ydata',[2.5,4]);
set(c5,'xdata',[3.124-1.5*s,3.124-1.5*s],'ydata',[2.5,4]);
pause(pausetime1);
end
s=0;
%第一个野人、传教士上船
while s<1
s=s+ds;
set(c1,'xdata',[2.06+s,2.06+s],'ydata',[2.5,4]);
set(c4,'xdata',[1.56+1.5*s,1.56+1.5*s],'ydata',[2.5,4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
set(c1,'xdata',[3.06,3.06],'ydata',[2.5-s,4-s]);
set(c4,'xdata',[3.06,3.06],'ydata',[2.5-s,4-s]);
pause(pausetime1);
end
s=0;
while s<0.84
s=s+ds;
set(c1,'xdata',[3.06+s,3.06+s],'ydata',[1.9,3.4]);
set(c4,'xdata',[3.06+1.47*s,3.06+1.47*s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
%第一个传教士和第一个野人返回
while s<2
s=s+ds;
set(c7,'xdata',[3+s,5+s],'ydata',[1.5,1.5]);
set(c4,'xdata',[4.3+s,4.3+s],'ydata',[1.9,3.4]);
set(c1,'xdata',[3.9+s,3.9+s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
%第一个野人、第一个传教士上岸
while s<1
s=s+ds;
set(c4,'xdata',[6.3+0.6*s,6.3+0.6*s],'ydata',[1.9,3.4]);
set(c1,'xdata',[5.9+s,5.9+s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
set(c4,'xdata',[6.9,6.9],'ydata',[1.9+s,3.4+s]);
set(c1,'xdata',[6.9,6.9],'ydata',[1.9+s,3.4+s]);
pause(pausetime1);
end
s=0;
while s<0.3
s=s+ds;
set(c4,'xdata',[6.9+(1+1/3)*s,6.9+(1+1/3)*s],'ydata',[2.5,4]);
set(c1,'xdata',[6.9+s,6.9+s],'ydata',[2.5,4]);
pause(pausetime1);
end
s=0;
%第三个传教士上船
while s<1.8
s=s+ds;
set(c6,'xdata',[8.7-s,8.7-s],'ydata',[2.5,4]);
set(c4,'xdata',[8.1-2/3*s,8.1-2/3*s],'ydata',[2.5,4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
set(c6,'xdata',[6.9,6.9],'ydata',[2.5-s,4-s]);
set(c4,'xdata',[6.9,6.9],'ydata',[2.5-s,4-s]);
pause(pausetime1);
end
s=0;
while s<1
s=s+ds;
set(c6,'xdata',[6.9-s,6.9-s],'ydata',[1.9,3.4]);
set(c4,'xdata',[6.9-0.6*s,6.9-0.6*s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
%船开始行动
while s<2
s=s+ds;
set(c7,'xdata',[5-s,7-s],'ydata',[1.5,1.5]);
set(c6,'xdata',[5.9-s,5.9-s],'ydata',[1.9,3.4]);
set(c4,'xdata',[6.3-s,6.3-s],'ydata',[1.9,3.4]);
pause(pausetime1);
% set(gcf,'doublebuffer','on');
end
s=0;
%第二、三传教士上对岸
while s<0.84
s=s+ds;
set(c6,'xdata',[3.9-s,3.9-s],'ydata',[1.9,3.4]);
set(c4,'xdata',[4.3-1.5*s,4.3-1.5*s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
set(c6,'xdata',[3.06,3.06],'ydata',[1.9+s,3.4+s]);
set(c4,'xdata',[3.06,3.06],'ydata',[1.9+s,3.4+s]);
pause(pausetime1);
end
s=0;
while s<1
s=s+ds;
set(c6,'xdata',[3.06-s,3.06-s],'ydata',[2.5,4]);
set(c4,'xdata',[3.06-1.2*s,3.06-1.2*s],'ydata',[2.5,4]);
pause(pausetime1);
end
s=0;
%第三野人上船
while s<2
s=s+ds;
set(c3,'xdata',[1.06+s,1.06+s],'ydata',[2.5,4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
set(c3,'xdata',[3.06,3.06],'ydata',[2.5-s,4-s]);
pause(pausetime1);
end
s=0;
while s<0.84
s=s+ds;
set(c3,'xdata',[3.06+s,3.06+s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
%第三个野人返回
while s<2
s=s+ds;
set(c7,'xdata',[3+s,5+s],'ydata',[1.5,1.5]);
set(c3,'xdata',[3.9+s,3.9+s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
%第一个野人上船
while s<0.3
s=s+ds;
set(c1,'xdata',[7.2-s,7.2-s],'ydata',[2.5,4]);
%set(c2,'xdata',[7.5-2*s,7.5-2*s],'ydata',[2.5,4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
set(c1,'xdata',[6.9,6.9],'ydata',[2.5-s,4-s]);
%set(c2,'xdata',[6.9,6.9],'ydata',[2.5-s,4-s]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
set(c1,'xdata',[6.9-s,6.9-s],'ydata',[1.9,3.4]);
%set(c2,'xdata',[6.9-0.6*s,6.9-0.6*s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
%船开始行动
while s<2
s=s+ds;
set(c7,'xdata',[5-s,7-s],'ydata',[1.5,1.5]);
set(c3,'xdata',[5.9-s,5.9-s],'ydata',[1.9,3.4]);
set(c1,'xdata',[6.3-s,6.3-s],'ydata',[1.9,3.4]);
pause(pausetime1);
% set(gcf,'doublebuffer','on');
end
s=0;
%第三个野人上岸
while s<0.84
s=s+ds;
set(c3,'xdata',[3.9-s,3.9-s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
set(c3,'xdata',[3.06,3.06],'ydata',[1.9+s,3.4+s]);
pause(pausetime1);
end
s=0;
while s<2.7
s=s+ds;
set(c3,'xdata',[3.06-s,3.06-s],'ydata',[2.5,4]);
pause(pausetime1);
end
%第一个野人返回
s=0;
while s<2
s=s+ds;
set(c7,'xdata',[3+s,5+s],'ydata',[1.5,1.5]);
set(c1,'xdata',[4.3+s,4.3+s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
%第二个野人上船
while s<0.3
s=s+ds;
%set(c1,'xdata',[7.2-s,7.2-s],'ydata',[2.5,4]);
set(c2,'xdata',[7.5-2*s,7.5-2*s],'ydata',[2.5,4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
%set(c1,'xdata',[6.9,6.9],'ydata',[2.5-s,4-s]);
set(c2,'xdata',[6.9,6.9],'ydata',[2.5-s,4-s]);
pause(pausetime1);
end
s=0;
while s<1
s=s+ds;
%set(c1,'xdata',[6.9-s,6.9-s],'ydata',[1.9,3.4]);
set(c2,'xdata',[6.9-s,6.9-s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
%船开始行动
while s<2
s=s+ds;
set(c7,'xdata',[5-s,7-s],'ydata',[1.5,1.5]);
set(c2,'xdata',[5.9-s,5.9-s],'ydata',[1.9,3.4]);
set(c1,'xdata',[6.3-s,6.3-s],'ydata',[1.9,3.4]);
pause(pausetime1);
% set(gcf,'doublebuffer','on');
end
s=0;
%第一、二野人上岸
while s<0.84
s=s+ds;
set(c2,'xdata',[3.9-s,3.9-s],'ydata',[1.9,3.4]);
set(c1,'xdata',[4.3-1.5*s,4.3-1.5*s],'ydata',[1.9,3.4]);
pause(pausetime1);
end
s=0;
while s<0.6
s=s+ds;
set(c2,'xdata',[3.06,3.06],'ydata',[1.9+s,3.4+s]);
set(c1,'xdata',[3.06,3.06],'ydata',[1.9+s,3.4+s]);
pause(pausetime1);
end
s=0;
while s<2
s=s+ds;
set(c2,'xdata',[3.06-s,3.06-s],'ydata',[2.5,4]);
set(c1,'xdata',[3.06-1.2*s,3.06-1.2*s],'ydata',[2.5,4]);
pause(pausetime1);
end
|