1 回答

TA貢獻1900條經驗 獲得超5個贊
您的代碼中有太多錯誤。我什至不知道從哪里開始,我會用我記得的東西和提示來編輯這篇文章。
var player=1;
var grid = [
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0]
];
function selectColumn(col) {
for (let row = 0; row < 7; ++row) {
if(grid[row][6-col]){
continue;
}
if(player==1){
grid[row][6-col]=1;
player=2;
document.getElementById("box1").innerHTML="Player 1's Turn";
}else{
grid[row][6-col]=2;
player=1;
document.getElementById("box1").innerHTML="Player 2's Turn";
}
break;
}
refreshGrid();
}
function refreshGrid() {
for (var row = 0; row < 6; row++) {
for (var col = 0; col < 7; col++) {
const htmlElement = document.querySelector(`#column-${6-col} .row-${row}`);
if (grid[row][col]==0) {
htmlElement.style.backgroundColor="#FFFFFF";
} else if (grid[row][col]==1) { //1 for yellow
htmlElement.style.backgroundColor="#FFFF00";
} else if (grid[row][col]==2) { //1 for yellow
htmlElement.style.backgroundColor="#FF0000";
}
}
}
}
.column {
display: grid;
grid-auto-flow: row;
}
#grid {
display: grid;
grid-auto-flow: column;
}
<div id="box1"><h1>Player 2's turn.</h1></div>
<div id="grid">
<div class="column" id="column-0" data-x="0">
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-5" onclick="selectColumn(0)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-4" onclick="selectColumn(0)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-3" onclick="selectColumn(0)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-2" onclick="selectColumn(0)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-1" onclick="selectColumn(0)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-0" onclick="selectColumn(0)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
</div>
<div class="column" id="column-1" data-x="1">
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-5" onclick="selectColumn(1)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-4" onclick="selectColumn(1)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-3" onclick="selectColumn(1)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-2" onclick="selectColumn(1)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-1" onclick="selectColumn(1)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-0" onclick="selectColumn(1)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
</div>
<div class="column" id="column-2" data-x="2">
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-5" onclick="selectColumn(2)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-4" onclick="selectColumn(2)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-3" onclick="selectColumn(2)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-2" onclick="selectColumn(2)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-1" onclick="selectColumn(2)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-0" onclick="selectColumn(2)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
</div>
<div class="column" id="column-3" data-x="3">
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-5" onclick="selectColumn(3)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-4" onclick="selectColumn(3)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-3" onclick="selectColumn(3)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-2" onclick="selectColumn(3)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-1" onclick="selectColumn(3)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-0" onclick="selectColumn(3)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
</div>
<div class="column" id="column-4" data-x="4">
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-5" onclick="selectColumn(4)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-4" onclick="selectColumn(4)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-3" onclick="selectColumn(4)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-2" onclick="selectColumn(4)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-1" onclick="selectColumn(4)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-0" onclick="selectColumn(4)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
</div>
<div class="column" id="column-5" data-x="5">
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-5" onclick="selectColumn(5)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-4" onclick="selectColumn(5)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-3" onclick="selectColumn(5)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-2" onclick="selectColumn(5)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-1" onclick="selectColumn(5)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-0" onclick="selectColumn(5)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
</div>
<div class="column" id="column-6" data-x="6">
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-5" onclick="selectColumn(6)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-4" onclick="selectColumn(6)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-3" onclick="selectColumn(6)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-2" onclick="selectColumn(6)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-1" onclick="selectColumn(6)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
<svg height="75" width="75" stroke="black" stroke-width="5" class="row-0" onclick="selectColumn(6)">
<circle cx="45" cy="45" r="30" class="free" />
</svg>
</div>
</div>
<script src="game.js"></script>
</div>
你的代碼真的很亂,你的問題不夠集中。我這樣做的唯一原因是因為這個想法很有趣而且我想看到它奏效。
我記得的事情:
您的列和行在您的 html 結構中(現在仍然)是倒置的。您的腳本中有單元格行,html 中有單元格列。
您在同一列中調用 (selectColumn with 0, 1, 2, 3, 4, ...) ...
不要使用幻數(像 6 或 7 這樣的原始數字),而是使用常量。您可以定義 NUMBER_OF_ROWS 和 NUMBER_OF_COLUMNS。字符串也一樣。
您可以使用 javascript 生成一個數組并使用該數組創建您的 html 元素。
您試圖訪問一個不存在的 board 變量。
當沒有用行和列定義的 id 時,您試圖通過 id 選擇單元格。
添加回答
舉報