Beispiel #1
0
	def parse_pregame(self):
		'''
		Parse all the pre-game messages. These include begin, hit and detect.
		See the protocol description for more details
		'''
		while True:
			try:
				parsed = protocol.parse_msg(self.recv_msg())
				command = parsed['command']

				if command == 'hit':
					logging.info('We were hit by {0} (angle: {1}, charge: {2})'.format(
						parsed['name'], parsed['angle'], parsed['charge']))
				elif command == 'detect':
					logging.info('We detected {0}({1} energy) at (angle: {2}, distance: {3})'.format(
						parsed['name'], parsed['energy'], parsed['angle'], parsed['distance']))
				elif command == 'begin':
					self.turn_number = parsed['turn_number']
					self.energy = parsed['energy']
					self.playing = self.energy > 0.0
					return
				elif command == 'death':
					logging.info('We died! Dead for {} turns'.format(parsed['turns']))
					self.playing = False
				else:
					continue
			except KeyError:
			# garbage received
				logging.exception('Pregame message parsing error:')
				continue
Beispiel #2
0
	def parse_pregame(self):
		'''
		Parse all the pre-game messages. These include begin, hit and detect.
		See the protocol description for more details
		'''
		try:
			parsed = protocol.parse_msg(self.recv_msg())
			command = parsed['command']

			if command == 'hit':
				logging.info('We were hit by {0} (angle: {1}, charge: {2})'.format(
					parsed['name'], parsed['angle'], parsed['charge']))
				self.env.was_hit = True
				self.env.hit_angle = parse['angle']
				self.env.hit_charge = parse['charge']
			elif command == 'detect':
				if not self.env.detected_distance or self.env.detected_distance > parsed['distance']:
					self.env.detected_distance = parsed['distance']
					self.env.detected_energy = parsed['energy']
					self.env.detected_angle = parsed['angle']
				logging.info('We detected {0}({1} energy) at (angle: {2}, distance: {3})'.format(
				parsed['name'], parsed['energy'], parsed['angle'], parsed['distance']))
			elif command == 'begin':
				self.env.turn_number = parsed['turn_number']
				self.env.energy = parsed['energy']
				self.env.playing = True
				self.turn_sem.release()
			elif command == 'death':
				self.env.playing = False
			elif command == 'error':
				self.env.error = True
				return
		except KeyError:
		# garbage received
			logging.exception('Pregame message parsing error:')
Beispiel #3
0
    def parse_pregame(self):
        '''
		Parse all the pre-game messages. These include begin, hit and detect.
		See the protocol description for more details
		'''
        while True:
            try:
                parsed = protocol.parse_msg(self.recv_msg())
                command = parsed['command']

                if command == 'hit':
                    logging.info(
                        'We were hit by {0} (angle: {1}, charge: {2})'.format(
                            parsed['name'], parsed['angle'], parsed['charge']))
                elif command == 'detect':
                    logging.info(
                        'We detected {0}({1} energy) at (angle: {2}, distance: {3})'
                        .format(parsed['name'], parsed['energy'],
                                parsed['angle'], parsed['distance']))
                elif command == 'begin':
                    self.turn_number = parsed['turn_number']
                    self.energy = parsed['energy']
                    self.playing = True
                    return
                else:
                    continue
            except KeyError:
                # garbage received
                logging.exception('Pregame message parsing error:')
                continue
Beispiel #4
0
	def parse_welcome(self):
		'''
		Receive the welcome message, parse all info in it and start playing
		'''
		welcome_msg = self.recv_msg()
		parsed = protocol.parse_msg(welcome_msg)
		self.energy = parsed['energy']
		self.max_energy = parsed['energy']
		self.heal = parsed['heal']
		self.turn_duration = parsed['turn_duration']
		self.turns_left = parsed['turns_left']
		self.in_game = True
Beispiel #5
0
    def parse_welcome(self):
        '''
		Receive the welcome message, parse all info in it and start playing
		'''
        welcome_msg = self.recv_msg()
        parsed = protocol.parse_msg(welcome_msg)
        self.energy = parsed['energy']
        self.max_energy = parsed['energy']
        self.charge = parsed['charge']
        self.turn_duration = parsed['turn_duration']
        self.turns_left = parsed['turns_left']
        self.in_game = True
Beispiel #6
0
	def join(self):
		'''
		Ask to join a game
		'''
		ok = False
		while not ok:
			self.env.name = BOT_NAME + '%06x' % random.randrange((2 ** 8) ** 3)
			self.send_msg('join ' + self.env.name)
			welcome_msg = self.recv_msg()
			parsed = protocol.parse_msg(welcome_msg)
			ok = parsed['command'] is not 'error'
		self.env.energy = parsed['energy']
		self.env.max_energy = parsed['energy']
		self.env.heal = parsed['heal']
		self.env.turn_duration = parsed['turn_duration']
		self.env.turns_left = parsed['turns_left']
		self.connected_cond.acquire()
		self.env.in_game = True
		self.connected_cond.notify_all()
		self.connected_cond.release()
Beispiel #7
0
	def parse_end(self):
		'''
		Parse the end-turn message
		'''
		protocol.parse_msg(self.recv_msg())
Beispiel #8
0
    def parse_end(self):
        '''
		Parse the end-turn message
		'''
        protocol.parse_msg(self.recv_msg())