ConsoleController.prototype .strCellToObjCell = function ( strCell) {
if ( typeof strCell != "string" ) {
throw new ConsoleControllerException( "Неправильный тип аргумента strCell. Ожидается" +
"String. Получен: " + typeof strCell) ;
}
var regex = new RegExp( "^\\ w(\\ d){1," + Util.getNumberLength ( this ._minesweeperGame.MAX_HEIGHT ) + "}$" , "i" ) ;
if ( strCell.search ( regex) == - 1 ) {
throw new ConsoleControllerException( "Неправильный вид аргумента strCell." )
}
var widthList = 'abcdefghijklmnopqrstuvwxyz' .slice ( 0 , this ._minesweeperGame.getWidth ( ) - 1 ) ;
//Отсчет клеток начинается с единицы, а не с нуля, если что
var x = widthList.indexOf ( strCell.slice ( 0 , 1 ) ) + 1 ;
var y = + strCell.slice ( 1 ) ;
if ( x == - 1 ||
y < 1 ||
y > this ._minesweeperGame.getHeight ( ) ) {
throw new ConsoleControllerException( "Клетка " + strCell + " не существует." ) ;
}
return new Cell( x, y) ;
} ;
Q29uc29sZUNvbnRyb2xsZXIucHJvdG90eXBlLnN0ckNlbGxUb09iakNlbGwgPSBmdW5jdGlvbihzdHJDZWxsKSB7CiAgICBpZiAodHlwZW9mIHN0ckNlbGwgIT0gInN0cmluZyIpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uc29sZUNvbnRyb2xsZXJFeGNlcHRpb24oItCd0LXQv9GA0LDQstC40LvRjNC90YvQuSDRgtC40L8g0LDRgNCz0YPQvNC10L3RgtCwIHN0ckNlbGwuINCe0LbQuNC00LDQtdGC0YHRjyIgKwogICAgICAgICAgICAiU3RyaW5nLiDQn9C+0LvRg9GH0LXQvTogIiArIHR5cGVvZiBzdHJDZWxsKTsKICAgIH0KICAgIHZhciByZWdleCA9IG5ldyBSZWdFeHAoIl5cXHcoXFxkKXsxLCIgKyBVdGlsLmdldE51bWJlckxlbmd0aCh0aGlzLl9taW5lc3dlZXBlckdhbWUuTUFYX0hFSUdIVCkgKyAifSQiLCAiaSIpOwogICAgaWYgKHN0ckNlbGwuc2VhcmNoKHJlZ2V4KSA9PSAtMSkgewogICAgICAgIHRocm93IG5ldyBDb25zb2xlQ29udHJvbGxlckV4Y2VwdGlvbigi0J3QtdC/0YDQsNCy0LjQu9GM0L3Ri9C5INCy0LjQtCDQsNGA0LPRg9C80LXQvdGC0LAgc3RyQ2VsbC4iKQogICAgfQogICAgdmFyIHdpZHRoTGlzdCA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicuc2xpY2UoMCwgdGhpcy5fbWluZXN3ZWVwZXJHYW1lLmdldFdpZHRoKCkgLSAxKTsKICAgIC8v0J7RgtGB0YfQtdGCINC60LvQtdGC0L7QuiDQvdCw0YfQuNC90LDQtdGC0YHRjyDRgSDQtdC00LjQvdC40YbRiywg0LAg0L3QtSDRgSDQvdGD0LvRjywg0LXRgdC70Lgg0YfRgtC+CiAgICB2YXIgeCA9IHdpZHRoTGlzdC5pbmRleE9mKHN0ckNlbGwuc2xpY2UoMCwgMSkpICsgMTsKICAgIHZhciB5ID0gK3N0ckNlbGwuc2xpY2UoMSk7CiAgICBpZiAoeCA9PSAtMSB8fAogICAgICAgIHkgPCAxICAgfHwKICAgICAgICB5ID4gdGhpcy5fbWluZXN3ZWVwZXJHYW1lLmdldEhlaWdodCgpKSB7CiAgICAgICAgdGhyb3cgbmV3IENvbnNvbGVDb250cm9sbGVyRXhjZXB0aW9uKCLQmtC70LXRgtC60LAgIiArIHN0ckNlbGwgKyAiINC90LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIuIik7CiAgICB9CiAgICByZXR1cm4gbmV3IENlbGwoeCwgeSk7Cn07