Bonjour, j'aimerais effectuer un programme informatique scilab.
Il s'agit de deux coccinelles qui se déplacent aléatoirement sur une matrice 100*100
Cette matrice comportent un certain nombre de zones dangereuses pour chacune des coccinelles. Ce nombre est décidé par l'utilisateur.
Lorsque la coccinelle n°1 se trouve sur une zone dangereuse 1 : elle meurt. Si elle se trouve sur une zone dangereuse 2 : elle vie. Et inversement pour la coccinelle 2.
J'utilise plusieurs fonctions que voici :
*** function coccinelle()
a=input('Nb de danger pour la coccinelle 1')
b=input('Nb de danger pour la coccinelle 2')
M=terrain(a,b)
coc1=[floor(rand()*100) floor(rand()*100)]
coc2=[floor(rand()*100) floor(rand()*100)]
graphe(M,ccoc1,ccoc2) // on affiche la matrice
coc1_vie = 1 // Vie de la coccinelle coccinelle 1 (0 : Mort / 1 : Vie)
coc2_vie = 1 // Vie coccinelle 2 (0 : Mort / 1 : Vie)
nbredepcoc1=0// on initialise le nombre de deplacement de la coccinelle 1
nbredepcoc2=0 // on initialise le nombre de deplacement de la coccinelle 2
// Deplacement des coccinelles
while coc1_vie==1 | coc2_vie==1 // Tant que l'une des deux coccinelles est en vie
if coc1_vie==1 then // on verifie que la coccinelle 1 soit en vie
[coc1] = deplacement(coc1) // ajout d'une nouvelle position si elle est en vie
nbredepcoc1=nbredepcoc1+1 // on ajoute ce déplacement au nombre de deplacement total de la coccinelle 1
coc1_vie = test_vie(M,coc1,1) // on test si la coccinelle est toujours en vie
end
if coc2_vie==1 then // on verifie que la coccinelle 2 soit en vie
[coc2] = deplacement(coc2) // ajout d'une nouvelle position si elle est en vie
coc2_vie = test_vie(M,coc2,2)
nbredepcoc2=nbredepcoc2+1// on ajoute ce deplacement au nombre de deplacement total de la coccinelle 2
end
ccoc1=[coc1]
ccoc2=[coc2]
graphe(M,ccoc1,ccoc2)// on visualise les deplacements effectués
end
nbredepcoc1// on affiche le nombre de deplacement effectue par la coccinelle 1
nbredepcoc2 // on affiche le nombre de deplacement effectue par la coccinelle 2
endfunction ***
***function [T]=deplacement(T)
n=size(T,1)
i=T(n,1)
j=T(n,2)
dep_x = floor(rand()*3)-1 // deplacement aleatoire selon x on choisi un nombre aleatoire -1, 0 ou 1
dep_y = floor(rand()*3)-1 // deplacement aleatoire selon y on choisi un nombre aleatoire -1 0 ou 1
while i+dep_x<1 & i+dep_x>100 & j+dep_y<1 & j+dep_y>100 // tant que les coordonnées sont hors du terrain, on reeffectue le deplacement
dep_x = floor(rand()*3)-1
dep_y = floor(rand()*3)-1
end
T=[T; i+dep_x j+dep_y] // On enregistre les nouvelles coordonnées
endfunction***
***function M=terrain(a,b)
M=zeros(100,100) // on cree un matrice 100*100 de zéros
k=0
while k<a // tant qu'on n'a pas a zones de danger pour la coccinelle 1
i=floor(rand()*100)+1
j=floor(rand()*100)+1
if M(i,j)==0
M(i,j)=1 // on marque la zone de danger de la coccinelle 1 par 1
k=k+1
end
end
k=0
while k<b // tant qu'on n'a pas b zones de danger pour la coccinelle 2
i=floor(rand()*100)+1 // on effectue la position aleatoire selon x aléatoirement
j=floor(rand()*100)+1// on effectue la position aleatoire selon y aléatoirement
if M(i,j)==0
M(i,j)=2 // on marque la zone de danger de la coccinelle 2 par 2
k=k+1
end
end
endfunction***
***function graphe(M,coc1,coc2)
N=zeros(100,100)
for i=1:100
for j=1:100
if M(i,j)==1
N(i,j)=21
elseif M(i,j)==2
N(i,j)=3
end
end
end
Matplot(N)
coc1=21
coc2=3
Matplot(coc1)
Matplot(coc2)
endfunction***
***function vie = test_vie(Matrice,pos,coccinelle)
vie = 1 // on associe 1 pour la vie
nbr_mat = Matrice(pos(1,1),pos(2,1)) // coordonné de la matrice
if coccinelle == 1 then // si la couleur de la coccinelle est jaune
if nbr_mat ==1 then // et que l on se trouve sur une coordonne de matrice correspondant a une zone de danger de couleur rouge
vie = 0 // la vie devient egale a 0, i.e. la coccinelle jaune meurt
end
end
if coccinelle == 2 then // si la couleur de la coccinelle est rouge
if nbr_mat == 2 then // et que l on se trouve sur une coordonne de matrice correspondant a une zone de danger de couleur jaune
vie = 0 // la vie devient egale a 0, i.e. la coccinelle rouge meurt
end
end
endfunction***
Cependant, mon programme boucle : il doit y avoir un probleme (au moins) au niveau de ma boucle while de ma fonction coccinelle(). Je ne vois pas où.
De plus, j'ai essaye de représenter le deplacement des coccinelles, mais je n'y arrive pas. Comment faire pour l'on puisse observer le deplacement au fur et à mesure de l'avancé ?
Merci bien de votre attention et de l'aide que vous pouvez m'apporter.