clear;
stacksize(150000000);
driver("X11");
rand("uniform");

clf(1);
scf(1);
xset("wpos",200,0)
xselect();
f=gcf();
f.pixmap="on";
xset("wdim",810,650);
//securite=0.99;

temps_par_coul=10;

xselect();
show_pixmap();
								
choix_nbre_pas=[50;150;400;600;1000;2000];
string_pas=string(choix_nbre_pas);

while %T

	dim=x_choose(["1";"2";"3"],"Dimension", "Quitter");
	
	xselect();
	
	select dim  
	
	case 0 then
		break;
	
	case 1 then
		//subplot(2,1,1);
		
		while %T
		
		choix_pas=x_choose(string_pas,"Nombre de pas", "Quitter");
		
		xselect();
		
		select choix_pas
		
			case 0 then 
				break;
			
			else 
				
				clf(1); 

				nbre_pas=choix_nbre_pas(choix_pas);
				
				a = gca(); // a est le handle sur ces axes par defaut 
				a.title.font_size = 5; //(=%18pts;)
				a.title.font_style = 6; //(= %times_bold;)
				a.title.text="Marche aleatoire sur Z, entre les instants 0 et "+string(nbre_pas);

				
				//Rmax=sqrt(nbre_pas)*cdfnor("X",0,1,securite,1-securite);
				
				traj=cumsum([0,2*grand(1,nbre_pas,'bin',1,.5)-1]);
				
				Rmax=max(abs(traj));
				
				for t=1:nbre_pas
				
					plot2d([t-1,t],traj(t:t+1),style=5,rect=[0,-Rmax,nbre_pas,Rmax], axesflag=5,frameflag=1);
					
					xselect();
					show_pixmap();
				
				end //pour for t=0:nbre_pas
				
				clear traj;
				
		end // pour select nbre_pas
	
		end// pour while %T
	
	case 2 then

		while %T
		
		choix_pas=x_choose(string_pas,"Nombre de pas", "Quitter");
		
		xselect();
		
		select choix_pas
		
			case 0 then 
				break;
			
			else 
				
				clf(1); 
				
				nbre_pas=choix_nbre_pas(choix_pas);
				
				a = gca(); // a est le handle sur ces axes par defaut 
				a.title.font_size = 5; //(=%18pts;)
				a.title.font_style = 6; //(= %times_bold;)
				a.title.text="Marche aleatoire sur Z^2, entre les instants 0 et "+string(nbre_pas);

				
				//Rmax=sqrt(nbre_pas*.3)*cdfnor("X",0,1,securite,1-securite);
				
				alea_marche1=grand(1,nbre_pas,'bin',1,.5); //choix x ou y
				alea_marche2=2*grand(1,nbre_pas,'bin',1,.5)-1; //choix 1 ou -1
				
				pas_x=alea_marche1.*alea_marche2;
				pas_y=(1-alea_marche1).*alea_marche2;	
				
				traj_x=cumsum([0,pas_x]);
				traj_y=cumsum([0,pas_y]);
				
				Rmax=max(abs([traj_x,traj_y]));
				
				x_coul=4;
				
				for t=1:nbre_pas
					
					x_coul=x_coul+1/temps_par_coul;
					couleur=modulo(round(x_coul),29)+1;
					if (couleur==7 | couleur==8) then x_coul=x_coul+2*temps_par_coul; couleur=9; end
					plot2d(traj_x(t:t+1),traj_y(t:t+1),style=couleur,rect=[-Rmax,-Rmax,Rmax,Rmax], axesflag=5,frameflag=1);
					
					xselect();
					show_pixmap();
				
				end //pour for t=0:nbre_pas
				
				clear pas_x;
				clear traj_x;
				clear pas_y;
				clear traj_y;
				
		end // pour select nbre_pas
	
		end// pour while %T
		
	case 3 then

		while %T
		
		choix_pas=x_choose(string_pas,"Nombre de pas", "Quitter");
		
		xselect();
		
		select choix_pas
		
			case 0 then 
				break;
			
			else 
				
				clf(1); 
				
				nbre_pas=choix_nbre_pas(choix_pas);
				
				a = gca(); // a est le handle sur ces axes par defaut 
				a.title.font_size = 5; //(=%18pts;)
				a.title.font_style = 6; //(= %times_bold;)
				a.title.text="Marche aleatoire sur Z^3, entre les instants 0 et "+string(nbre_pas);

				
				//Rmax=sqrt(nbre_pas*.1)*cdfnor("X",0,1,securite,1-securite);
				
				alea_marche1=grand(1,nbre_pas,'uin',0,2);//choix x ou y ou z
				alea_marche2=2*grand(1,nbre_pas,'bin',1,.5)-1; //choix 1 ou -1
				
				pas_x=(alea_marche1==0).*alea_marche2;
				pas_y=(alea_marche1==1).*alea_marche2;
				pas_z=(alea_marche1==2).*alea_marche2;	
				
				traj_x=cumsum([0,pas_x])';
				traj_y=cumsum([0,pas_y])';
				traj_z=cumsum([0,pas_z])';
				
				Rmax=max(abs([traj_x,traj_y,traj_z]));
				
				x_coul=4;
				
				for t=1:nbre_pas
					
					x_coul=x_coul+1/temps_par_coul;
					couleur=modulo(round(x_coul),29)+1;
					if (couleur==7 | couleur==8) then x_coul=x_coul+2*temps_par_coul; couleur=9; end
					
					param3d1(traj_x(t:t+1),traj_y(t:t+1),list(traj_z(t:t+1),couleur));//,flag=[3,0], ebox=[-Rmax,-Rmax,-Rmax,Rmax,Rmax,Rmax]);
				
					
					xselect();
					show_pixmap();
				
				end //pour for t=0:nbre_pas
				
				clear pas_x;
				clear traj_x;
				clear pas_y;
				clear traj_y;
				clear pas_z;
				clear traj_z;
				
		end // pour select nbre_pas
	
		end// pour while %T
			
	end //pour select dim
	
end //pour le while %T

f.pixmap="off";
driver("Rec");	