JavaScript 编写简单的井字棋游戏

JavaScript 编写简单的井字棋游戏

在本文中,我们将使用JavaScript创建一个 井字棋游戏 . 我们将使用验证检查来实现游戏功能。UI是使用CSS设计的,因此很容易创建。在游戏中,玩家1开始玩游戏,两个玩家轮流进行移动。形成直线的3个方块连一线的玩家获胜。这个游戏是仅使用简单逻辑和验证检查在前端构建的。

让我们来看看最终项目的样子:

JavaScript 编写简单的井字棋游戏

先决条件:

项目结构:

- index.html
- tic.css
- tic.js

示例: 将下面的代码分别写入相应的文件中。

index.html: 这个文件包含了项目的结构。

<!DOCTYPE html> 
<html> 
      
<head> 
    <meta name="viewport" content= 
        "width=device-width, initial-scale=1.0"> 
    <!-- CSS file Included -->
    <link rel="stylesheet" type="text/css" href="tic.css"> 
    <!-- JavaScript file included -->
    <script src="tic.js"></script> 
</head> 
  
<body> 
    <div id="main"> 
        <h1>TIC TAC TOE</h1> 
        <p id="ins"> 
              Game starts by just Tap on 
            box<br><br>First Player starts as 
            <b>Player X </b>And Second Player as  
            <b>Player 0</b> 
        </p> 
        <br><br> 
        <div class = "ui"> 
            <div class="row"> 
                <input type="text" id= "b1" 
                       class="cell" onclick="myfunc_3(); myfunc();" 
                       readonly> 
                <input type="text" id= "b2" 
                       class="cell" onclick="myfunc_4(); myfunc();" 
                       readonly> 
                <input type="text" id= "b3" class="cell" 
                       onclick="myfunc_5(); myfunc();" 
                       readonly> 
            </div> 
            <div class="row"> 
                <input type="text" id= "b4" 
                       class="cell" onclick="myfunc_6(); myfunc();" 
                       readonly> 
                <input type="text" id= "b5" 
                       class="cell" onclick="myfunc_7(); myfunc();" 
                       readonly> 
                <input type="text" id= "b6" 
                       class="cell" onclick="myfunc_8(); myfunc();" 
                       readonly> 
            </div> 
            <div class="row"> 
                <input type="text" id= "b7" 
                       class="cell" onclick="myfunc_9(); myfunc();" 
                       readonly> 
                <input type="text" id= "b8" 
                       class="cell" onclick="myfunc_10();myfunc();" 
                       readonly> 
                <input type="text" id= "b9" 
                       class="cell" onclick="myfunc_11();myfunc();" 
                       readonly> 
            </div> 
        </div> 
        <br><br><br> 
        
        <button id="but" onclick="myfunc_2()"> 
            RESET 
        </button> 
        <br><br> 
        <p id="print"></p> 
    </div> 
</body> 
  
</html>

tic.css: 这个文件包含了应用程序的样式。

h1 { 
    color: orangered; 
    margin-bottom: -5px; 
} 
p { 
    margin-bottom: -10px; 
} 
.ui { 
    display: flex; 
    flex-direction: column; 
    align-items: center; 
} 
.row { 
    display: flex; 
} 
.cell { 
    border: none; 
    width: 80px; 
    height: 80px; 
    display: flex; 
    align-items: center; 
    justify-content: center; 
    font-size: 24px; 
    text-align: center; 
    cursor: pointer; 
}   
.cell:active { 
    outline: none; 
} 
/* 3*3 Grid */
#b1{ 
    border-bottom: 1px solid gray; 
    border-right: 1px solid gray; 
} 
  
#b2 { 
    border-bottom: 1px solid gray; 
    border-right: 1px solid gray; 
    border-left: 1px solid gray; 
} 
  
#b3 { 
    border-bottom: 1px solid gray; 
    border-left: 1px solid gray; 
} 
  
#b4 { 
    border-top: 1px solid gray; 
    border-bottom: 1px solid gray; 
    border-right: 1px solid gray; 
} 
      
#b5 { 
    border: 1px solid gray; 
} 
  
