До сих пор я выполняю функции по размещению кораблей на борту, и у меня есть некоторые проблемы с функцией проверки - это какое-то поле. Моя основная идея заключается в том, чтобы иметь один метод, который будет вызываться по нажатию кнопки:Я пытаюсь создать «Тонущие корабли» с помощью jQuery
$("#dodaj1x1").click(function(){
var raspolozivo=parseInt($("#raspolozivo1x1").text());
if(raspolozivo>0){
generisi1x1();//call for function that generate random field
var novoRaspolozivo= raspolozivo-1;
$("#raspolozivo1x1").html(novoRaspolozivo);
}
else{
alert("Rasporedjeni svi raspolozivi brodovi ovog tipa!");
}
});
и он будет вызывать функцию для генерации случайного поля:
function generisi1x1(){
var minR = 0;
var maxR = 9;
var minK = 0;
var maxK = 9;
randRed=Math.floor(Math.random() * (maxR - minR + 1)) + minR;
randKol=Math.floor(Math.random() * (maxK - minK + 1)) + minK;
proveri1x1(randRed,randKol);//call to function to check is field available
}
чем функции generisi1x1() вызывает функцию, которая проверяет является что поле доступно:
function proveri1x1(randRed,randKol){
for(i=randRed-1;i<randRed+2;i++){
for(j=randKol-1;j<randKol+2;j++){
if($(".red"+i+".kolona"+j+"").hasClass('deoBroda')){
alert("red:"+" "+i+" kolona:"+j);
generisi1x1();
}
else { postavi1x1(randRed,randKol);}
}
}
}
и моя проблема заключается в том, что иногда эта работа велика (по крайней мере, это выглядит, что работа велика, может быть, везение), а иногда порождают только 3 кораблей 1 x1 (должно быть 4), иногда показывают мне сообщение о проблеме и генерировать 5 судов (4 на нужных местах, 1 на плохой) и т.д.
Printscreen плохого случая: Added ship 1x1 on position 5,3 right next to ship 4x1
Вот живой демо весь код: Live demo
До сих пор я предоставлял возможность вставлять корабли 4x1 и 1x1 и делать проверку только для 1x1, план должен делать то же самое для всех кораблей, любая помощь будет отличной.
@ user3294091, В дополнение к моему ответу, вы можете уменьшить объем кода и сделать его гораздо легче определить новые типы судов, как [это] (http://jsfiddle.net/c0u19o7z/11/). Примечание. Изменения в HTML и javascript, но не в CSS. –