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'