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