将数字与JavaScript进行比较
如何循环一组数字,并将它们与多组数字进行比较。我正在尝试为一个Tic Tac Toe项目编程游戏逻辑。当玩家点击一个方块时,被点击的方块数存储在p1take或p2take中。我试图通过这些数组循环,并将数字与获胜所需的方块数字进行比较。只有第一个if语句有效,我认为它不是平方数的bc,而是因为数组中有3个数。以下是我目前掌握的代码:将数字与JavaScript进行比较,javascript,tic-tac-toe,Javascript,Tic Tac Toe,如何循环一组数字,并将它们与多组数字进行比较。我正在尝试为一个Tic Tac Toe项目编程游戏逻辑。当玩家点击一个方块时,被点击的方块数存储在p1take或p2take中。我试图通过这些数组循环,并将数字与获胜所需的方块数字进行比较。只有第一个if语句有效,我认为它不是平方数的bc,而是因为数组中有3个数。以下是我目前掌握的代码: const turnTaken = { X: [], O: [] } var whosTurn = 'X'; let p1Taken = tur
const turnTaken = {
X: [],
O: []
}
var whosTurn = 'X';
let p1Taken = turnTaken.X;
let p2Taken = turnTaken.O;
const gameGrid = document.getElementsByClassName("grid");
const message = document.getElementById("message");
for(i=0, l=gameGrid.length; i < l; i++){
const boardNum = gameGrid[i].getAttribute("value");
gameGrid[i].addEventListener('click', function(e) {
if(whosTurn == 'X') {
message.innerHTML = "O's Turn";
player1Turn(e);
} else {
message.innerHTML = "X's Turn";
player2Turn(e);
}
});
}
function player1Turn(e){
const clickedValue = e.target.getAttribute("value");
const clicked = e.target;
const xIcon = document.createElement("IMG");
const srcX = "img/x-icon.png";
xIcon.setAttribute("src", srcX);
clicked.appendChild(xIcon);
p1Taken.push(clickedValue);
whosTurn = 'O';
player1CheckWin(p1Taken);
}
function player2Turn(e){
const clickedValue = e.target.getAttribute("value");
const clicked = e.target;
const oIcon = document.createElement("IMG");
const srcO = "img/o-icon.png";
oIcon.setAttribute("src", srcO);
clicked.appendChild(oIcon);
p2Taken.push(clickedValue);
whosTurn = 'X';
player2CheckWin(p2Taken);
}
function player1CheckWin(p1Taken){
for(var i=0; i < p1Taken.length; i++) {
if(p1Taken.length > 2) {
if(p1Taken[i] == 1 || p1Taken[i] == 2 || p1Taken[i] == 3) {
console.log("first");
message.innerHTML = "X Won!";
} else if(p1Taken[i] == 4 || p1Taken[i] == 5 || p1Taken[i] == 6) {
console.log("second");
message.innerHTML = "X Won!";
} else if(p1Taken[i] == 7 || p1Taken[i] == 8 || p1Taken[i] == 9) {
console.log("third");
message.innerHTML = "X Won!";
} else if(p1Taken[i] == 1 || p1Taken[i] == 4 || p1Taken[i] == 7) {
message.innerHTML = "X Won!";
} else if(p1Taken[i] == 2 || p1Taken[i] == 5 || p1Taken[i] == 8) {
message.innerHTML = "X Won!";
} else if(p1Taken[i] == 3 || p1Taken[i] == 6 || p1Taken[i] == 9) {
message.innerHTML = "X Won!";
} else if(p1Taken[i] == 1 || p1Taken[i] == 5 || p1Taken[i] == 9){
message.innerHTML = "X Won!";
} else if(p1Taken[i] == 3 || p1Taken[i] == 5 || p1Taken[i] == 7) {
message.innerHTML = "X Won!";
} else {
break;
}
} else {
break;
}
}
}
function player2CheckWin(p2Taken){
for(var j=0; j < p2Taken.length; j++) {
if(p2Taken.length > 2) {
if(p2Taken[j] == 1 || p2Taken[j] == 2 || p2Taken[j] == 3) {
message.innerHTML = "O Won!";
} else if(p2Taken[j] == 4 || p2Taken[j] == 5 || p2Taken[j] == 6) {
message.innerHTML = "O Won!";
} else if(p2Taken[j] == 7 || p2Taken[j] == 8 || p2Taken[j] == 9) {
message.innerHTML = "O Won!";
} else if(p2Taken[j] == 1 || p2Taken[j] == 4 || p2Taken[j] == 7) {
message.innerHTML = "O Won!";
} else if(p2Taken[j] == 2 || p2Taken[j] == 5 || p2Taken[j] == 8) {
message.innerHTML = "O Won!";
} else if(p2Taken[j] == 3 || p2Taken[j] == 6 || p2Taken[j] == 9) {
message.innerHTML = "O Won!";
} else if(p2Taken[j] == 1 || p2Taken[j] == 5 || p2Taken[j] == 9){
message.innerHTML = "O Won!";
} else if(p2Taken[j] == 3 || p2Taken[j] == 5 || p2Taken[j] == 7) {
message.innerHTML = "O Won!";
} else {
break;
}
} else {
break;
}
}
}
const turntake={
X:[],
O:[]
}
var whosurn='X';
设p1take=turntake.X;
设p2take=turntake.O;
const gameGrid=document.getElementsByClassName(“网格”);
const message=document.getElementById(“消息”);
对于(i=0,l=gameGrid.length;i2){
如果(p1take[i]==1 | | p1take[i]==2 | | p1take[i]==3){
控制台日志(“第一”);
message.innerHTML=“X赢得!”;
}如果(p1take[i]==4 | | p1take[i]==5 | | p1take[i]==6){
控制台日志(“第二”);
message.innerHTML=“X赢得!”;
}else if(p1take[i]==7 | | p1take[i]==8 | | p1take[i]==9){
控制台日志(“第三”);
message.innerHTML=“X赢得!”;
}else if(p1take[i]==1 | | p1take[i]==4 | | p1take[i]==7){
message.innerHTML=“X赢得!”;
}else if(p1take[i]==2 | | p1take[i]==5 | | p1take[i]==8){
message.innerHTML=“X赢得!”;
}else if(p1take[i]==3 | | p1take[i]==6 | | p1take[i]==9){
message.innerHTML=“X赢得!”;
}else if(p1take[i]==1 | | p1take[i]==5 | | p1take[i]==9){
message.innerHTML=“X赢得!”;
}else if(p1take[i]==3 | | p1take[i]==5 | | p1take[i]==7){
message.innerHTML=“X赢得!”;
}否则{
打破
}
}否则{
打破
}
}
}
功能播放器2Checkwin(第2页){
对于(var j=0;j
您需要更正比较逻辑
改变这个
p1take[i]==1&&2&&3
到
p1take[i]==1&&p1take[i]==2&&p1take[i]==3
其他人也是如此
&&
运算符希望对表达式进行比较,在本例中,您给出的第一个表达式为p1take[i]==1
,这是正确的,但给出的第二个和第三个表达式为“2”和“3”,它们是真实值
关于逻辑部分,上面的代码仍然不能给出正确的结果,因为您希望相同的东西p1take[i]
同时等于多个值
因此,只是一个提示,p1take
将其保留为take tile no的数组&使用条件为
p1take.包括(1)和&p1take.包括(2)和&p1take.包括(3)
我只选择一个谓词:
p1Taken[i] == 1 && 2 && 3
这是true
iff以下所有条件均为true:
p1take[i]
类似于1
(在必要的铸造之后)2
为true
(必要的铸造后)3
为true
(必要的铸造后)2
和3
是真实的,因此转换为布尔值都是true
。如果要将[i]与3个数字进行比较,则需要进行3次比较:
p1Taken[i] == 1 || p1Taken[i] == 2 || p1Taken[i] == 3
如果数字始终为整数,则可以使用范围:
p1Taken[i] >= 1 && p1Taken[i] <= 3
你想说什么