Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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
Java 简单记忆游戏卡Android Studio_Java_Android - Fatal编程技术网

Java 简单记忆游戏卡Android Studio

Java 简单记忆游戏卡Android Studio,java,android,Java,Android,这是一个简单的记忆卡游戏。它的目的是寻找相同的卡。代码计算尝试次数。在再次翻转和游戏开始之前,我的卡如何在5秒的特定时间内解锁。这是我的密码: private static Object lock = new Object(); int turns; private TableLayout mainTable; private UpdateCardsHandler handler; @Override public void onCreate(Bundle savedInstanceStat

这是一个简单的记忆卡游戏。它的目的是寻找相同的卡。代码计算尝试次数。在再次翻转和游戏开始之前,我的卡如何在5秒的特定时间内解锁。这是我的密码:

private static Object lock = new Object();

int turns;
private TableLayout mainTable;
private UpdateCardsHandler handler;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);



    handler = new UpdateCardsHandler();
    loadImages();
    setContentView(R.layout.main);


   backImage =  getResources().getDrawable(R.drawable.icon);

   /*
   ((Button)findViewById(R.id.ButtonNew)).setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        newGame();

    }


});*/

   buttonListener = new ButtonListener();

    mainTable = (TableLayout)findViewById(R.id.TableLayout03);


    context  = mainTable.getContext();

     Spinner s = (Spinner) findViewById(R.id.Spinner01);
        ArrayAdapter adapter = ArrayAdapter.createFromResource(
                this, R.array.type, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s.setAdapter(adapter);


        s.setOnItemSelectedListener(new OnItemSelectedListener(){

          @Override
          public void onItemSelected(
                  android.widget.AdapterView<?> arg0,
                  View arg1, int pos, long arg3){

              ((Spinner) findViewById(R.id.Spinner01)).setSelection(0);

            int x,y;

            switch (pos) {
            case 1:
                x=3;y=4;
                break;

            default:
                return;
            }
            newGame(x,y);

        }


        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }

    });
}

private void newGame(int c, int r) {
    ROW_COUNT = r;
    COL_COUNT = c;

    cards = new int [COL_COUNT] [ROW_COUNT];


    mainTable.removeView(findViewById(R.id.TableRow01));
    mainTable.removeView(findViewById(R.id.TableRow02));

    TableRow tr = ((TableRow)findViewById(R.id.TableRow03));
    tr.removeAllViews();

    mainTable = new TableLayout(context);
    tr.addView(mainTable);

     for (int y = 0; y < ROW_COUNT; y++) {
         mainTable.addView(createRow(y));
      }

     firstCard=null;
     loadCards();

     turns=0;
     ((TextView)findViewById(R.id.tv1)).setText("Tries: "+turns);


}

private void loadImages() {
    images = new ArrayList<Drawable>();

    images.add(getResources().getDrawable(R.drawable.card1));
    images.add(getResources().getDrawable(R.drawable.card2));
    images.add(getResources().getDrawable(R.drawable.card3));
    images.add(getResources().getDrawable(R.drawable.card4));
    images.add(getResources().getDrawable(R.drawable.card5));
    images.add(getResources().getDrawable(R.drawable.card6));
    images.add(getResources().getDrawable(R.drawable.card7));
    images.add(getResources().getDrawable(R.drawable.card8));
    images.add(getResources().getDrawable(R.drawable.card9));
    images.add(getResources().getDrawable(R.drawable.card10));
    images.add(getResources().getDrawable(R.drawable.card11));
    images.add(getResources().getDrawable(R.drawable.card12));
    images.add(getResources().getDrawable(R.drawable.card13));
    images.add(getResources().getDrawable(R.drawable.card14));
    images.add(getResources().getDrawable(R.drawable.card15));
    images.add(getResources().getDrawable(R.drawable.card16));


}

private void loadCards(){
    try{
        int size = ROW_COUNT*COL_COUNT;

        Log.i("loadCards()","size=" + size);

        ArrayList<Integer> list = new ArrayList<Integer>();

        for(int i=0;i<size;i++){
            list.add(new Integer(i));
        }


        Random r = new Random();

        for(int i=size-1;i>=0;i--){
            int t=0;

            if(i>0){
                t = r.nextInt(i);
            }

            t=list.remove(t).intValue();
            cards[i%COL_COUNT][i/COL_COUNT]=t%(size/2);

            Log.i("loadCards()", "card["+(i%COL_COUNT)+
                    "]["+(i/COL_COUNT)+"]=" + cards[i%COL_COUNT][i/COL_COUNT]);
        }
    }
    catch (Exception e) {
        Log.e("loadCards()", e+"");
    }

}

