"""Return the selected territory
"""
free_territories = [t for t in world.territories() if t.player == None]
- return random.sample(free_territories, 1)[0]
+ return random.sample(free_territories, 1)[0].name
def play_cards(self, world, log, play_required=True):
"""Decide whether or not to turn in a set of cards.
for p in self.players:
p.alive = True
random.shuffle(self.players)
- deck.shuffle()
+ self.deck.shuffle()
self.select_territories()
self.place_initial_armies()
for p in self.players:
for p in self.players]))
self.play_cards_and_place_armies(player)
captures = self.attack_and_fortify(player)
- if captures > 0 and len(self.deck) > 0 and len(self.living_players()) > 1:
- self.deal(player, 1)
+ self.end_of_turn_cards(player, captures)
def select_territories(self):
for t in self.world.territories():
t.player = None
for i in range(len(list(self.world.territories()))):
p = self.players[i % len(self.players)]
- t = p.select_territory(self.world, self.log)
+ t_name = p.select_territory(self.world, self.log)
+ t = self.world.territory_by_name(t_name)
if t.player != None:
raise PlayerError('Cannot select %s owned by %s'
% (t, t.player))
source_name,target_name,armies = action
source = self.world.territory_by_name(source_name)
target = self.world.territory_by_name(target_name)
+ if not source.borders(target):
+ raise PlayerError('Cannot reach %s from %s to %s'
+ % (target, source, mode))
if mode == 'attack':
tplayer = target.player
capture = self.attack(source, target, armies)
if len(self.living_players()) > 1:
player.report(self.world, self.log)
# else the game is over, and killed will hear about this then.
+ def end_of_turn_cards(self, player, captures):
+ """Deal end-of-turn reward for any territory captures.
+ """
+ if captures > 0 and len(self.deck) > 0 and len(self.living_players()) > 1:
+ self.deal(player, 1)
def living_players(self):
return [p for p in self.players if p.alive == True]