我正在用iio引擎在javascript中进行BattleShip游戏。提高功能速度
我想玩电脑,所以我必须把随机的位置(我希望你知道游戏:))。
我有5艘船必须放置在一个网格(10x10)。问题是这个函数很慢,有时这个页面根本没有加载。
我想知道是否有一些emprovement这些功能的速度,我有点新手:d
function posShips(size){
// var size -> size of the ship
var isOk = false; // flag var to check if the ship is in a right position
var isOk2 = true; // flag var, become false if the cell is already fill with another ship
var i;
var j;
var side; // horizontal or vertical
while(!isOk){
i = iio.getRandomInt(1,11);
j = iio.getRandomInt(1,11);
side = iio.getRandomInt(0,2);
if((side ? j : i)+size-1 < 11){ // Not out of the array
for (var k = 0; k < size; k++) { // Size of the ship
if(side){
if(gridHit[i][j+k].stat == "empty"){ //If is empty put the ship
gridHit[i][j+k].stat = "ship";
gridHit[i][j+k].setFillStyle("red")
}else{ // If not empty
isOk2 = false; //Position is not good, do all the thing again.
for (var a = 0; a < size; a++) { // Reset cell
gridHit[i][j+a].stat = "empty";
}
k = 10;
}
}else{
if(gridHit[i+k][j].stat == "empty"){ //If is empty put the ship
gridHit[i+k][j].stat = "ship";
gridHit[i+k][j].setFillStyle("red")
}else{ // If not empty
isOk2 = false; //Position is not good, do all the thing again.
for (var a = 0; a < size; a++) { // Reset cell
gridHit[i+a][j].stat = "empty";
}
k = 10;
}
}
};
if(isOk2)
isOk = true;
}
}
}
也许你可以阅读这篇文章:http://www.sitepoint.com/multi-threading-javascript /我认为你可以使用这种方法放置5艘船? – zeroke
我建议反对'再做一遍'。也许,通过网格并确定所有有效位置,然后随机选择一个。 – sje397
这是否适合http://codereview.stackexchange.com/? –