Example #1
0
 def handle_msg(self, message):
     """ Handles messages received from the game server """
     print("[[ In handle_msg ]]")
     msg = DiscardMessage.to_obj(message)
     if all((msg.cmd == ClientRcvMessage.GAME_MESSAGE_REP.value,
             msg.get_payload_value(value='prompt') ==
             ClientRcvMessage.GAME_CAN_BE_STARTED_REP.value)):
         print("[[ Starting game ]]")
         if self.has_initialised == False:
             self.has_initialised = True
             self.start_game()
             self.choose_initial_player()
     elif all(
         (msg.cmd == ClientRcvMessage.GAME_MESSAGE_REP.value,
          msg.get_payload_value(
              value='prompt') == ClientRcvMessage.GAME_HAS_STARTED_REP.value
          )):
         print("[[ Joining stared game ]]")
         if self.has_initialised == False:
             self.has_initialised = True
             self.choose_initial_player()
     elif msg.cmd == ClientRcvMessage.ASK_FOR_ROOMATES_REP:
         self.show_roomates()
     print("Received game message from server: ", msg)
     if self.has_initial_player_been_choosen == True:
         print("Setting message for eventual processing")
         self.player.set_message_to_process(msg)
Example #2
0
    def find_room(self):
        """ 
		This finds rooms 

		:returns: bool -- True if rooms has been found. False if otherwise
		"""
        print('==== Getting rooms to play the game ====')
        param = {'cmd': RoomRequest.GET_ROOMS.value}
        req = requests.get(self.room_url, params=param)
        rooms = DiscardMessage.to_obj(req.text)
        if rooms.get_payload_value(value='data'):
            ls = [{
                key: value
                for key, value in value.items() if key != 'roomid'
            } for value in rooms.get_payload_value(value='data')]
            ls[:] = [
                str(ind) + ') ' + repr(value) for ind, value in enumerate(ls)
            ]
            room_str = '\n'.join(ls)
            print('The rooms available:', '\n', room_str)
            choice = self.get_int_input('Choose room to join: ')
            while choice >= len(ls):
                choice = self.get_int_input('Choose room to join: ')
            room_ = rooms.get_payload_value(value='data')
            room = room_[choice]
            return room
        print(
            "Can't find rooms. You can try to find rooms again(Recommended) or create a room."
        )
        return None
Example #3
0
 def print_currently_playing(self):
     print("[[ In print_currently_playing ]]")
     param = {
         'cmd': RoomRequest.GET_CURRENT_PLAYER.value,
         'roomid': self.player.get_room_id()
     }
     rep = requests.get(self.room_url, params=param)
     response = DiscardMessage.to_obj(rep.text)
     return (response.get_payload_value(value='prompt'),
             response.get_payload_value(value='data'))
Example #4
0
 def start_game(self):
     """ This sends a START_GAME request to game server """
     msg_ = {
         'userid': self.player.get_user_id(),
         'roomid': self.player.get_room_id()
     }
     param = {'cmd': RoomRequest.START_GAME.value}
     req = requests.post(self.room_url, json=msg_, params=param)
     response = DiscardMessage.to_obj(req.text)
     print(response)
Example #5
0
 def choose_initial_player(self):
     print("[[ In choose_initial_player ]]")
     param = {'cmd': RoomRequest.SET_FIRST_PLAYER.value}
     msg_ = {
         'userid': self.player.get_user_id(),
         'roomid': self.player.get_room_id(),
         'username': self.player.get_nickname()
     }
     rep = requests.post(self.room_url, params=param, json=msg_)
     response = DiscardMessage.to_obj(rep.text)
     print(response.get_payload_value(value='prompt'),
           response.get_payload_value(value='data'))
     if self.has_initial_player_been_choosen == False:
         self.has_initial_player_been_choosen = True
Example #6
0
 def show_roomates(self):
     """ This shows roomates """
     param = {
         'cmd': RoomRequest.GET_ROOMATES.value,
         'userid': self.player.get_user_id(),
         'roomid': self.player.get_room_id()
     }
     req = requests.get(self.room_url, params=param)
     response = DiscardMessage.to_obj(req.text)
     ls = [
         str(ind) + ') ' + value for ind, value in enumerate(
             response.get_payload_value(value='data'))
     ]
     if ls:
         room_str = '\n'.join(ls)
         print('My roomates:', '\n', room_str)
     else:
         print('You have no roomates yet!!')
Example #7
0
    def join_room(self, room=None):
        """
		This adds current player to room

		:param room: Room to join
		"""
        print('=== Joining room ===')
        self.create_new_user()
        self.player.set_room_id(room['roomid'])
        print('You selected: ', self.player.get_room_id())
        param = {'cmd': RoomRequest.JOIN_ROOM.value}
        msg = {
            'username': self.player.get_nickname(),
            'userid': self.player.get_user_id(),
            'roomid': room['roomid']
        }
        req = requests.post(self.room_url, json=msg, params=param)
        response = DiscardMessage.to_obj(req.text)
        print(response)
Example #8
0
    def create_room(self):
        """ This creates a room	"""
        print("=== Creating a room ===")
        self.create_new_user()
        question = "What is the room's name? "
        room_name = self.get_str_input(question)
        question = 'How many players do you want to play with: '
        num_of_players = self.get_int_input(question)
        while num_of_players == 0:
            num_of_players = self.get_int_input(question)

        msg = {'username': self.player.get_nickname(), \
          'userid': self.player.get_user_id(), \
         'num_of_players': num_of_players,
         'room_name': room_name}
        param = {'cmd': RoomRequest.CREATE_A_ROOM.value}
        req = requests.post(self.room_url, json=msg, params=param)
        response = DiscardMessage.to_obj(req.text)
        print("Your new room id=", response.get_payload_value(value='data'))
        self.player.set_room_id(response.get_payload_value(value='data'))
Example #9
0
 def on_message(self, msg):
     # called anytime a new message is received
     print("Received from client ,msg=", msg)
     self.controller.handle_wsmessage(DiscardMessage.to_obj(msg))