def move(self, move, board): capture = True if board.fields[move.toField] is None: capture = False explosionMoves = super(AtomicGame, self).move(move, board) if not capture: return explosionMoves # create explosion moves target = move.toField for x in [-1, 0, 1]: for y in [-1, 0, 1]: # piece itself #if x == 0 and y == 0: # continue # fields around it explosionTarget = board.moveByDirection(target, x, y) if explosionTarget is None: continue if board.fields[explosionTarget] is None: continue if board.fields[explosionTarget].shortName in self.PAWN_PIECE_TYPES: continue move = Move(explosionTarget, explosionTarget) move.toPiece = '' # indicates that field will be cleared move.silent = True # execute on board board.move(move) explosionMoves.append(move) return explosionMoves
def move(self, move, board): coin_pos = board.findPieces('c', None).pop() # there only is one ;-) coin_target = coin_pos + (move.toField - move.fromField) coin_move = Move(coin_pos, coin_target) coin_move.silent = True board.move(coin_move) # normal stuff return [coin_move] + super(CoinGame, self).move(move, board)