#b6 { 
    border-top: 1px solid gray; 
    border-bottom: 1px solid gray; 
    border-left: 1px solid gray; 
} 
  
#b7 { 
    border-top: 1px solid gray; 
    border-right: 1px solid gray; 
} 
  
#b8 { 
    border-top: 1px solid gray; 
    border-right: 1px solid gray; 
    border-left: 1px solid gray; 
} 
  
#b9 { 
    border-top: 1px solid gray; 
    border-left: 1px solid gray; 
} 
/* Reset Button */
#but { 
    box-sizing: border-box; 
    width: 95px; 
    height: 40px; 
    border: 1px solid dodgerblue; 
    margin-left: auto; 
    border-radius: 8px; 
    font-family: Verdana, 
        Geneva, Tahoma, sans-serif; 
  
    background-color: whitesmoke; 
    color: dodgerblue; 
    font-size: 20px; 
    cursor: pointer; 
} 
  
/* Player turn space */
#print { 
    font-family: Verdana, 
        Geneva, Tahoma, sans-serif; 
    color: dodgerblue; 
    font-size: 20px; 
} 
  
/* Main Container */
#main { 
    text-align: center; 
} 
  
/* Game Instruction Text */
#ins { 
    font-family: Verdana,Geneva,  
                    Tahoma, sans-serif; 
    color: dodgerblue; 
}

tic.js: 这个文件包含了游戏的逻辑。

