Commit a7334e5d4bc5b4d86c50edcbd447e25363c78adb

Authored by Mestari Yousra
1 parent fc85ae53

joueur contre joueur fonctionnel

Showing 1 changed file with 87 additions and 94 deletions   Show diff stats
algo_princpal.py
... ... @@ -7,38 +7,40 @@ import time
7 7 import zmq
8 8 import numpy as np
9 9 import builtins
  10 +from grille_serveur import f, grille
  11 +from frappe_serveur import frappe
10 12  
11   -def f(c):
12   - return ord(c)-ord("A")+1
  13 +from IAattaque import attaque
  14 +from IAgrille import grilleIA
13 15  
14 16 class Bateau:
15 17 "definition de la classe bateau"
16 18  
17 19 porte_avion=Bateau()
18 20 porte_avion.longueur=5
19   -porte_avion.nom="porte_avion"
  21 +porte_avion.nom="Porte-avion"
20 22  
21 23 croiseur=Bateau()
22 24 croiseur.longueur=4
23   -croiseur.nom="croiseur"
  25 +croiseur.nom="Croiseur"
24 26  
25 27 contre_torpilleur=Bateau()
26 28 contre_torpilleur.longueur=3
27   -contre_torpilleur.nom="contre_torpilleur"
  29 +contre_torpilleur.nom="Contre-torpilleur"
28 30  
29 31 sous_marin=Bateau()
30 32 sous_marin.longueur=3
31   -sous_marin.nom="sous marin"
  33 +sous_marin.nom="Sous-marin"
32 34  
33 35 torpilleur=Bateau()
34 36 torpilleur.longueur=2
35   -torpilleur.nom="torpilleur"
  37 +torpilleur.nom="Torpilleur"
36 38  
37 39 bateaux=[porte_avion, croiseur, contre_torpilleur, sous_marin, torpilleur]
38 40  
39 41 class Joueur:
40 42 "definition d'un joueur"
41   -
  43 +
42 44 J1=Joueur()
43 45 M1=np.zeros((10,10))
44 46 J1.grille=M1
... ... @@ -48,93 +50,84 @@ J2.grille=M2
48 50  
49 51 context = zmq.Context()
50 52 socket = context.socket(zmq.ROUTER)
51   -socket.bind("tcp://*:5555")
  53 +socket.bind("tcp://*:5556")
