Commit 644f4499de7fa0d667be178c170d151ca1fd6e93

Authored by Mestari Yousra
1 parent 67301222

algo fonctionnel

Showing 1 changed file with 80 additions and 28 deletions   Show diff stats
grille_client.py
1 1 import zmq
  2 +import numpy as np
2 3  
3 4 context = zmq.Context()
4 5  
... ... @@ -7,35 +8,86 @@ context = zmq.Context()
7 8 socket = context.socket(zmq.DEALER)
8 9 socket.connect("tcp://147.250.9.87:5555")
9 10  
10   -def grille_client(J):
11   - for i in range(5):
  11 +def f(c):
  12 + return ord(c)-ord("A")+1
  13 +
  14 +def grille_client(bateaux):
  15 + chaine=''
  16 + position={}
  17 + M=np.zeros((10,10))
  18 + for elem in bateaux:
  19 + validation="non"
  20 +
12 21 #verifier que les bateaux sont bien mis
13   - empty,validation=socket.recv_multipart()
14   - while validation.decode() != "ok":
  22 +
  23 + while validation != "ok":
15 24 #question de la tete
16   - empty,reponse=socket.recv_multipart()
17   - print(reponse.decode())
18   - #reponse de la tete
19   - position_avant=input()
20   - socket.send_multipart([b'',position_avant.encode()])
21   - empty,reponse=socket.recv_multipart()
22   - #tete illegale
23   - if reponse.decode()=="Cette case est deja occupee":
24   - print(reponse.decode())
25   - empty,validation=socket.recv_multipart()
26   - #tete legale
  25 + question= "Ou voulez-vous mettre la tete du " + elem.nom + "?"
  26 + tete=input(question +"\n")
  27 + k=f(tete[0])-1
  28 + l=int(tete[1])-1
  29 + #gerer le cas de la 10eme colonne
  30 + if len(tete)==3:
  31 + l=9
  32 + #verifier que la case est libre
  33 + if M[k][l]!=0:
  34 + print("Cette case est deja occupee")
  35 + #lister les possibilites de placement
27 36 else:
28   - #question de la queue
29   - print(reponse.decode())
30   - #reponse de la queue
31   - position_queue=input()
32   - socket.send_multipart([b'',position_queue.encode()])
33   - empty,reponse=socket.recv_multipart()
34   - #queue illegale
35   - if reponse.decode()=="Cette combinaison n'est pas valable":
36   - print(reponse.decode())
37   - empty,validation=socket.recv_multipart()
38   - #queue legale
  37 + possibilites=[]
  38 + a,b,c,d=0,0,0,0
  39 + for case in range(0,elem.longueur):
  40 + #horizontal a gauche
  41 + if k-elem.longueur<-1 or M[k-case][l]!=0:
  42 + a+=1
  43 + #horizontal a droite
  44 + if k+elem.longueur>10 or M[k+case][l]!=0:
  45 + b+=1
  46 + #vertical en haut
  47 + if l-elem.longueur<-1 or M[k][l-case]!=0:
  48 + c+=1
  49 + #vertical en bas
  50 + if l+elem.longueur>10 or M[k][l+case]!=0:
  51 + d+=1
  52 + possibilites_cases=[]
  53 + if a==0:
  54 + possibilites.append(chr(64+k-elem.longueur+2)+ str(l+1))
  55 + possibilites_cases.append((k-elem.longueur+1,l))
  56 + if b==0:
  57 + possibilites.append(chr(64+k+elem.longueur)+str(l+1))
  58 + possibilites_cases.append((k+elem.longueur-1,l))
  59 + if c==0:
  60 + possibilites.append(chr(k+65) +str(l-elem.longueur+2))
  61 + possibilites_cases.append((k,l-elem.longueur+1))
  62 + if d==0:
  63 + possibilites.append(chr(k+65) +str(l+elem.longueur))
  64 + possibilites_cases.append((k,l+elem.longueur-1))
  65 + poss=''
  66 + for possi in possibilites:
  67 + poss+=possi+', '
  68 + poss=poss[:-2]
  69 + #derniere case du bateau
  70 + question="Ou voulez-vous mettre la queue du " + elem.nom + " parmi les possibilites : " + poss + "?"
  71 + queue=input(question + "\n")
  72 + m=f(queue[0])-1
  73 + n=int(queue[1])-1
  74 + if len(queue)==3:
  75 + n=9
  76 + if (m,n) not in possibilites_cases:
  77 + print("Cette combinaison n'est pas valable")
39 78 else:
40   - empty,validation=socket.recv_multipart()
41   - return
42 79 \ No newline at end of file
  80 + #placement du bateau
  81 + chaine=chaine+elem.nom +':'+ tete + "-"+ queue + ','
  82 +
  83 + #a mettre dans une fonction annexe pour le serveur et
  84 + if k==m:
  85 + for i in range(min(l,n),max(l,n)+1):
  86 + M[k][i]=1
  87 + position[(k,i)]=elem.nom,elem.longueur,1
  88 + if l==n:
  89 + for i in range(min(k,m),max(k,m)+1):
  90 + M[i][l]=1
  91 + position[(i,l)]=elem.nom,elem.longueur,1
  92 + print(M)
  93 + validation="ok"
  94 + return(M,position,chaine)
... ...