【发布时间】:2017-10-13 14:25:57
【问题描述】:
几天来我一直在尝试创建一个简单的项目游戏(井字游戏),最后我做到了..... 我想在玩家和计算机之间创建一个模拟,但我设法以某种方式解决了问题:)
我遇到了两个问题: 我如何限制移动的重写,因为我现在可以做到这一点。 我的另一个问题是:如何避免重复代码,比如重复“If 语句”。
var nextMove = "X".fontsize(8);
var playerChar = "X".fontsize(8);
var computerChar = "O".fontsize(8);
var dataContent = [cell1x1, cell1x2, cell1x3, cell2x1, cell2x2, cell2x3, cell3x1, cell3x2, cell3x3];
function playerMove () {
if (nextMove == "X") {
nextMove = computerMove();
}
else {
nextMove = playerChar;
}
}
function computerMove () {
for(var i = 0; i < dataContent.length; i++){
if (cell1x1.innerHTML === "X" || cell1x1.innerHTML === "O") {
return;
}
if(cell1x1.innerHTML === ""){
dataContent[0].innerHTML = computerChar;
return;
}
if (cell1x2.innerHTML === "X" || cell1x2.innerHTML === "O") {
return;
}
if(cell1x2.innerHTML === ""){
dataContent[1].innerHTML = computerChar;
return;
}
if (cell1x3.innerHTML === "X" || cell1x3.innerHTML === "O") {
return;
}
if(cell1x3.innerHTML === ""){
dataContent[2].innerHTML = computerChar;
return;
}
if (cell2x1.innerHTML === "X" || cell2x1.innerHTML === "O") {
return;
}
if(cell2x1.innerHTML === ""){
dataContent[3].innerHTML = computerChar;
return;
}
if (cell2x2.innerHTML === "X" || cell2x2.innerHTML === "O") {
return;
}
if(cell2x2.innerHTML === ""){
dataContent[4].innerHTML = computerChar;
return;
}
if (cell2x3.innerHTML === "X" || cell2x3.innerHTML === "O") {
return;
}
if(cell2x3.innerHTML === ""){
dataContent[5].innerHTML = computerChar;
return;
}
if (cell3x1.innerHTML === "X" || cell3x1.innerHTML === "O") {
return;
}
if(cell3x1.innerHTML === ""){
dataContent[6].innerHTML = computerChar;
return;
}
if (cell3x2.innerHTML === "X" || cell3x2.innerHTML === "O") {
return;
}
if(cell3x2.innerHTML === ""){
dataContent[7].innerHTML = computerChar;
return;
}
if (cell3x3.innerHTML === "X" || cell3x3.innerHTML === "O") {
return;
}
if(cell3x3.innerHTML === ""){
dataContent[8].innerHTML = computerChar;
return;
}
}
}
$("#cell1x1").click(function(){
if (cell1x1.innerHTML === "X" || cell1x1.innerHTML === "O") {
return;
}
cell1x1.innerHTML = "X";
cell1x1.innerHTML = nextMove;
playerMove();
computerMove();
});
$("#cell1x2").click(function(){
if (cell1x2.innerHTML === "X" || cell1x2.innerHTML === "O") {
return;
}
cell1x2.innerHTML = "X";
cell1x2.innerHTML = nextMove;
playerMove();
computerMove();
});
$("#cell1x3").click(function(){
if (cell1x3.innerHTML === "X" || cell1x3.innerHTML === "O") {
return;
}
cell1x3.innerHTML = "X";
cell1x3.innerHTML = nextMove;
playerMove();
computerMove();
});
$("#cell2x1").click(function(){
if (cell2x1.innerHTML === "X" || cell2x1.innerHTML === "O") {
return;
}
cell2x1.innerHTML = "X";
cell2x1.innerHTML = nextMove;
playerMove();
computerMove();
});
$("#cell2x2").click(function(){
if (cell2x2.innerHTML === "X" || cell2x2.innerHTML === "O") {
return;
}
cell2x2.innerHTML = "X";
cell2x2.innerHTML = nextMove;
playerMove();
computerMove();
});
$("#cell2x3").click(function(){
if (cell2x3.innerHTML === "X" || cell2x3.innerHTML === "O") {
return;
}
cell2x3.innerHTML = "X";
cell2x3.innerHTML = nextMove;
playerMove();
computerMove();
});
$("#cell3x1").click(function(){
if (cell3x1.innerHTML === "X" || cell3x1.innerHTML === "O") {
return;
}
cell3x1.innerHTML = "X";
cell3x1.innerHTML = nextMove;
playerMove();
computerMove();
});
$("#cell3x2").click(function(){
if (cell3x2.innerHTML === "X" || cell3x2.innerHTML === "O") {
return;
}
cell3x2.innerHTML = "X";
cell3x2.innerHTML = nextMove;
playerMove();
computerMove();
});
$("#cell3x3").click(function(){
if (cell3x3.innerHTML === "X" || cell3x3.innerHTML === "O") {
return;
}
cell3x3.innerHTML = "X";
cell3x3.innerHTML = nextMove;
playerMove();
computerMove();
});
.data1x1 ,.data1x2 ,.data1x3,.data2x1 ,.data2x2 ,.data2x3 ,.data3x1 ,.data3x2 ,.data3x3{
width: 80px;
height: 80px;
border-right:1px;
border-style: solid;
}
.tableContent{
background-color: white;
margin: 150px auto auto;
}
.body{
background-color: lightskyblue;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Tic tac toe</title>
<link rel="stylesheet" type="text/css" href="myCss.css">
</head>
<body class="body">
<div class="container">
<table class="tableContent">
<tr class="rowContent">
<td id="cell1x1" class="data1x1"></td>
<td id="cell1x2" class="data1x2"></td>
<td id="cell1x3" class="data1x3"></td>
</tr>
<tr class="rowContent">
<td id="cell2x1" class="data2x1"></td>
<td id="cell2x2" class="data2x2"></td>
<td id="cell2x3" class="data2x3"></td>
</tr>
<tr class="rowContent">
<td id="cell3x1" class="data3x1"></td>
<td id="cell3x2" class="data3x2"></td>
<td id="cell3x3" class="data3x3"></td>
</tr>
</table>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="myScript.js" ></script>
</body>
</html>
【问题讨论】:
-
最好在codereview.stackexchange.com问这个问题
标签: javascript arrays click innerhtml overwrite