In [5]:
# Import standard libraries
import random


class Player(object):
    '''
    The Player class is a base class, meant to be extended by
    our individual competitors in the RPS tournament.

    The Player class defines a shared set of methods and variables
    that the Referee needs to assume are available to "run" the
    tournament.
    '''

    # Initialize the player's total score to 0.
    total_score = 0.0

    # Initialize the player's strategy variable to a string coding for rock.
    strategy = 'R'

    def __init__(self, name, number):
        '''
        Constructor, which initializes our player ID.
        '''
        # Set name_id
        self.name_id = "{0}_{1}".format(name, number)

    def  identifyYourself(self):
        '''
        Return our identity.
        '''
        return self.name_id

    def yourOpponentsId(self, lastname_id):
        '''
        Handler for being informed of opponent's identity.
        '''
        pass

    def makeYourMove(self):
        '''
        Default throw strategy.
        '''
        return self.strategy

    def yourScoreWas(self, score):
        '''
        Handler for being informed of the engagement outcome.
        '''
        self.total_score += score

    def getTotalScore(self):
        '''
        Return our total score.
        '''
        return self.total_score

    def __repr__(self):
        '''
        String representation for our Player.
        '''
        return "Player {0} (total_score={1})".format(self.identifyYourself(),
                                                     self.getTotalScore())

In [6]:
class  PlayerR( Player ):
    def __init__( self, name, idnumber ):
        #super ( PlayerR, self ).__init__( name, idnumber )
        Player.__init__( self, name, idnumber )
        self.strategy = [ 0.333, 0.667 ]
        
    def makeYourMove (self):
        r = random.random()    # uniform( 0.0, 1.0 ]
        if r < self.strategy[0]:
            return 'R'
        elif r < self.strategy[1]:
            return 'P'
        else:
            return 'S'

In [7]:
class  PlayerR1( Player ):
    '''

    '''
    def __init__( self, name, idnumber ):
        #super ( PlayerR, self ).__init__( name, idnumber )
        Player.__init__( self, name, idnumber )
        self.strategy = [ 0.05, 0.10 ]
        
    def makeYourMove (self):
        r = random.random()    # uniform( 0.0, 1.0 ]
        if r < self.strategy[0]:
            return 'R'
        elif r < self.strategy[1]:
            return 'P'
        else:
            return 'S'