Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使我的JavaScript内存游戏不选择超过2个方块_Javascript_Html_Css - Fatal编程技术网

如何使我的JavaScript内存游戏不选择超过2个方块

如何使我的JavaScript内存游戏不选择超过2个方块,javascript,html,css,Javascript,Html,Css,我正在研究这个记忆游戏,我试图解决一个问题,如果用户强调游戏并快速点击多个方块,第一个点击的方块将保持打开,不再关闭,即使你找到匹配的方块 除非其他人有更好的想法,否则我正在寻找一种方法,在两个方块运动时禁用单击事件。因此,您必须等待这两个方块闭合或匹配,直到您可以单击另一个方块 我还想只使用javascript,不使用jQuery let resetButton=document.getElementById(“重置按钮”); 让颜色=[]; for(设i=0;i分区{ 身高:50%; }

我正在研究这个记忆游戏,我试图解决一个问题,如果用户强调游戏并快速点击多个方块,第一个点击的方块将保持打开,不再关闭,即使你找到匹配的方块

除非其他人有更好的想法,否则我正在寻找一种方法,在两个方块运动时禁用单击事件。因此,您必须等待这两个方块闭合或匹配,直到您可以单击另一个方块

我还想只使用javascript,不使用jQuery

let resetButton=document.getElementById(“重置按钮”);
让颜色=[];
for(设i=0;i<10;i++){
颜色。推送('square-'+i);
}
功能GameSquare(el,彩色){
this.el=el;
this.isOpen=false;
this.isLocked=false;
this.el.addEventListener(“单击”,this,false);
this.setColor(color);//设置标志。
}
GameSquare.prototype.handleEvent=函数(e){
开关(e型){
案例“点击”:
如果(this.isOpen | | this.isLocked){
返回;
}
this.isOpen=真;
this.el.classList.add('flip');
检查游戏(这个);//检查游戏
}
}
GameSquare.prototype.reset=函数(){
this.isOpen=false;
this.isLocked=false;
this.el.classList.remove('flip');
}
GameSquare.prototype.lock=函数(){
this.isLocked=true;
this.isOpen=真;
}
GameSquare.prototype.setColor=函数(颜色){
this.el.children[0]。children[1]。classList.remove(this.color);
这个颜色=颜色;
this.el.children[0].children[1].classList.add(颜色);
}
设gameSquares=[];
函数setupGame(){
让数组=document.getElementsByClassName(“游戏广场”);
让randomColor=GetSomeColor();
for(设i=0;i
。游戏广场{
框大小:边框框;
边框:1px实心#000;
宽度:100px;
高度:100px;
位置:相对位置;
溢出:隐藏;
}
.游戏广场>分区{
宽度:100%;
身高:200%;
位置:绝对位置;
排名:0;
}
.游戏广场>分区>分区{
身高:50%;
}
.游戏广场>分区>分区:第一个孩子{
背景颜色:灰色;
}
.flip>div{
前-100%;
}
.square-0{
背景色:浅绿色;
}
.square-1{
背景色:深蓝色;
}
.square-2{
背景颜色:蓝色;
}
.square-3{
背景色:蓝紫色;
}
.square-4{
背景颜色:棕色;
}
.square-5{
背景色:卡德蓝;
}
.square-6{
背景色:黄绿色;
}
.square-7{
背景颜色:巧克力色;
}
.square-8{
背景颜色:珊瑚;
}
.square-9{
背景颜色:矢车菊蓝;
}
#游戏{
宽度:400px;
高度:400px;
显示器:flex;
弯曲方向:行;
柔性包装:包装;
边框:1px纯红;
}

重置游戏

您可以添加一个全局指示器,显示当前打开的数量。i、 e:
let-areOpen=0

每次打开卡片时将其增加1,并更新单击事件中的条件检查以同时检查它:
if(this.isOpen | | this.isLocked | | areOpen==2){

然后每次完成一个回合后将其重置为
0
。现在用户点击的速度应该不重要了

很可能有更多更好的方法,但这似乎是可行的,从现在起可以改进

让areOpen=0;
让resetButton=document.getElementById(“reset button”);
让颜色=[];
for(设i=0;i<10;i++){
颜色。推送('square-'+i);
}
功能GameSquare(el,彩色){
this.el=el;
this.isOpen=false;
this.isLocked=false;
this.el.addEventListener(“单击”,this,false);
this.setColor(color);//设置标志。
}
GameSquare.prototype.handleEvent=函数(e){
开关(e型){
案例“点击”:
如果(this.isOpen | | this.isLocked | | areOpen==2){
返回;
}
areOpen+=1;
this.isOpen=真;
this.el.classList.add('flip');
检查游戏(这个);//检查游戏
}
}
GameSquare.prototype.reset=函数(){
this.isOpen=false;
这