import numpy as np import random import copy def map(n,m):#On créé la carte de jeu: n = nombre de lignes M=[] for k in range(n*m): M.append(random.randint(0,1)) #les 1 représentent les bouts de bois M2=np.array(M) M2=M2.reshape((n,m)) return M2 def v(): #On créé les différents vecteurs déplacement des termites par exemple [-1,1] que l'on range dans une liste Z=[] for i in [-1,1]: for j in range(-1,2): Z.append([i,j]) for j in [-1,1]: Z.append([0,j]) return Z def ListeT(nbT,n,m):#On repertorie les informations sur les termites dans une liste L1=[] V=v() for k in range(nbT): L1.append([[random.randint(0,n-1),random.randint(0,m-1)],V[random.randint(0,7)],random.randint(0,1)])#On a : [[a,b],c,d]avec a,b les coordonnées de la position de la matrice dans l'espace de jeu, c son vecteur déplacement et d=0 si non chargée d'un bout de bois, d=1 si la termite est chargée return L1 def deplacetermite(nbT,n,m,p,N):#fonction qui retourne les nouvelles informations des termites après déplacement L1=ListeT(nbT,n,m) M=map(n,m) M2=copy.deepcopy(M) L=copy.deepcopy(L1) for i in range(N): for a in range(nbT): if L[a][0][0]+L[a][1][0]<0 or L[a][0][0]+L[a][1][0]>=m or L[a][0][1]+L[a][1][1]<0 or L[a][0][1]+L[a][1][1]>=n: L[a][0]=[-L[a][0][0],-L[a][0][1]] #Si la termite sort de la map elif M[L[a][0][0],L[a][0][1]]!=0 and L[a][2]==1: M[L[a][0][0],L[a][0][1]]+=1 L[a][2]-=1#la termite ne peut porter qu'un bout de bois: s'il y a déjà un bout de bois et que la termite est chargée, elle se décharge L[a][1]=[-L[a][1][0],-L[a][1][1]]#Après s'être déchargée la termite repart en sens inverse for k in range(2): L[a][0][k]=[L[a][0][k]+L[a][1][k]] elif M[L[a][0][0],L[a][0][1]]!=0 and L[a][2]==0: #S'il y a un bout de bois et qu'elle n'est pas chargée elle le prend M[L[a][0][0],L[a][0][1]]-=1 L[a][2]+=1#idem L[a][1]=[-L[a][1][0],-L[a][1][1]]#faire un changement de direction for k in range(2): L[a][0][k]=[L[a][0][k]+L[a][1][k]] else: #Si il n'y a pas de bout de bois for k in range(2): L[a][0][k]=[L[a][0][k]+L[a][1][k]] ##Changement de coordonnées après déplacement if random.random()