+ def generate_board(cls, deck):
+ if deck.get('puzzle', False):
+ return cls.generate_puzzle_board(deck)
+ else:
+ return cls.generate_random_board(deck)
+
+ @classmethod
+ def generate_puzzle_board(cls, deck):
+ assert len(deck['cards']) == 5 * 5
+ replacement_params = deck.get('replacement_params', None)
+ board_locations = [
+ [(i % 5, i // 5),
+ LocationCard.new_location(
+ card.copy(), replacement_params).export()]
+ for i, card in enumerate(deck['cards'])
+ ]
+ return board_locations
+
+ @classmethod
+ def generate_random_board(cls, deck):
+ board_locations = []
+ replacement_params = deck.get('replacement_params', None)