如何在 java 脚本中随机填充 3 x 3 网格?
how to populate a 3 x 3 grid randomly in java script?
我有一个 3x3 点的二维网格。
此网格中的每个点都有自己的坐标 (x,y)。
用户可以选择 1 到 9 之间的随机数作为输入。根据用户选择的数字,随机点会相应地填充到网格中。例如,如果用户选择 9,则网格中的所有点始终被占用。如果用户选择8,一个随机点总是免费的,依此类推。
有人告诉我如何在 java 脚本中做到这一点吗?
我用二维数组试过了,但没用。我绝对是编程新手。提前致谢!
根据您的描述,我不知道这是否符合。基本思想是维护 2 个独立的数组,一个数组包含所有网格单元格,另一个数组是剩余的可自由占用的单元格。当您遍历并占用单元格时,从空闲数组中删除该单元格。
const gridCells = [];
for (let i=0; i<9; i++) {
gridCells[i] = document.getElementById('cell' + i);
}
const select = document.getElementById('select');
select.addEventListener('change', () => {
for (let cell of gridCells) {
cell.innerHTML = 'free';
}
let freeCells = [...gridCells];
let occupyCount = parseInt(select.value, 10);
for (let i=0; i<occupyCount; i++) {
const occupyIndex = Math.floor(Math.random() * freeCells.length);
freeCells[occupyIndex].innerHTML = 'occupied';
freeCells.splice(occupyIndex, 1);
}
});
table td {
border: 1px solid black;
}
<label>
Pick a number:
<select id="select">
<option value="0">Pick a Number</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
</label>
<table>
<tr>
<td id="cell0">free</td>
<td id="cell1">free</td>
<td id="cell2">free</td>
</tr>
<tr>
<td id="cell3">free</td>
<td id="cell4">free</td>
<td id="cell5">free</td>
</tr>
<tr>
<td id="cell6">free</td>
<td id="cell7">free</td>
<td id="cell8">free</td>
</tr>
</table>
我有一个 3x3 点的二维网格。
此网格中的每个点都有自己的坐标 (x,y)。
用户可以选择 1 到 9 之间的随机数作为输入。根据用户选择的数字,随机点会相应地填充到网格中。例如,如果用户选择 9,则网格中的所有点始终被占用。如果用户选择8,一个随机点总是免费的,依此类推。
有人告诉我如何在 java 脚本中做到这一点吗?
我用二维数组试过了,但没用。我绝对是编程新手。提前致谢!
根据您的描述,我不知道这是否符合。基本思想是维护 2 个独立的数组,一个数组包含所有网格单元格,另一个数组是剩余的可自由占用的单元格。当您遍历并占用单元格时,从空闲数组中删除该单元格。
const gridCells = [];
for (let i=0; i<9; i++) {
gridCells[i] = document.getElementById('cell' + i);
}
const select = document.getElementById('select');
select.addEventListener('change', () => {
for (let cell of gridCells) {
cell.innerHTML = 'free';
}
let freeCells = [...gridCells];
let occupyCount = parseInt(select.value, 10);
for (let i=0; i<occupyCount; i++) {
const occupyIndex = Math.floor(Math.random() * freeCells.length);
freeCells[occupyIndex].innerHTML = 'occupied';
freeCells.splice(occupyIndex, 1);
}
});
table td {
border: 1px solid black;
}
<label>
Pick a number:
<select id="select">
<option value="0">Pick a Number</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
</label>
<table>
<tr>
<td id="cell0">free</td>
<td id="cell1">free</td>
<td id="cell2">free</td>
</tr>
<tr>
<td id="cell3">free</td>
<td id="cell4">free</td>
<td id="cell5">free</td>
</tr>
<tr>
<td id="cell6">free</td>
<td id="cell7">free</td>
<td id="cell8">free</td>
</tr>
</table>