0

我想建立简单的记忆游戏。我用了 16 按钮。我知道在单击特定按钮时如何做出反应,但是我如何对每个按钮单击做出反应并检查是否选择了匹配按钮(现在不需要)?

4

2 回答 2

0

使用逻辑我能够创建一个程序,但它很长。对于每个按钮,您应该执行相同的操作:

    Button B1;
    int x,y; //give them values and compare (example: B1=1, B2=2, B3=1 .. B1&B3 the same picture)
    int turn = 1; //to know whos turn (x or y), default start on x
    int numberOfClicks=0; //when 2 buttons clicked, check

    //in the OnCreate()
    B1 = (Button) findViewById(R.id.b1); //assume B1's value = 1
    B1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {    //------------------------------------ OnClick Starts here

            if (turn==1){
            //use x
                x=1;
                turn=2; //flip the turn
                numberOfButtons++; //one is clicked so far
            }else{
            //use y
                y=1;
                turn=1;
                numberOfButtons++;
            }


            if(numberOfButtons==2){
            //check
                if(x==y){
                //same
                numberOfButtons=0; //restart counter
                }else{
                //not the same
                numberOfButtons=0; //restart counter
            }

        }//end of OnClick           

    }); //end of button OnClickListener 

如果 B2=7,那么在 OnClick 中,x 和 y 应该 = 7。每个 OnClick 将有不同的 x 和 y 值。

于 2013-05-13T19:13:55.597 回答
0

在 xml 中,onClick为每个名称使用相同的名称Button

<Button
   android:id="@+id/btn1"
   ...
   android:onClick="btnClick"/>
<Button
   android:id="@+id/btn2"
   ...
   android:onClick="btnClick"/>

并在您的 java 代码中确保该函数是公共的,与您在onClick上面的 xml 属性中定义的名称相同,并且它采用 aView作为其唯一参数。将ViewButton点击,因此您可以获取它idswitch在其上,使用if/else或以任何方式处理它

public void btnClick(View v)
{
    switch(v.getId())    // v is the btn that was clicked so this will give you its id
    {
        case (R.id.btn1):   btn1 was clicked
         ... do stuff

要回答您的第一个问题,您可以使用前面建议的标志或计数器,如果计数器 == 说 2,那么单击会执行您需要的任何操作。如果不是,那么您存储所Button代表的值以在第二次单击中进行比较

另一种方法是将它们设置在 a 中for loop,我假设您知道如何设置 aloop所以我会保持简短

for (int i=0; i<buttons.size(); i++)
{
     ...
     button[i].setOnClickListener(ActivityName.this);
}

@Override
public void onClick(View v)
{
    int id = v.getId();
}

确保你实施OnClickListener()

于 2013-05-13T18:48:09.703 回答