0
(我是JS的全新品牌,所以請耐心等待)我使用桌子來構建滑動拼圖遊戲。我需要一個能夠擾亂值的函數,但我不知道如何讓它在表格單元格中顯示。現在我的代碼只是按順序顯示數字。 我有兩個功能 - 一個建表和其他洗牌值:JavaScript滑塊拼圖 - 加擾值
var _r = 3;
var _c = 3;
//initializes the puzzle
function newPuzzle(r, c)
{
var table = document.createElement("table");
table.id = "myTable";
for (var i = 0; i < r; i++)
{
var row = document.createElement('tr');
for (var j = 0; j < c; j++)
{
var column = document.createElement('td');
row.appendChild(column);
}
table.appendChild(row);
}
document.body.appendChild(table);
//end of table creation
//populate the table
var cell = new Array(r);
for (var i = 0; i < r; i++)
{
cell[i] = new Array(c);
for (var j = 0; j < c; j++)
{
cell[i][j] = i*c + j;
}
}
cell[0][0] = " ";
for (var i = 0; i < cell.length; ++i)
{
var entry = cell[i];
for (var j = 0; j < entry.length; ++j)
{
var n = 0;
var gridTable = document.getElementsByTagName("table");
gridTable[0].rows[i].cells[j].innerHTML = cell[i][j];
document.getElementById("myTable").rows[i].cells[j].id = "even" + (i*c+j);
}
}
shuffle();
}
function shuffle()
{
//declare and populate array
var _array = new Array();
for (var i = 0; i <= r*c; i++)
{
_array[i] = i;
}
//shuffle tiles
for (var i = 0; i <= r*c; i++)
{
var rand = Math.floor(Math.random() * _array.length) + i;
var temp = _array[rand];
_array[rand] = _array[i];
_array[i] = temp;
}
//check to see if puzzle is solveable
var count = 0;
for (var i = 0; i <= r*c; i++)
{
for (var j = i; j <= r*c; j++)
{
if (_array[j] < _array[i])
{
count++;
}
}
}
if (Math.floor(count/2) != count/2)
{
shuffle();
}
else
{
for (var i = 0; i < r*c; i++)
{
//This is where I'm not sure what to do
document.getElementsByTagName("td")[i].innerHTML = _array[i]+1;
}
}
}
謝謝,這使洗牌功能工作,但不完全 - 當我刷新數字移動,但有多個空白/所有數字都沒有被表示。我的HTML存在一個問題,但我所做的只是在加載頁面時調用newPuzzle函數(body onload =「newPuzzle(_r,_c)」) - 任何想法爲什麼? – user5407906
*「多於一個空格/所有數字都沒有被表示」* - 您能否在示例小提琴中顯示我,特別是許多空格? –
好的,只是在我的代碼中澄清我不在我的.js文件中調用newPuzzle函數,但由於某種原因,如果我不包含它在小提琴中,沒有任何反應。但是,如果你忽視這一點,那麼基本上你的程序就會按照它的方式運行。 https://jsfiddle.net/L8wp4pca/ – user5407906