簡體   English   中英

如何檢查井字游戲冠軍

[英]How to check Tic-Tac-Toe Winner

我想知道我的代碼出了什么問題。 我使用網站正文和javascript中的表格制作了井字游戲。 這是我的代碼的相關部分:

內部機構:

<body>
    </table>

    <table id="matrix" border="1">
        <tr>
            <td class="cellCSS">
                <img alt="Click Here" class="imageCSS" onclick="imageClicked(this,0,0)"/>
            </td>
            <td class="cellCSS">
                <img alt="Click Here" class="imageCSS" onclick="imageClicked(this,0,1)"/>
            </td>
            <td class="cellCSS">
                <img alt="Click Here" class="imageCSS" onclick="imageClicked(this,0,2)"/>
            </td>
        </tr>
        ...
    </table>
</body>

這是函數imageClicked的相關部分:

...
same = false;
var r = 0;
tbl = document.getElementById("matrix");
//alert(tbl.rows.length);

for(r = 0; r < tbl.rows.length; r++) {
    // alert('Bob');
    var _tempmg = tbl.rows[r].cells[col].childNodes[0].src;
    alert(_tempmg);
    if (!_tempmg) break;
    if (_img.src != _tempmg) break;
    same = true;
}

if (r == tbl.rows.length && same) {
    alert(_img.src + "won");
    return;
}

same = false;
...

您的問題是r == tbl.rows.length始終為false,因為for循環在r <tbl.rows.length時進行迭代。

您應該包含更多的imageClicked函數。 我猜它開始了:

function imageClicked(element, row, col) {

並在您發布的代碼中:

same = false;

大概您已經聲明了相同的內容以保持其本地性。

var r = 0;

如果您在循環中進行初始化,則無需在此處初始化r(即為其分配值)。

tbl = document.getElementById("matrix");

for(r = 0; r < tbl.rows.length; r++) {
    var _tempmg = tbl.rows[r].cells[col].childNodes[0].src;

    if (!_tempmg) break;

在您的html中,您尚未為image src屬性分配一個值,因此我認為這時您將根據用戶單擊它來分配一個零或叉號。 分配適當的圖像后,我將執行下一行。

    if (_img.src != _tempmg) break;
    same = true;

將條件添加到for(...)表達式中可能更清楚:

for(r = 0; r < tbl.rows.length && !same; r++) {

現在,您可以使用:

    if (_img.src == _tempmg) same = true;

}

if (r == tbl.rows.length && same) {
    alert(_img.src + "won");
    return;
}

same = false;

我需要查看更多imageClicked函數以了解為什么它不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM