def _update_time(self, msg): """Update time and turns.""" number = csfind.find_number_after("time:", msg) self.sprt.time.choose_index(number, self.active_turn) if "next_turn" in msg: self.turn_digit = csfind.find_number_after("next_turn:", msg) self.sprt.next_turn.activate() self.active_player.activate_skills()
def _wait_for_all_players(self, msg): """Wait for new game's connections. when the server has all its players, it send: - the player's number - the active turn - the number of players. """ if "players_infos_ok:" in msg: self.player_digit = fd.find_number_after('player_digit:', msg) self.active_turn = fd.find_number_after("active_turn:", msg) self.nb_players = fd.find_number_after("nb_players:", msg) self.connection.send('synchro_ok') self._step = 3 else: self.connection.send('players_informations?')
def _update_teleport(self, msg): """Update the teleportation.""" if "end" in msg: self.in_action = False self.active_player.define_key_images("breath") return if "teleportNow:" in msg: coords = csfind.find_and_get_coords_after('teleportNow:', msg) self.active_player.teleport(coords=coords) else: key = 'starting' if 'starting' in msg else 'landed' index = csfind.find_number_after(f"{key}:", msg, size=2) self.active_player.teleport(key, index)
def test_find_number_after(self): """Test the function find_number_after.""" var_list = [ 'feizgtreio number:1', 'number:9', 'fajfeiufgtergzhrnumber:4ofr0', 'fnumber:888', ] good_numbers = [1, 9, 4, 8] substring = 'number:' for text, good_number in zip(var_list, good_numbers): number = csfind.find_number_after(substring, text) self.assertIsInstance(number, int) self.assertEqual(good_number, number)
def _deal(self, client): """Inspect the client's message. If the client want to create a game, the go_to variable will change to 'init_game'. """ msg = client.recv(1024) msg = msg.decode() if not msg or 'players?' in msg: return print("Received: {0}".format(msg)) if "create_game" in msg: self.nb_players = fd.find_number_after('nb_players:', msg) self.map_content = fd.find_text_after('map:', msg) self.host_player = client self.go_to = 'init_game'
def _update_transform(self, msg): """Update the transform action.""" if "transform: activated" in msg: self.in_action = True self.active_player.define_key_images("transform") coords = csfind.find_and_get_coords_after("coords:", msg) self.sprt.transform_anim.define_coords(coords) elif "index:" in msg: index = csfind.find_number_after("index:", msg) self.sprt.transform_anim.play_animation(index=index) if "transfNow:" in msg: coords = csfind.find_and_get_coords_after('transfNow:', msg) self.sprt.cases_group[coords].transform() if "end" in msg: self.in_action = False self.sprt.transform_anim.play_animation(end=True) self.active_player.define_key_images("breath")
def _define_players(self, msg): """Define the players lists if 'players_list in msg. We create one list per player, who contains his: - digit - name (and type) - membership - spawn """ if 'players_list:' not in msg: return for i in range(self.nb_players): i += 1 is_yours = True if self.player_digit == i else False name = 'superstar' if i == 1 else 'superalien' spawn = fd.find_number_after(f"player{i}_place:", msg, size=3) print("in g_i. player's spawn: ", spawn) self.players.append([i, name, is_yours, spawn]) self._step = 4