from naja.constants import(
BITS, DIRECTION_BITS, CONDITION_BITS, PLAYER_DEFAULTS,
ACT, EXAMINE, ROTATION)
+from naja.options import options
from naja.player import Player
from naja import actions
initial_pos=PLAYER_DEFAULTS.INITIAL_POS,
max_health=PLAYER_DEFAULTS.MAX_HEALTH,
wins_required=PLAYER_DEFAULTS.WINS_REQUIRED):
+ if options.initial_bits:
+ initial_bits = options.initial_bits
state = {
'max_health': max_health,
'health': max_health,
for definition in locations_definition]
def export_board_locations(self):
- return dict(
+ return sorted(
(position, location.export())
for position, location in self.board_locations.iteritems())
@classmethod
def import_board_locations(cls, board_locations_definition):
return dict(
- (position, LocationCard.import_location(definition))
- for position, definition in board_locations_definition.iteritems())
+ (tuple(position), LocationCard.import_location(definition))
+ for position, definition in board_locations_definition)
@classmethod
def generate_board(cls, locations_definition):
- board_locations = {}
+ board_locations = []
for x in range(5):
for y in range(5):
board_location = LocationCard.new_location(
choice(locations_definition).copy())
- board_locations[(x, y)] = board_location.export()
+ board_locations.append([(x, y), board_location.export()])
return board_locations
def lose_health(self):
rotated_locations = {}
if py > 0:
- for i in range(max(0, px -1), min(5, px + 2)):
+ for i in range(max(0, px - 1), min(5, px + 2)):
locations_to_rotate.append((i, py - 1))
- if px > 0:
- locations_to_rotate.append((px - 1, py))
-
if px < 4:
locations_to_rotate.append((px + 1, py))
if py < 4:
- for i in range(max(0, px -1), min(5, px + 2)):
+ for i in reversed(range(max(0, px - 1), min(5, px + 2))):
locations_to_rotate.append((i, py + 1))
- if direction == ROTATION.CLOCKWISE:
- new_positions = locations_to_rotate[1:] + locations_to_rotate[0]
- elif direction == ROTATION.ANTICLOCKWISE:
- new_positions = locations_to_rotate[-1] + locations_to_rotate[:-1]
+ if px > 0:
+ locations_to_rotate.append((px - 1, py))
+
+ if ROTATION[direction] == ROTATION.CLOCKWISE:
+ new_positions = locations_to_rotate[1:] + [locations_to_rotate[0]]
+ elif ROTATION[direction] == ROTATION.ANTICLOCKWISE:
+ new_positions = (
+ [locations_to_rotate[-1]] + locations_to_rotate[:-1])
for old, new in zip(locations_to_rotate, new_positions):
rotated_locations[old] = self.board_locations[new]
def export(self):
return {
- 'bitwise_operand': self.bitwise_operand,
+ 'bitwise_operand': sorted(self.bitwise_operand),
'actions': [action.export() for action in self.actions],
}