Exemple #1
0
class GameServer:
    def __init__(self):
        HOST = ''                 # Symbolic name meaning the local host
        PORT = 8387               # Arbitrary non-privileged port
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.bind((HOST, PORT))
        s.listen(1)
        print 'listening'
        self.gameData = GameData()
        self.methods = {'getLandmarks':self.getLandmarks,
                        'addScore':self.addScore,
                        'startMultiplayerGame':self.startMultiplayerGame,
                        'addMultiplayerScore':self.addMultiplayerScore,
                    }
        self.player1 = None
        self.player2 = None
        
        while True:
            print 'while true'
            conn, addr = s.accept()
            print 'Connected by', addr
            request = conn.recv(1024)
            if not request: break
            methodString, argument = request.split(',')
            method = self.methods[methodString]
            method(argument, conn)
                
        
    def getLandmarks(self, difficulty, conn):        
        landmarks = self.gameData.getLandmarks(difficulty)
        landmarks = pickle.dumps(landmarks)
        data = 'yes@%s$' % landmarks
        print conn.sendall(data)
    
    def addScore(self, score, conn):
        self.gameData.addScore(score)
        scores = 'no@%s' % self.gameData.getScores()
        conn.send(scores)
    
    def startMultiplayerGame(self, player, conn):
        name, address = player.split('$')
        if self.player1 == None:
            self.player1 = Player(name, address)
            player2Server = Player2Server(self)
            player2Server.start()
            return '%s has joined the game, now waiting for a second player' % name
        if self.player2 == None:
            self.player2 = Player(name, address)
            
    def gotPlayer2(self):
        pass
            
    def addMultiplayerScore(self, score):
        pass