I hope following example bring you some new idea. 

    #!/usr/bin/env python
    # ~*~ coding: utf-8 ~*~
    from random import randrange


    class Choice():
        CHOICES = [1,2,3]

        @classmethod
        def get_random_choice(cls):
            return CHOICES[randrange(0, len(CHOICES))]


    class Person():
        """ Contains meta info about players """
        def __init__(self, name):
            self.name = name


    class LocalPersonController(Person):
        """ Implements comunication with player on local machine """
        INPUT_PROMPT = '''Choose one!
        <1> Scissors
        <2> Paper
        <3> Rock
        {0} choose: '''

        def get_choice(self):
            return int(raw_input(LocalPersonController.
                       INPUT_PROMPT.format(self.name)))


    class NetworkPersonController(Person):
        """ Implements comunication with player on remote machine """
        def __init__(self, name, uri):
            super(NetworkPersonController, self).__init__(name)
            # TODO: init connection

        def get_choice(self):
            # TODO: replace stub
            return Choice.get_random_choice()


    class AIController(Person):
        def __init__(self):
            super(AIController, self).__init__("AI")

        def get_choice(self):
            return Choice.get_random_choice()


    class Round():
        def __init__(self, player1Ctrl, player2Ctrl):
            self.player1 = player1Ctrl
            self.player2 = player2Ctrl

        def run(self):
            self.turn1 = self.player1.get_choice()
            self.turn2 = self.player2.get_choice()


    class Game():
        PlAY_PROMPT = '''Wish you play a round? Y/n '''
        ROUND_PROMPT = '''Select oponent:
        <1> local player
        <2> remote player
        <3> AI
        '''

        def start(self):
            print("Hello!")
            while self.play():
                round = self.select_round()
                round.run()
                self.show_victory(round)
            print("By!")

        def play(self):
            choise = raw_input(Game.PlAY_PROMPT)
            while choise.lower() not in ['n', 'y', '']:
                choise = raw_input(Game.PlAY_PROMPT)

            return not choise.lower() == 'n'

        def select_round(self):
            choise = raw_input(Game.ROUND_PROMPT)
            while choise.lower() not in ['1', '2', '3']:
                choise = raw_input(Game.ROUND_PROMPT)

            oponent = object
            if choise.lower() == '1':
                oponent = LocalPersonController('player2')
            elif choise.lower() == '2':
                oponent = NetworkPersonController('player2', 'some uri data')
            else:
                oponent = AIController()

            return Round(LocalPersonController('player1'), oponent)

        def show_victory(self, round):
            # TOD: show which player win
            pass


    if __name__ == '__main__':
        Game().start()