Bonjour,

Je me permet de vous faire un petit poste pour connaitre vos avis sur mes quelques ligne de code, sachant que je vient du monde du C et du PHP cela fait quelque jours que je pratique le python... quel régale... j'adore
J'ai codée un petit jeu en réseau de célèbre "Plus" et "Moins" en plus complet bien-sur, je voulais connaitre vos critiques par rapport a mon code et aussi vos avis sur celui ci, le but de ma demande et savoir si je m’oriente dans le bon sens dans l'apprentissage de ce langage.

Partie Server :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
 
import socket
import random
import _thread
 
 
class GameServer:
    """ Server class for gaming LESS/MORE/WINNER """
    server = True
    max_connected = 50
    lock = False
    number = 0
 
    def __init__(self, host=socket.gethostbyname(socket.gethostname()),
                 port=random.randint(1025, 10000)):
        """ Init parameter of game server
        :param host:
        :param port:
        """
        self.host = host
        self.port = port
 
        """ Declare list for management users """
        self.socket_list = list()
        self.gamers = list()
        self.number = random.randint(1, 100)
 
        self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.server.bind((self.host, self.port))
        self.server.listen(self.max_connected)
        self.lock = _thread.allocate_lock()
 
    def renew(self):
        """ Renew number """
        self.number = random.randint(1, 100)
        print('New game started, number is %i' % self.number)
 
    def id(self):
        """ Generate new gamer ID"""
        game_id = 0
        while game_id not in self.gamers:
            game_id = random.randint(1, 1000)
            self.gamers.append(game_id)
        return game_id
 
    def broadcast(self, winner):
        """ Diffused information at other gamer"""
        for gamer in self.socket_list:
            gamer.send(GameServer.write('WINNER:%i' % winner))
 
    def whoes(self):
        """ Return number of users """
        return len(self.gamers)
 
    @staticmethod
    def write(message):
        """ Convert message to encode """
        return str(message).encode()
 
    def handler(self, client, game_id):
        """ Thread client to liberate accept """
        while True:
            try:
                request = client.recv(1024).decode()
                if request == 'END':
                    print('Gamer %i has left the game...' % game_id)
                    self.gamers.remove(game_id)
                    client.close()
                    break
                request = request.split(':')
                if request[1] == 'WHOES':
                    client.send(GameServer.write('NB:%i' % self.whoes()))
                    continue
                else:
                    r_number = int(request[1])
                    print('Received %i from %i' % (game_id, r_number))
                    if r_number == self.number:
                        self.broadcast(game_id)
                        print('Winner ! gamer %i' % game_id)
                        self.renew()
                    else:
                        if r_number < self.number:
                            client.send('MORE:0'.encode())
                        elif r_number > self.number:
                            client.send('LESS:0'.encode())
            except ConnectionError:
                print('lost connection with gamer %i ...' % game_id)
                client.close()
 
    def run(self):
        """ Run server """
        print('Server start on %s:%i ...' % (self.host, self.port))
        print('Secret number is %i ' % self.number)
        while True:
            (gamer, addr) = self.server.accept()
            game_id = self.id()
            print('accept connection to %s : %s' % (str(addr), game_id))
            self.socket_list.append(gamer)
            gamer.send(str(game_id).encode())
            _thread.start_new_thread(self.handler, (gamer, game_id,))
 
#Server start
game = GameServer(host='127.0.0.1', port=58005)
game.run()
La partie client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
import socket
 
Host = '127.0.0.1'
Port = 58005
 
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((Host, Port))
game_id = client.recv(1024)
game_id = str(game_id.decode())
print('My game id is: %s' % game_id)
while True:
    command = game_id + ':' + input('Enter number: ').rstrip('\n')
    client.send(command.encode())
    reply = str(client.recv(1024).decode()).split(':')
    code = reply[0]
    if code == 'WINNER':
        if reply[1] == game_id:
            print('Your win !')
        else:
            print('Your loose... the winner is %s' % reply[1])
        restart = input('Would you like to restart game ? [y/n]: ')
        if restart == 'y':
            continue
        else:
            client.send('END'.encode())
            client.close()
            break
    else:
        if code == 'MORE':
            print('The number is superior')
        elif code == 'LESS':
            print('The number is inferior')
        elif code == 'NB':
            print('Number of connected %s' % reply[1])
        else:
            print('Impossible to parse response of server...')
            continue
Je vous remercies d'avance pour avoir pris le temps de lire le code
Excellente journée.
Divx.