Commit 66b82a3f281ba84165fb3ee5d9bf9ce4e4cee0a7

Authored by Trogno Lucas
1 parent 674d45c6

Algorithme modifié

Showing 1 changed file with 71 additions and 38 deletions   Show diff stats
algo_princpal.py
1   -
2   -
3   -#
4 1 # Hello World server in Python
5 2 # Binds REP socket to tcp://*:5555
6 3 # Expects b"Hello" from client, replies with b"World"
... ... @@ -9,13 +6,13 @@
9 6 import time
10 7 import zmq
11 8 import numpy as np
12   -import builtsin
  9 +import builtins
13 10  
14 11 def f(c):
15   - return ord(c)-ord("a")+1
  12 + return ord(c)-ord("A")+1
16 13  
17 14 class Bateau:
18   - "définition de la classe bateau"
  15 + "definition de la classe bateau"
19 16  
20 17 porte_avion=Bateau()
21 18 porte_avion.longueur=5
... ... @@ -40,7 +37,7 @@ torpilleur.nom="torpilleur"
40 37 bateaux=[porte_avion, croiseur, contre_torpilleur, sous_marin, torpilleur]
41 38  
42 39 class Joueur:
43   - "définition d'un joueur"
  40 + "definition d'un joueur"
44 41  
45 42 J1=Joueur()
46 43 M1=np.zeros((10,10))
... ... @@ -50,58 +47,94 @@ M2=np.zeros((10,10))
50 47 J2.grille=M2
51 48  
52 49 context = zmq.Context()
53   -socket = context.socket(zmq.REP)
  50 +socket = context.socket(zmq.ROUTER)
54 51 socket.bind("tcp://*:5555")
55 52  
56 53 while True:
57 54 # Wait for next request from client
58   - message = socket.recv()
59   - print(message)
  55 + addr,empty,message=socket.recv_multipart()
  56 + print(message.decode())
60 57 if message.decode() =="PLAY":
61   - socket.send(b"VS J2 or C?")
62   - vs=socket.recv()
  58 + socket.send_multipart(b"VS J2 or C?")
  59 + addr,empty,msg=socket.recv_multipart()
63 60 print(vs.decode())
64   - socket.send(b"Comment vous appelez-vous?")
65   - nom=socket.recv()
  61 + socket.send_multipart(b"Comment vous appelez-vous?")
  62 + addr,empty,msg=socket.recv_multipart()
66 63 print(nom.decode())
67 64 J1.nom=nom.decode
  65 + #constituer sa grille
68 66 for elem in bateaux:
69 67 question="Ou voulez-vous mettre la tete de " + elem.nom + "?"
70   - socket.send(question.encode())
71   - tete=socket.recv()
72   - k=f(tete[0])
73   - l=int(tete[1])
74   - assert M1[k][l]==0
75   - possibilites=[]
76   - for possibility in range(4):
  68 + question=question.encode()
  69 + socket.send_multipart[addr,question]
  70 + tete=addr,empty,msg=socket.recv_multipart()
  71 + tete=tete.decode()
  72 + k=f(tete[0])-1
  73 + l=int(tete[1])-1
  74 + if M1[k][l]!=0:
  75 + socket.send_multipart(b"Cette case est deja occupee")
  76 + bateaux.append(elem)
  77 + else:
  78 + possibilites=[]
77 79 a,b,c,d=0,0,0,0
78 80 for case in range(0,elem.longueur):
79   - if k-elem.longueur<0 or M1[k-case][l]!=0:
  81 + #horizontal a gauche
  82 + if k-elem.longueur<-1 or M1[k-case][l]!=0:
80 83 a+=1
81   - if k+elem.longueur>10 and M1[k+case][l]!=0:
  84 + #horizontal a droite
  85 + if k+elem.longueur>10 or M1[k+case][l]!=0:
82 86 b+=1
83   - if l-elem.longueur<0 and M1[k][l-case]!=0:
  87 + #vertical en haut
  88 + if l-elem.longueur<-1 or M1[k][l-case]!=0:
84 89 c+=1
85   - if k-elem.longueur>10 and M1[k][l+case]!=0:
  90 + #vertical en bas
  91 + if l+elem.longueur>10 or M1[k][l+case]!=0:
86 92 d+=1
87 93 if a==0:
88   - possibilites.append(chr(96+k-elem.longueur)+'l')
  94 + possibilites.append(chr(64+k-elem.longueur+2)+ str(l+1))
89 95 if b==0:
90   - possibilites.append(chr(96+k+elem.longueur)+'l')
  96 + possibilites.append(chr(64+k+elem.longueur)+str(l+1))
91 97 if c==0:
92   - possibilites.append('k'+chr(96+l-elem.longueur))
  98 + possibilites.append(chr(k+65) +str(l-elem.longueur+2))
93 99 if d==0:
94   - possibilites.append('k'+chr(96+l+elem.longueur))
95   -
96   - question="Ou voulez-vous mettre la queue de " + elem.nom + " parmis les possibilités?"
97   - print(possibilites)
98   - socket.send(question.encode())
99   - queue=socket.recv()
100   - m=f(tete[0])
101   - n=int(tete[1])
102   -
  100 + possibilites.append(chr(k+65) +str(l+elem.longueur))
  101 + poss=''
  102 + for possi in possibilites:
  103 + poss+=possi+', '
  104 + poss=poss[:-2]
  105 + print('possibilites = ' + poss)
  106 + question="Ou voulez-vous mettre la queue de " + elem.nom + " parmi les possibilites : " + poss + " ?"
  107 + socket.send_multipart(question.encode())
  108 + queue=addr,empty,msg=socket.recv_multipart()
  109 + queue=queue.decode()
  110 + m=f(queue[0])-1
  111 + n=int(queue[1])-1
  112 + if k==m:
  113 + for i in range(min(l,n),max(l,n)+1):
  114 + M1[k][i]=1
  115 + if l==n:
  116 + for i in range(min(k,m),max(k,m)+1):
  117 + M1[i][l]=1
  118 + print(M1)
  119 +
  120 + #frapper l'autre grille
  121 + socket.send_multipart(b"Quelle case frapper?")
  122 + case=addr,empty,msg=socket.recv_multipart()
  123 + case=case.decode()
  124 + print(case)
  125 + k=f(case[0])-1
  126 + l=int(case[1])-1
  127 + while M2[k][l]==1:
  128 + M2[k][l]=2
  129 + socket.send_multipart(b"Touche! Quelle case frapper ?")
  130 + case=addr,empty,msg=socket.recv_multipart()
  131 + case=case.decode()
  132 + k=f(case[0])-1
  133 + l=int(case[1])-1
  134 + socket.send_multipart(b"Manque!")
  135 +
103 136 # Do some 'work'
104 137 time.sleep(1)
105 138  
106 139 # Send reply back to client
107 140 - socket.send(b"World")
  141 + socket.send(b"World")
108 142 \ No newline at end of file
... ...