52 54  
53 55 while True:
54 56 # Wait for next request from client
55   - addr,empty,message=socket.recv_multipart()
56   - print(message.decode())
57   - if message.decode() =="PLAY":
58   - socket.send_multipart(b"VS J2 or C?")
59   - addr,empty,msg=socket.recv_multipart()
60   - print(vs.decode())
61   - socket.send_multipart(b"Comment vous appelez-vous?")
62   - addr,empty,msg=socket.recv_multipart()
63   - print(nom.decode())
64   - J1.nom=nom.decode
65   - #constituer sa grille
66   - for elem in bateaux:
67   - question="Ou voulez-vous mettre la tete de " + elem.nom + "?"
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=[]
79   - a,b,c,d=0,0,0,0
80   - for case in range(0,elem.longueur):
81   - #horizontal a gauche
82   - if k-elem.longueur<-1 or M1[k-case][l]!=0:
83   - a+=1
84   - #horizontal a droite
85   - if k+elem.longueur>10 or M1[k+case][l]!=0:
86   - b+=1
87   - #vertical en haut
88   - if l-elem.longueur<-1 or M1[k][l-case]!=0:
89   - c+=1
90   - #vertical en bas
91   - if l+elem.longueur>10 or M1[k][l+case]!=0:
92   - d+=1
93   - if a==0:
94   - possibilites.append(chr(64+k-elem.longueur+2)+ str(l+1))
95   - if b==0:
96   - possibilites.append(chr(64+k+elem.longueur)+str(l+1))
97   - if c==0:
98   - possibilites.append(chr(k+65) +str(l-elem.longueur+2))
99   - if d==0:
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   -
136   - # Do some 'work'
137   - time.sleep(1)
  57 + addr,empty,message=socket.recv_multipart()
  58 + if message.decode() =="PLAY":
  59 + #get to know player1
  60 + J1.addr=addr
  61 + socket.send_multipart([J1.addr,b'',b"Comment vous appelez-vous?"])
  62 + J1.addr,empty,nom=socket.recv_multipart()
  63 + J1.nom=nom.decode()
  64 + socket.send_multipart([addr,b'',b"VS P or C?"])
  65 + addr,empty,vs=socket.recv_multipart()
  66 + socket.send_multipart([J1.addr,b'',b"Constituez votre grille"])
  67 + J1.addr,empty,chaine1=socket.recv_multipart()
  68 + M1,position1=grille(chaine1.decode())
  69 + if vs.decode()== "P":
  70 + #Wait for player2
  71 + J2.addr,empty,wtf=socket.recv_multipart()
  72 + while J2.addr==J1.addr:
  73 + J2.addr,empty,wtf=socket.recv_multipart()
  74 + #get to know player2
  75 + socket.send_multipart([J2.addr,b'',b"Comment vous appelez-vous?"])
  76 + J2.addr,empty,nom=socket.recv_multipart()
  77 + J2.nom=nom.decode()
  78 + socket.send_multipart([J2.addr,b'',b"VS P or C?"])
  79 + J2.addr,empty,vs=socket.recv_multipart()
  80 + socket.send_multipart([J2.addr,b'',b"Constituez votre grille"])
  81 + J2.addr,empty,chaine2=socket.recv_multipart()
  82 + M2,position2=grille(chaine2.decode())
  83 + #begin to play
  84 + etat_jeu="jeu en cours"
  85 + socket.send_multipart([J1.addr,b'',etat_jeu.encode()])
  86 + socket.send_multipart([J2.addr,b'',etat_jeu.encode()])
  87 + victoire=''
  88 + while victoire=='':
  89 + #le joueur1 joue
  90 + socket.send_multipart([J1.addr,b'',b'A vous de jouer!'])
  91 + socket.send_multipart([J2.addr,b'',b"Attendez votre tour"])
  92 + socket.send_multipart([J1.addr,b'',b"Quelle case frapper? \n"])
  93 + J1.addr,empty,case=socket.recv_multipart()
  94 + message,victoire,M2,position2=frappe(J1,case.decode(),M2,position2)
  95 + socket.send_multipart([J1.addr,b'',message.encode()])
  96 + while "frappe" in message:
  97 + J1.addr,empty,case=socket.recv_multipart()
  98 + message,victoire,M2,position2=frappe(J1,case.decode(),M2,position2)
  99 + socket.send_multipart([J1.addr,b'',message.encode()])
  100 + #si J1 n'a pas gagne,J2 joue
  101 + if victoire=='':
  102 + socket.send_multipart([J2.addr,b'',b'A vous de jouer!'])
  103 + socket.send_multipart([J1.addr,b'',b"Attendez votre tour"])
  104 + socket.send_multipart([J2.addr,b'',b"Quelle case frapper? \n"])
  105 + J2.addr,empty,case=socket.recv_multipart()
  106 + message,victoire,M1,position1=frappe(J2,case.decode(),M1,position1)
  107 + socket.send_multipart([J2.addr,b'',message.encode()])
  108 + while "frappe" in message:
  109 + J2.addr,empty,case=socket.recv_multipart()
  110 + message,victoire,M1,position1=frappe(J2,case.decode(),M1,position1)
  111 + socket.send_multipart([J2.addr,b'',message.encode()])
  112 + socket.send_multipart([J1.addr,b'',etat_jeu.encode()])
  113 + socket.send_multipart([J2.addr,b'',etat_jeu.encode()])
  114 + etat_jeu=message
  115 + socket.send_multipart([J1.addr,b'',etat_jeu.encode()])
  116 + socket.send_multipart([J2.addr,b'',etat_jeu.encode()])
  117 + socket.send_multipart([J1.addr,b'',victoire.encode()])
  118 + socket.send_multipart([J2.addr,b'',victoire.encode()])
  119 +
  120 +
  121 + elif vs.decode()=='C':
  122 + #appeler l'IA
  123 + M2=grilleIA(bateaux)
  124 + message="jeu en cours"
  125 + while message!="jeu fini":
  126 + message,victoire,M2,position2=frappe(J1,M2,position2)
  127 + socket.send_multipart([J1.addr,b'',message.encode()])
  128 + if message!="jeu fini":
  129 + M1,message,position1=attaque(J2,M1,position1)
  130 + socket.send_multipart([J1.addr,b'',victoire.encode()])
138 131  
139   - # Send reply back to client
140   - socket.send(b"World")
141 132 \ No newline at end of file
  133 + else:
  134 + break
142 135 \ No newline at end of file
... ...