// Function called whenever user tab on any box 
function myfunc() { 
  
    // Setting DOM to all boxes or input field 
    var b1, b2, b3, b4, b5, b6, b7, b8, b9; 
    b1 = document.getElementById("b1").value; 
    b2 = document.getElementById("b2").value; 
    b3 = document.getElementById("b3").value; 
    b4 = document.getElementById("b4").value; 
    b5 = document.getElementById("b5").value; 
    b6 = document.getElementById("b6").value; 
    b7 = document.getElementById("b7").value; 
    b8 = document.getElementById("b8").value; 
    b9 = document.getElementById("b9").value; 
  
    var b1btn, b2btn, b3btn, b4btn, b5btn,  
        b6btn, b7btn, b8btn, b9btn; 
          
    b1btn = document.getElementById("b1"); 
    b2btn = document.getElementById("b2"); 
    b3btn = document.getElementById("b3"); 
    b4btn = document.getElementById("b4"); 
    b5btn = document.getElementById("b5"); 
    b6btn = document.getElementById("b6"); 
    b7btn = document.getElementById("b7"); 
    b8btn = document.getElementById("b8"); 
    b9btn = document.getElementById("b9"); 
  
    // Checking if Player X won or not and after 
    // that disabled all the other fields 
    if ((b1 == 'x' || b1 == 'X') && (b2 == 'x' || 
        b2 == 'X') && (b3 == 'x' || b3 == 'X')) { 
        document.getElementById('print') 
            .innerHTML = "Player X won"; 
        b4btn.disabled = true; 
        b5btn.disabled = true; 
        b6btn.disabled = true; 
        b7btn.disabled = true; 
        b8btn.disabled = true; 
        b9btn.disabled = true; 
  
        b1btn.style.color = "red"; 
        b2btn.style.color = "red"; 
        b3btn.style.color = "red"; 
    } 
    else if ((b1 == 'x' || b1 == 'X') && (b4 == 'x' || 
        b4 == 'X') && (b7 == 'x' || b7 == 'X')) { 
        document.getElementById('print') 
            .innerHTML = "Player X won"; 
        b2btn.disabled = true; 
        b3btn.disabled = true; 
        b5btn.disabled = true; 
        b6btn.disabled = true; 
        b8btn.disabled = true; 
        b9btn.disabled = true; 
  
        b1btn.style.color = "red"; 
        b4btn.style.color = "red"; 
        b7btn.style.color = "red"; 
    } 
    else if ((b7 == 'x' || b7 == 'X') && (b8 == 'x' || 
        b8 == 'X') && (b9 == 'x' || b9 == 'X')) { 
        document.getElementById('print') 
            .innerHTML = "Player X won"; 
  
        b1btn.disabled = true; 
        b2btn.disabled = true; 
        b3btn.disabled = true; 
        b4btn.disabled = true; 
        b5btn.disabled = true; 
        b6btn.disabled = true; 
  
        b7btn.style.color = "red"; 
        b8btn.style.color = "red"; 
        b9btn.style.color = "red"; 
    } 
    else if ((b3 == 'x' || b3 == 'X') && (b6 == 'x' || 
        b6 == 'X') && (b9 == 'x' || b9 == 'X')) { 
        document.getElementById('print') 
            .innerHTML = "Player X won"; 
  
        b1btn.disabled = true; 
        b2btn.disabled = true; 
        b4btn.disabled = true; 
        b5btn.disabled = true; 
        b7btn.disabled = true; 
        b8btn.disabled = true; 
  
        b3btn.style.color = "red"; 
        b6btn.style.color = "red"; 
        b9btn.style.color = "red"; 
    } 
    else if ((b1 == 'x' || b1 == 'X') && (b5 == 'x' || 
        b5 == 'X') && (b9 == 'x' || b9 == 'X')) { 
        document.getElementById('print') 
            .innerHTML = "Player X won"; 
        b2btn.disabled = true; 
        b3btn.disabled = true; 
        b4btn.disabled = true; 
        b6btn.disabled = true; 
        b7btn.disabled = true; 
        b8btn.disabled = true; 
  
        b1btn.style.color = "red"; 
        b5btn.style.color = "red"; 
        b9btn.style.color = "red"; 
    } 
    else if ((b3 == 'x' || b3 == 'X') && (b5 == 'x' || 
        b5 == 'X') && (b7 == 'x' || b7 == 'X')) { 
        document.getElementById('print') 
            .innerHTML = "Player X won"; 
        b1btn.disabled = true; 
        b2btn.disabled = true; 
        b4btn.disabled = true; 
        b6btn.disabled = true; 
        b8btn.disabled = true; 
        b9btn.disabled = true; 
  
        b3btn.style.color = "red"; 
        b5btn.style.color = "red"; 
        b7btn.style.color = "red"; 
    } 
    else if ((b2 == 'x' || b2 == 'X') && (b5 == 'x' || 
        b5 == 'X') && (b8 == 'x' || b8 == 'X')) { 
        document.getElementById('print') 
            .innerHTML = "Player X won"; 
        b1btn.disabled = true; 
        b2btn.disabled = true; 
        b4btn.disabled = true; 
        b6btn.disabled = true; 
        b7btn.disabled = true; 
        b9btn.disabled = true; 
  
        b2btn.style.color = "red"; 
        b5btn.style.color = "red"; 
        b8btn.style.color = "red"; 
    } 
    else if ((b4 == 'x' || b4 == 'X') && (b5 == 'x' || 
        b5 == 'X') && (b6 == 'x' || b6 == 'X')) { 
        document.getElementById('print') 
            .innerHTML = "Player X won"; 
        b1btn.disabled = true; 
        b2btn.disabled = true; 
        b3btn.disabled = true; 
        b7btn.disabled = true; 
        b8btn.disabled = true; 
        b9btn.disabled = true; 
  
        b4btn.style.color = "red"; 
        b5btn.style.color = "red"; 
        b6btn.style.color = "red"; 
    } 
  
    // Checking of Player X finish 
    // Checking for Player 0 starts, Is player 0 won or 
    // not and after that disabled all the other fields 
    else if ((b1 == '0' || b1 == '0') && (b2 == '0' || 
        b2 == '0') && (b3 == '0' || b3 == '0')) { 
        document.getElementById('print') 
            .innerHTML = "Player 0 won"; 
        b4btn.disabled = true; 
        b5btn.disabled = true; 
        b6btn.disabled = true; 
        b7btn.disabled = true; 
        b8btn.disabled = true; 
        b9btn.disabled = true; 
  
        b1btn.style.color = "red"; 
        b2btn.style.color = "red"; 
        b3btn.style.color = "red"; 
    } 
    else if ((b1 == '0' || b1 == '0') && (b4 == '0' || 
        b4 == '0') && (b7 == '0' || b7 == '0')) { 
        document.getElementById('print') 
            .innerHTML = "Player 0 won"; 
        b2btn.disabled = true; 
        b3btn.disabled = true; 
        b5btn.disabled = true; 
        b6btn.disabled = true; 
        b8btn.disabled = true; 
        b9btn.disabled = true; 
  
        b1btn.style.color = "red"; 
        b4btn.style.color = "red"; 
        b7btn.style.color = "red"; 
    } 
    else if ((b7 == '0' || b7 == '0') && (b8 == '0' || 
        b8 == '0') && (b9 == '0' || b9 == '0')) { 
        document.getElementById('print') 
            .innerHTML = "Player 0 won"; 
        b1btn.disabled = true; 
        b2btn.disabled = true; 
        b3btn.disabled = true; 
        b4btn.disabled = true; 
        b5btn.disabled = true; 
        b6btn.disabled = true; 
  
        b7btn.style.color = "red"; 
        b8btn.style.color = "red"; 
        b9btn.style.color = "red"; 
    } 
    else if ((b3 == '0' || b3 == '0') && (b6 == '0' || 
        b6 == '0') && (b9 == '0' || b9 == '0')) { 
        document.getElementById('print') 
            .innerHTML = "Player 0 won"; 
        b1btn.disabled = true; 
        b2btn.disabled = true; 
        b4btn.disabled = true; 
        b5btn.disabled = true; 
        b7btn.disabled = true; 
        b8btn.disabled = true; 
        b3btn.style.color = "red"; 
        b6btn.style.color = "red"; 
        b9btn.style.color = "red"; 
    } 
    else if ((b1 == '0' || b1 == '0') && (b5 == '0' || 
        b5 == '0') && (b9 == '0' || b9 == '0')) { 
        document.getElementById('print') 
            .innerHTML = "Player 0 won"; 
        b2btn.disabled = true; 
        b3btn.disabled = true; 
        b4btn.disabled = true; 
        b6btn.disabled = true; 
        b7btn.disabled = true; 
        b8btn.disabled = true; 
  
        b1btn.style.color = "red"; 
        b5btn.style.color = "red"; 
        b9btn.style.color = "red"; 
    } 
    else if ((b3 == '0' || b3 == '0') && (b5 == '0' || 
        b5 == '0') && (b7 == '0' || b7 == '0')) { 
        document.getElementById('print') 
            .innerHTML = "Player 0 won"; 
        b1btn.disabled = true; 
        b2btn.disabled = true; 
        b4btn.disabled = true; 
        b6btn.disabled = true; 
        b8btn.disabled = true; 
        b9btn.disabled = true; 
  
        b3btn.style.color = "red"; 
        b5btn.style.color = "red"; 
        b7btn.style.color = "red"; 
    } 
    else if ((b2 == '0' || b2 == '0') && (b5 == '0' || 
        b5 == '0') && (b8 == '0' || b8 == '0')) { 
        document.getElementById('print') 
            .innerHTML = "Player 0 won"; 
        b1btn.disabled = true; 
        b3btn.disabled = true; 
        b4btn.disabled = true; 
        b6btn.disabled = true; 
        b7btn.disabled = true; 
        b9btn.disabled = true; 
  
        b2btn.style.color = "red"; 
        b5btn.style.color = "red"; 
        b8btn.style.color = "red"; 
    } 
    else if ((b4 == '0' || b4 == '0') && (b5 == '0' || 
        b5 == '0') && (b6 == '0' || b6 == '0')) { 
        document.getElementById('print') 
            .innerHTML = "Player 0 won"; 
        b1btn.disabled = true; 
        b2btn.disabled = true; 
        b3btn.disabled = true; 
        b7btn.disabled = true; 
        b8btn.disabled = true; 
        b9btn.disabled = true; 
  
        b4btn.style.color = "red"; 
        b5btn.style.color = "red"; 
        b6btn.style.color = "red"; 
    } 
  
    // Checking of Player 0 finish 
    // Here, Checking about Tie 
    else if ((b1 == 'X' || b1 == '0') && (b2 == 'X'
        || b2 == '0') && (b3 == 'X' || b3 == '0') && 
        (b4 == 'X' || b4 == '0') && (b5 == 'X' || 
            b5 == '0') && (b6 == 'X' || b6 == '0') && 
        (b7 == 'X' || b7 == '0') && (b8 == 'X' || 
            b8 == '0') && (b9 == 'X' || b9 == '0')) { 
        document.getElementById('print') 
            .innerHTML = "Match Tie"; 
    } 
    else { 
  
        // Here, Printing Result 
        if (flag == 1) { 
            document.getElementById('print') 
                .innerHTML = "Player X Turn"; 
        } 
        else { 
            document.getElementById('print') 
                .innerHTML = "Player 0 Turn"; 
        } 
    } 
} 
  