private TableRow createRow(int y){
     TableRow row = new TableRow(context);
     row.setHorizontalGravity(Gravity.CENTER);

     for (int x = 0; x < COL_COUNT; x++) {
             row.addView(createImageButton(x,y));
     }
     return row;
}

private View createImageButton(int x, int y){
    Button button = new Button(context);
    button.setBackgroundDrawable(backImage);
    button.setId(100*x+y);
    button.setOnClickListener(buttonListener);
    return button;
}

class ButtonListener implements OnClickListener {

    @Override
    public void onClick(View v) {

        synchronized (lock) {
            if(firstCard!=null && seconedCard != null){
                return;
            }
            int id = v.getId();
            int x = id/100;
            int y = id%100;
            turnCard((Button)v,x,y);
        }

    }

    private void turnCard(Button button,int x, int y) {
        button.setBackgroundDrawable(images.get(cards[x][y]));

        if(firstCard==null){
            firstCard = new Card(button,x,y);
        }
        else{

            if(firstCard.x == x && firstCard.y == y){
                //the user pressed the same card
                Toast.makeText(getApplicationContext(), "CORRECT :D", Toast.LENGTH_SHORT).show();
                return;
            }


            seconedCard = new Card(button,x,y);

            turns++;
            ((TextView)findViewById(R.id.tv1)).setText("Tries: "+turns);


            TimerTask tt = new TimerTask() {

                @Override
                public void run() {
                    try{
                        synchronized (lock) {
                          handler.sendEmptyMessage(0);
                        }
                    }
                    catch (Exception e) {
                        Log.e("E1", e.getMessage());
                    }
                }
            };

              Timer t = new Timer(false);
                t.schedule(tt, 1300);
        }


       }


}

class UpdateCardsHandler extends Handler{

    @Override
    public void handleMessage(Message msg) {
        synchronized (lock) {
            checkCards();
        }
    }
     public void checkCards(){
            if(cards[seconedCard.x][seconedCard.y] == cards[firstCard.x][firstCard.y]){
                firstCard.button.setVisibility(View.INVISIBLE);
                seconedCard.button.setVisibility(View.INVISIBLE);
            }
            else {
                seconedCard.button.setBackgroundDrawable(backImage);
                firstCard.button.setBackgroundDrawable(backImage);
            }

            firstCard=null;
            seconedCard=null;
        }
}
private static Object lock=new Object();
整数圈;
专用表布局主表;
私有UpdateCardsHandler处理程序;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
handler=new UpdateCardsHandler();
loadImages();
setContentView(R.layout.main);
backImage=getResources().getDrawable(R.drawable.icon);
/*
((按钮)findViewById(R.id.ButtonNew)).setOnClickListener(新OnClickListener(){
@凌驾
公共void onClick(视图v){
新游戏();
}
});*/
buttonListener=新建buttonListener();
mainTable=(TableLayout)findViewById(R.id.TableLayout03);
context=mainTable.getContext();
微调器s=(微调器)findViewById(R.id.Spinner01);
ArrayAdapter=ArrayAdapter.createFromResource(
这个,R.array.type,android.R.layout.simple\u微调器\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
s、 设置适配器(适配器);
s、 setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
公营部门选举(
android.widget.AdapterView arg0,
视图arg1,内部位置,长arg3){
((微调器)findViewById(R.id.Spinner01)).setSelection(0);
int x,y;
开关(pos){
案例1:
x=3;y=4;
打破
违约:
返回;
}
newGame(x,y);
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
});
}
私有void newGame(int c,int r){
行计数=r;
COL_计数=c;
卡片=新整数[列计数][行计数];
mainTable.removeView(findviewbyd(R.id.TableRow01));
mainTable.removeView(findviewbyd(R.id.TableRow02));
TableRow tr=((TableRow)findViewById(R.id.TableRow03));
tr.removeallview();
mainTable=新的表格布局(上下文);
tr.addView(主表);
对于(int y=0;y0){
t=r.nextInt(i);
}
t=list.remove(t).intValue();
卡片[i%列数][i/i列数]=t%(大小/2);
Log.i(“loadCards()”,“card[”+(i%COL\u计数)+
“][”+(i/COLU计数)+“]=”+卡片[i%COLU计数][i/COLU计数]);
}
}
捕获(例外e){
Log.e(“loadCards()”,e+);
}
}
私有TableRow createRow(整数y){
TableRow row=新的TableRow(上下文);
设置水平重力(重力中心);
对于(int x=0;x