Loading grille_client.py +80 −28 Original line number Diff line number Diff line import zmq import numpy as np context = zmq.Context() Loading @@ -7,35 +8,86 @@ context = zmq.Context() socket = context.socket(zmq.DEALER) socket.connect("tcp://147.250.9.87:5555") def grille_client(J): for i in range(5): def f(c): return ord(c)-ord("A")+1 def grille_client(bateaux): chaine='' position={} M=np.zeros((10,10)) for elem in bateaux: validation="non" #verifier que les bateaux sont bien mis empty,validation=socket.recv_multipart() while validation.decode() != "ok": while validation != "ok": #question de la tete empty,reponse=socket.recv_multipart() print(reponse.decode()) #reponse de la tete position_avant=input() socket.send_multipart([b'',position_avant.encode()]) empty,reponse=socket.recv_multipart() #tete illegale if reponse.decode()=="Cette case est deja occupee": print(reponse.decode()) empty,validation=socket.recv_multipart() #tete legale question= "Ou voulez-vous mettre la tete du " + elem.nom + "?" tete=input(question +"\n") k=f(tete[0])-1 l=int(tete[1])-1 #gerer le cas de la 10eme colonne if len(tete)==3: l=9 #verifier que la case est libre if M[k][l]!=0: print("Cette case est deja occupee") #lister les possibilites de placement else: #question de la queue print(reponse.decode()) #reponse de la queue position_queue=input() socket.send_multipart([b'',position_queue.encode()]) empty,reponse=socket.recv_multipart() #queue illegale if reponse.decode()=="Cette combinaison n'est pas valable": print(reponse.decode()) empty,validation=socket.recv_multipart() #queue legale possibilites=[] a,b,c,d=0,0,0,0 for case in range(0,elem.longueur): #horizontal a gauche if k-elem.longueur<-1 or M[k-case][l]!=0: a+=1 #horizontal a droite if k+elem.longueur>10 or M[k+case][l]!=0: b+=1 #vertical en haut if l-elem.longueur<-1 or M[k][l-case]!=0: c+=1 #vertical en bas if l+elem.longueur>10 or M[k][l+case]!=0: d+=1 possibilites_cases=[] if a==0: possibilites.append(chr(64+k-elem.longueur+2)+ str(l+1)) possibilites_cases.append((k-elem.longueur+1,l)) if b==0: possibilites.append(chr(64+k+elem.longueur)+str(l+1)) possibilites_cases.append((k+elem.longueur-1,l)) if c==0: possibilites.append(chr(k+65) +str(l-elem.longueur+2)) possibilites_cases.append((k,l-elem.longueur+1)) if d==0: possibilites.append(chr(k+65) +str(l+elem.longueur)) possibilites_cases.append((k,l+elem.longueur-1)) poss='' for possi in possibilites: poss+=possi+', ' poss=poss[:-2] #derniere case du bateau question="Ou voulez-vous mettre la queue du " + elem.nom + " parmi les possibilites : " + poss + "?" queue=input(question + "\n") m=f(queue[0])-1 n=int(queue[1])-1 if len(queue)==3: n=9 if (m,n) not in possibilites_cases: print("Cette combinaison n'est pas valable") else: empty,validation=socket.recv_multipart() return No newline at end of file #placement du bateau chaine=chaine+elem.nom +':'+ tete + "-"+ queue + ',' #a mettre dans une fonction annexe pour le serveur et if k==m: for i in range(min(l,n),max(l,n)+1): M[k][i]=1 position[(k,i)]=elem.nom,elem.longueur,1 if l==n: for i in range(min(k,m),max(k,m)+1): M[i][l]=1 position[(i,l)]=elem.nom,elem.longueur,1 print(M) validation="ok" return(M,position,chaine) Loading
grille_client.py +80 −28 Original line number Diff line number Diff line import zmq import numpy as np context = zmq.Context() Loading @@ -7,35 +8,86 @@ context = zmq.Context() socket = context.socket(zmq.DEALER) socket.connect("tcp://147.250.9.87:5555") def grille_client(J): for i in range(5): def f(c): return ord(c)-ord("A")+1 def grille_client(bateaux): chaine='' position={} M=np.zeros((10,10)) for elem in bateaux: validation="non" #verifier que les bateaux sont bien mis empty,validation=socket.recv_multipart() while validation.decode() != "ok": while validation != "ok": #question de la tete empty,reponse=socket.recv_multipart() print(reponse.decode()) #reponse de la tete position_avant=input() socket.send_multipart([b'',position_avant.encode()]) empty,reponse=socket.recv_multipart() #tete illegale if reponse.decode()=="Cette case est deja occupee": print(reponse.decode()) empty,validation=socket.recv_multipart() #tete legale question= "Ou voulez-vous mettre la tete du " + elem.nom + "?" tete=input(question +"\n") k=f(tete[0])-1 l=int(tete[1])-1 #gerer le cas de la 10eme colonne if len(tete)==3: l=9 #verifier que la case est libre if M[k][l]!=0: print("Cette case est deja occupee") #lister les possibilites de placement else: #question de la queue print(reponse.decode()) #reponse de la queue position_queue=input() socket.send_multipart([b'',position_queue.encode()]) empty,reponse=socket.recv_multipart() #queue illegale if reponse.decode()=="Cette combinaison n'est pas valable": print(reponse.decode()) empty,validation=socket.recv_multipart() #queue legale possibilites=[] a,b,c,d=0,0,0,0 for case in range(0,elem.longueur): #horizontal a gauche if k-elem.longueur<-1 or M[k-case][l]!=0: a+=1 #horizontal a droite if k+elem.longueur>10 or M[k+case][l]!=0: b+=1 #vertical en haut if l-elem.longueur<-1 or M[k][l-case]!=0: c+=1 #vertical en bas if l+elem.longueur>10 or M[k][l+case]!=0: d+=1 possibilites_cases=[] if a==0: possibilites.append(chr(64+k-elem.longueur+2)+ str(l+1)) possibilites_cases.append((k-elem.longueur+1,l)) if b==0: possibilites.append(chr(64+k+elem.longueur)+str(l+1)) possibilites_cases.append((k+elem.longueur-1,l)) if c==0: possibilites.append(chr(k+65) +str(l-elem.longueur+2)) possibilites_cases.append((k,l-elem.longueur+1)) if d==0: possibilites.append(chr(k+65) +str(l+elem.longueur)) possibilites_cases.append((k,l+elem.longueur-1)) poss='' for possi in possibilites: poss+=possi+', ' poss=poss[:-2] #derniere case du bateau question="Ou voulez-vous mettre la queue du " + elem.nom + " parmi les possibilites : " + poss + "?" queue=input(question + "\n") m=f(queue[0])-1 n=int(queue[1])-1 if len(queue)==3: n=9 if (m,n) not in possibilites_cases: print("Cette combinaison n'est pas valable") else: empty,validation=socket.recv_multipart() return No newline at end of file #placement du bateau chaine=chaine+elem.nom +':'+ tete + "-"+ queue + ',' #a mettre dans une fonction annexe pour le serveur et if k==m: for i in range(min(l,n),max(l,n)+1): M[k][i]=1 position[(k,i)]=elem.nom,elem.longueur,1 if l==n: for i in range(min(k,m),max(k,m)+1): M[i][l]=1 position[(i,l)]=elem.nom,elem.longueur,1 print(M) validation="ok" return(M,position,chaine)