// Function to reset game 
function myfunc_2() { 
    location.reload(); 
    b1 = b2 = b3 = b4 = b5 = b6 = b7 = b8 = b9 = ''; 
} 
  
// Here onwards, functions check turn of the player 
// and put accordingly value X or 0 
flag = 1; 
function myfunc_3() { 
    if (flag == 1) { 
        document.getElementById("b1").value = "X"; 
        document.getElementById("b1").disabled = true; 
        flag = 0; 
    } 
    else { 
        document.getElementById("b1").value = "0"; 
        document.getElementById("b1").disabled = true; 
        flag = 1; 
    } 
} 
  
function myfunc_4() { 
    if (flag == 1) { 
        document.getElementById("b2").value = "X"; 
        document.getElementById("b2").disabled = true; 
        flag = 0; 
    } 
    else { 
        document.getElementById("b2").value = "0"; 
        document.getElementById("b2").disabled = true; 
        flag = 1; 
    } 
} 
  
function myfunc_5() { 
    if (flag == 1) { 
        document.getElementById("b3").value = "X"; 
        document.getElementById("b3").disabled = true; 
        flag = 0; 
    } 
    else { 
        document.getElementById("b3").value = "0"; 
        document.getElementById("b3").disabled = true; 
        flag = 1; 
    } 
} 
  
