如何在android中基于onClick替换定时器?

问题描述:

我正在尝试使用Firebase在Android Studio中制作一个TicTacToe在线多人游戏,下面是我用于按钮(TicTacToe 9个块中的1个)的代码。现在我正在使用一个计时器来阻止用户点击任何其他按钮后,他点击该按钮,让其他用户有时间点击。但是我想这样做是为了让一个用户不能点击任何按钮,直到其他用户点击一个按钮。有没有办法做到这一点? 默认值nothing & face & a1为“零”,默认值为“one”,而rface只是一个字符串变量从“face”中获取其值。如何在android中基于onClick替换定时器?

//below clicking 
     a1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //below 
       //starting if condition 
       if (ra1.equals(nothing)){ 

        if (rface.equals(nothing)){ 
         a1.setBackgroundResource(R.drawable.rounded); 
         Firebase refChild = ref2.child("a1"); 
         refChild.setValue("round"); 
         refChild = ref2.child("face"); 
         refChild.setValue("one"); 
        } 

        else if (rface.equals(added)) { 
         a1.setBackgroundResource(R.drawable.crossed); 
         Firebase refChild = ref2.child("a1"); 
         refChild.setValue("cross"); 
         refChild = ref2.child("face"); 
         refChild.setValue("zero"); 
        } 
        //timer below 

        a1.setClickable(false); 
        a2.setClickable(false); 
        a3.setClickable(false); 
        b1.setClickable(false); 
        b2.setClickable(false); 
        b3.setClickable(false); 
        c1.setClickable(false); 
        c2.setClickable(false); 
        c3.setClickable(false); 
        new Handler().postDelayed(new Runnable() { 
         @Override 
         public void run() { 
          a1.setClickable(true); 
          a2.setClickable(true); 
          a3.setClickable(true); 
          b1.setClickable(true); 
          b2.setClickable(true); 
          b3.setClickable(true); 
          c1.setClickable(true); 
          c2.setClickable(true); 
          c3.setClickable(true); 
         } 
        }, 3000); 
        //timer above 
       } 
      } 
     }); 
+0

以数字结尾的变量名通常表示您应该使用数组或List。 –

+0

至于你的实际问题,你有一台电脑播放器,或者这是为两个人类玩家?两个人类玩家是在同一台设备上还是通过网络玩游戏? –

+0

你的变量名称有点混乱。 'ra1'和'rface'是什么意思?什么是“没有”和“添加”? –

我建议有两个不同OnClickListener真是让人不是一个if语句。一个用于X,另一个用于Os。然后你可以来回设置听众。例如,在X的OnClickListener的末尾,它将使用Os的setOnClickListener()

+0

你能否给我提供一些代码示例,这将是非常有用的,谢谢。 –

我终于想出了这个算法,我的解决方案:

online=0; 
offline=1; 


if (online!=offline){ 
    offline=random; 
    online=offline; 
    if(shape=0) 
    { 
     click(set round); 
    } 
    else if(shape=1) 
    { 
     click(set cross); 
    } 
} 

其中整形是另一个整数我使用一个开关。