コード例 #1
0
ファイル: mingserver.py プロジェクト: emircado/mingming
	def remove_player(self, clientid, means):
		toremove = int(clientid)
		if toremove in self.__players:
			#close connection + stop thread of client to remove
			addr, connection, stopper, alias = self.__players[toremove]
			if means == 'KICK' or means == 'SERVER_LEFT':
				connection.sendMessage(means+' '+clientid)
			connection.mySocket.close()
			stopper.set()
			self.__playercount-=1

			del self.__players[toremove]
			for i in range(len(self.__plist)):
				if self.__plist[i] == toremove:
					self.__plist[i] = None
					self.__pready[i] = None
					break

			#inform other clients that player has been removed
			if means == 'LEFT':
				self.__sendmsg_toall('LEFT '+clientid)
			elif means == 'KICK':
				self.__sendmsg_toall('KICK '+clientid)
			self.__update_players()
		else:
			print 'player to remove not found'
コード例 #2
0
    def remove_player(self, clientid, means):
        toremove = int(clientid)
        if toremove in self.__players:
            #close connection + stop thread of client to remove
            addr, connection, stopper, alias = self.__players[toremove]
            if means == 'KICK' or means == 'SERVER_LEFT':
                connection.sendMessage(means + ' ' + clientid)
            connection.mySocket.close()
            stopper.set()
            self.__playercount -= 1

            del self.__players[toremove]
            for i in range(len(self.__plist)):
                if self.__plist[i] == toremove:
                    self.__plist[i] = None
                    self.__pready[i] = None
                    break

            #inform other clients that player has been removed
            if means == 'LEFT':
                self.__sendmsg_toall('LEFT ' + clientid)
            elif means == 'KICK':
                self.__sendmsg_toall('KICK ' + clientid)
            self.__update_players()
        else:
            print 'player to remove not found'
コード例 #3
0
ファイル: mingserver.py プロジェクト: emircado/mingming
	def send_panels(self, panels):
		plist = {self.id: panels[0]}
		for i, cid in enumerate(self.__players):
			addr, connection, stopper, alias = self.__players[cid]

			plist[cid] = panels[i+1]
			connection.sendMessage('GAME_UPDATE PANELS '+str(plist[cid])[1:-1].replace(' ',''))
		return plist
コード例 #4
0
    def send_panels(self, panels):
        plist = {self.id: panels[0]}
        for i, cid in enumerate(self.__players):
            addr, connection, stopper, alias = self.__players[cid]

            plist[cid] = panels[i + 1]
            connection.sendMessage('GAME_UPDATE PANELS ' +
                                   str(plist[cid])[1:-1].replace(' ', ''))
        return plist
コード例 #5
0
ファイル: gui.py プロジェクト: habed/fyp-uottawa
 def executeHandler(self):
     print("TODO: Execute")
     cmd = self.COMMAND.get()
     self.COMMAND.set("")
     cmd = cmd.upper()
     _, response = conn.sendMessage(cmd)
     if cmd.upper() == "SCAN":
         done = False
         overflow = False
         dOverflow = 0
         while not done:
             vectors = response.split(";")
             for vector in vectors:
                 args = vector.split(",")
                 if len(args) == 2:
                     if overflow:
                         h, angle = dOverflow, args[0]
                         overflow = False
                         dOverflow = 0
                     else:
                         h, angle = args[0], args[1]
                     h, angle = float(h), float(angle)
                     if h > 0:
                         A = ((90 + self.FACING_ANGLE) % 360 ) - angle
                         if A < 0: 
                             A = 360 + A
                         x, y = (cos(radians(A)) * h) + self.X_OFFSET, (sin(radians(A)) * h) + self.Y_OFFSET
                         print x,y,h,angle
                         App.plotHandler([x, y])
                 else:
                     overflow = True
                     dOverflow = args[0]
             if angle == 180.0:
                 done = True
             else:
                 _, response = conn.sendMessage("")
     elif "MOVE" in cmd:
         print "MOVE"
         args = cmd.split(" ")
         print args
         n = int(args[2])
         direction = args[1]
         if direction == "RIGHT":
             n = n % 360
             n = 360 - n
             self.FACING_ANGLE = (self.FACING_ANGLE + n) % 360
         elif direction == "LEFT":
             n = n % 360
             self.FACING_ANGLE = (self.FACING_ANGLE + n) % 360
         elif direction == "FORWARD":
             self.X_OFFSET = (cos(radians(self.FACING_ANGLE)) * n * self.LENGTH_PER_MOVEMENT) + self.X_OFFSET
             self.Y_OFFSET = (sin(radians(self.FACING_ANGLE)) * n * self.LENGTH_PER_MOVEMENT) + self.Y_OFFSET
         elif direction == "BACKWARDS":
             A = ((180 + self.FACING_ANGLE) % 360)
             self.X_OFFSET = (cos(radians(A)) * n * self.LENGTH_PER_MOVEMENT) + self.X_OFFSET
             self.Y_OFFSET = (sin(radians(A)) * n * self.LENGTH_PER_MOVEMENT) + self.Y_OFFSET
コード例 #6
0
ファイル: mingserver.py プロジェクト: emircado/mingming
	def __sendmsg_toall(self, msg):
		for cid in self.__players:
			addr, connection, stopper, alias = self.__players[cid]

			connection.sendMessage(msg)
コード例 #7
0
    def __sendmsg_toall(self, msg):
        for cid in self.__players:
            addr, connection, stopper, alias = self.__players[cid]

            connection.sendMessage(msg)
コード例 #8
0
ファイル: gui.py プロジェクト: habed/fyp-uottawa
 def disconnectHandler(self):
     global closeConnection
     print(conn.sendMessage("CLOSE_CONNECTION"))
     closeConnection = True