function myfunc_6() { 
    if (flag == 1) { 
        document.getElementById("b4").value = "X"; 
        document.getElementById("b4").disabled = true; 
        flag = 0; 
    } 
    else { 
        document.getElementById("b4").value = "0"; 
        document.getElementById("b4").disabled = true; 
        flag = 1; 
    } 
} 
  
function myfunc_7() { 
    if (flag == 1) { 
        document.getElementById("b5").value = "X"; 
        document.getElementById("b5").disabled = true; 
        flag = 0; 
    } 
    else { 
        document.getElementById("b5").value = "0"; 
        document.getElementById("b5").disabled = true; 
        flag = 1; 
    } 
} 
  
function myfunc_8() { 
    if (flag == 1) { 
        document.getElementById("b6").value = "X"; 
        document.getElementById("b6").disabled = true; 
        flag = 0; 
    } 
    else { 
        document.getElementById("b6").value = "0"; 
        document.getElementById("b6").disabled = true; 
        flag = 1; 
    } 
} 
  
function myfunc_9() { 
    if (flag == 1) { 
        document.getElementById("b7").value = "X"; 
        document.getElementById("b7").disabled = true; 
        flag = 0; 
    } 
    else { 
        document.getElementById("b7").value = "0"; 
        document.getElementById("b7").disabled = true; 
        flag = 1; 
    } 
} 
  
function myfunc_10() { 
    if (flag == 1) { 
        document.getElementById("b8").value = "X"; 
        document.getElementById("b8").disabled = true; 
        flag = 0; 
    } 
    else { 
        document.getElementById("b8").value = "0"; 
        document.getElementById("b8").disabled = true; 
        flag = 1; 
    } 
} 
  
function myfunc_11() { 
    if (flag == 1) { 
        document.getElementById("b9").value = "X"; 
        document.getElementById("b9").disabled = true; 
        flag = 0; 
    } 
    else { 
        document.getElementById("b9").value = "0"; 
        document.getElementById("b9").disabled = true; 
        flag = 1; 
    } 
} 

输出结果:

JavaScript 编写简单的井字棋游戏

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程