Skip to content

Instantly share code, notes, and snippets.

@nejdetckenobi
Last active September 18, 2019 09:32
Show Gist options
  • Save nejdetckenobi/fd52c977619294320245db4ea19b2d57 to your computer and use it in GitHub Desktop.
Save nejdetckenobi/fd52c977619294320245db4ea19b2d57 to your computer and use it in GitHub Desktop.
from itertools import product
class Caveman(object):
def __init__(self, name):
super(Caveman, self).__init__()
self.name = name
self.actions = []
self.opponent_actions = []
self._sharpness = 0
@property
def sharpness(self):
return self._sharpness
@sharpness.setter
def sharpness(self, val):
self._sharpness = max(0, val)
def play(self):
action = self.decide()
self.actions.append(action)
return 'XXX'
def decide(self):
return NotImplemented()
def feedback(self, action):
return NotImplemented()
class Game(object):
valid_actions = list('SPB')
def __init__(self):
super(Game, self).__init__()
players = []
def play(self):
result = None
while result is None:
player_0, player_1 = players
action_0 = player_0.play()
action_1 = player_1.play()
player_0.feedback(action_1)
player_1.feedback(action_0)
result = self.decide(action_0, action_1)
def decide(self, action_0, action_1):
turn = action_0 + action_1
result = None
if turn == 'SS':
player_0.sharpness += 1
player_1.sharpness += 1
elif turn == 'SB':
player_0.sharpness += 1
elif turn == 'SP':
result = player_1
elif turn == 'BS':
player_1.sharpness += 1
elif turn == 'BB':
pass
elif turn == 'BP':
if player_1.sharpness > 4:
result = player_1
elif turn == 'PS':
result = player_0
elif turn == 'PB':
if player_0.sharpness > 4:
result = player_0
elif turn == 'PP':
if player_0.sharpness > 4 and player_1.sharpness > 4:
player_0.sharpness -= 1
player_1.sharpness -= 1
elif player_0.sharpness > 4:
result = player_0
elif player_1.sharpness > 4:
result = player_1
else:
player_0.sharpness -= 1
player_1.sharpness -= 1
return result
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment