Javascript对象';s布尔变量始终为false

Javascript对象';s布尔变量始终为false,javascript,object,boolean,Javascript,Object,Boolean,我昨天刚开始练习JavaScript,所以我决定在其中编写一个小的tic-tac-toe游戏,但在设置cell对象的布尔变量时遇到了一个问题。虽然putX()或putO()函数将布尔变量设置为true(单击特定单元格后,IsEmpty()函数控制台日志工作正常),但draw单元格的函数似乎从未工作过,因为if语句从未执行过 我已经找了几个小时的问题,但我找不到,也许我只是忽略了一些东西 代码如下: var板=[]; var-cellSize=25; var-turn=0; 功能单元(posX、

我昨天刚开始练习JavaScript,所以我决定在其中编写一个小的tic-tac-toe游戏,但在设置cell对象的布尔变量时遇到了一个问题。虽然putX()或putO()函数将布尔变量设置为true(单击特定单元格后,IsEmpty()函数控制台日志工作正常),但draw单元格的函数似乎从未工作过,因为if语句从未执行过

我已经找了几个小时的问题,但我找不到,也许我只是忽略了一些东西

代码如下:

var板=[];
var-cellSize=25;
var-turn=0;
功能单元(posX、posY){
this.posX=posX;
this.posY=posY;
这个.x=假;
这个。o=假;
}
cell.prototype.putX=函数(){
if(this.x==false&&this.o==false){
这个.x=真;
}
};
cell.prototype.putO=函数(){
if(this.x==false&&this.o==false){
这个。o=真;
}
};
cell.prototype.isEmpty=函数(){
if(this.x==false&&this.o==false)
返回true;
否则{
if(this.x==true)console.log(“此单元格中已存在x”);
else if(this.o==true)console.log(“此单元格中已存在o”);
返回false;
}
};
cell.prototype.draw=函数(){
if(this.x==true){
drawX(this.posX,this.posY);
}else if(this.o==true){
drawO(this.posX,this.posY);
}
};
函数drawX(posX、posY、ctx){
var c=document.getElementById(“游戏画布”);
var ctx=c.getContext(“2d”);
ctx.lineWidth=3;
ctx.beginPath();
ctx.moveTo(posX,posY);
ctx.lineTo(posX+cellSize,posY+cellSize)
ctx.moveTo(posX+细胞大小,posY);
ctx.lineTo(posX、posY+手机尺寸)
ctx.stroke();
ctx.lineWidth=1;
}
函数drawO(posX,posY){
var c=document.getElementById(“游戏画布”);
var ctx=c.getContext(“2d”);
ctx.lineWidth=3;
ctx.beginPath();
ctx.arc(数学地板((posX+cellSize/2)),数学地板(posY+cellSize/2),8,0,2*Math.PI)
ctx.stroke();
ctx.lineWidth=1;
}
函数getBoardIndex(posX、posY){
var boardIndex=((数学地板(posY/cellSize)*getboardDimension())+(数学地板(posX/cellSize));
返回板[板索引];
}
函数getboardDimension(){
var c=document.getElementById(“游戏画布”);
变量尺寸=c.宽度/单元尺寸;
返回维度;
}
函数初始化板(){
var currentRow=0;
var-currentCol=0;
对于(变量i=0;i0){
currentRow++;
currentCol=0;
}
board[i]=新单元(currentCol*cellSize,currentRow*cellSize);
currentCol++;
}
绞车();
}
函数getCursorPosition(画布、事件){
var rect=canvas.getBoundingClientRect();
var x=event.clientX-rect.left;
var y=event.clientY-rect.top;
如果(圈数===1){
if(getBoardIndex(x,y).isEmpty()){
getBoardIndex(x,y).putX();
回合^=1;
}
}否则如果(回合===0){
if(getBoardIndex(x,y).isEmpty()){
getBoardIndex(x,y).putO();
回合^=1;
}
}
}
功能绘图板(){
var c=document.getElementById(“游戏画布”);
var ctx=c.getContext(“2d”);
ctx.strokeStyle=“#333”;
对于(变量i=0;i
*{
框大小:边框框;
}
身体{
背景色:#1d;
保证金:0;
填充:0;
}
.行{
宽度:100%;
}
.集装箱{
保证金:自动;
}
.col-1{
宽度:8.33%;
}
.col-2{
宽度:16.66%;
}
上校3{
宽度:25%;
}
.col-4{
宽度:33.33%;
}
上校5{
宽度:41.66%;
}
.col-6{
宽度:50%;
}
上校7{
宽度:58.33%;
}
.col-8{
宽度:66.66%;
}
.col-9{
宽度:75%;
}
上校10{
宽度:83.33%;
}
上校11{
宽度:91.66%;
}
上校12{
宽度:100%;
}
[类别*=“列-”]{
浮动:左;
填充:15px;
}
@仅介质屏幕和(最大宽度:768px){
[类别*=“列-”]{
宽度:100%;
}
}
.集装箱{
宽度:1200px;
保证金:自动;
}
.容器液体{
宽度:100%;
}
.资源中心{
文本对齐:居中;
}
.输入文本{
颜色:#666;
背景色:透明;
填充:10px 10px 10px 10px;
边界:无;
边界半径:5px;
边框:1px实心#333;
}
.输入文本:焦点{
大纲:无;
边框颜色:#444;
}
.默认按钮{
边缘顶部:5px;
字体系列:calibri;
背景色:#3535;
颜色:#fff;
边界:无;
填充:10px 30px 10px 30px;
边界半径:5px;
文本转换:大写;
}
.默认按钮:悬停{
背景色:#302f2f;
光标:指针;
}
.默认按钮:焦点{
大纲:无;
}
.info按钮{
边缘顶部:5px;
字体系列:calibri;
背景色:#00a1dd;
颜色:#fff;
边界:无;
填充:10px 30px 10px 30px;
边界半径:5px;
文本转换:大写;
}
.info按钮:悬停{
背景色:#0090cc;
光标:指针;
}
.info按钮:焦点{
大纲:无;
}
.警告按钮{
边缘顶部:5px;
字体系列:calibri;
背景色:#d93131;
颜色:#fff;
边界:无;
填充:10px 30px 10px 30px;
边界半径:5px;
文本转换:大写;
}
.警告按钮:悬停{
背景色:#c82020;
光标:指针;
}
.警告按钮:焦点{
大纲:无;
}
.成功按钮{
边缘顶部:5px;
字体系列:calibri;
背景色:#0ea60f;
颜色:#fff;
边界:无;
填充:10px 30px 10px 30px;
边界半径:5px;
文本转换:大写;
}
.成功按钮:悬停{
返回