<div id='foo' style='color: red'>
</div>
<input type='button' onclick='check();' value='узнать' />
<script type="text/javascript">
var Matrix = function ( options ) { // рисует шахматную доску
options.enabled = options.enabled || '#333';
options.disabled = options.disabled || '#555';
var map = options.map,
len = map.length,
html = '',
styles = '',
i, j, cells;
for ( i = 0; i < len; i++ ) {
cells = map[i].length;
for ( j = 0; j < cells; j++ ) {
styles = 'float: left; width: 30px; height: 30px; background: ' + (map[i][j] === 0 ? options.disabled : options.enabled) + '; ' + (j === 0 ? 'clear: both;' : '');
var div = document.createElement("DIV");
div.style.cssText = styles;
div.eq = [i, j];
document.getElementById( options.target ).appendChild(div);
}
}
// document.getElementById( options.target ).innerHTML = html;
};
var T1 = [0,1,0,1,0,1,0,1], T2 = [1,0,1,0,1,0,1,0];
Matrix({
map: [T1, T2, T1, T2, T1, T2, T1, T2],
target: 'foo',
disabled : 'white',
enabled : 'black'
});
var X = 0;
var P = [];
document.getElementById("foo").onclick = function (event) { // ставим ферзей
var target = (event = event || window.event).target || event.srcElement;
if (target.id !== "foo" && X < 2) { // не больше двух!
target.innerHTML = "Ф";
P.push(target);
X++;
}
};
function check() {
if (X < 2) // если поставили меньше двух ферзей, выкидываем гневное сообщение
return alert("расставь ферзей нормально, придурок");
var x1 = P[0].eq[0], x2 = P[1].eq[0],
y1 = P[0].eq[1], y2 = P[1].eq[1];
alert( x1 == x2 || y1 == y2 || Math.abs(y1 - y2) == Math.abs(x1 - x2) ); // формула для вычисления
}
</script>
Проверял только в Opera11.
Ф-цию Matrix() брал из своего старого скрипта. В IE шахматная доска рисуется неправильно.
Но условие x1 == x2 || y1 == y2 || Math.abs(y1 - y2) == Math.abs(x1 - x2) работает верно.