打地鼠案例

package com.example.day02;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

public class day_02 extends AppCompatActivity implements View.OnClickListener{

    private TextView z1,z2;
    private EditText z3;
    private Button k1,k2;
    private boolean flage = true;
    private int count = 0; //分数统计
    private ImageView[] imgs = new ImageView[12];
    private int[] imgIds= {R.id.d1,R.id.d2,R.id.d3,R.id.d4,R.id.d5,R.id.d6,R.id.d7,
            R.id.d8,R.id.d9,R.id.d10,R.id.d11,R.id.d12,};
    //    原来的洞的位置
    private int oldIndex = (int) (Math.random()*12);
    //    新的洞的位置
    private int newIndex = (int) (Math.random()*12);
    Handler handler = new Handler(){
        @Override
        public void handleMessage(@NonNull Message msg) {
            imgs[oldIndex].setBackgroundResource(R.drawable.yinhe);
//            随机数的范围:0~15 (目的:地鼠下一次出现的位置)
            newIndex = (int) (Math.random()*12);
            imgs[newIndex].setBackgroundResource(R.drawable.dishu);
            oldIndex = newIndex;
        }
    };
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            while (flage){
                try {
                    Thread.sleep(1000);
                    Message message = Message.obtain();
                    handler.sendMessage(message);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.day02);
        init();

        for (int i=0;i<imgs.length;i++){
            imgs[i].setOnClickListener(this);
        }
        k1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                flage=true;
                new day_02.yoo(10*1000,1000).start();
                Thread thread = new Thread(runnable);
                thread.start();
            }
        });
        k2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                flage=true;
                new day_02.yoo(10*1000,1000).start();
                Thread thread = new Thread(runnable);
                thread.start();
            }
        });

}
public void init(){
    z3 = findViewById(R.id.z3);
    z2 = findViewById(R.id.z2);
    k2 = findViewById(R.id.k2);
    k1 = findViewById(R.id.k1);
    for (int i=0;i<12;i++){
        imgs[i] = this.findViewById(imgIds[i]);
    }

}

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.k1:
//                游戏时间如果不想固定,可以自定义
//                long time = Long.parseLong(ed_time.getText().toString())*1000;
                new yoo(10*1000,1000).start();
                flage = true;
                Thread thread1 = new Thread(runnable);
                thread1.start();
                break;
            case R.id.k2:
                flage = true;
                new yoo(10*1000,1000).start();
                Thread thread2 = new Thread(runnable);
                thread2.start();
//                   分数为0
                count = 0;
                break;
            default:
                if (imgs[oldIndex].getId() == v.getId()){
                    count++;
                    z2.setText(""+count);
                }
        }
    }

    private class yoo extends CountDownTimer {

        public yoo(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        @Override
        public void onTick(long l) {
            long h = (l/1000/60/60);
            long m = l/1000%3600/60;
            long s = l/1000%3600%60;
            z3.setText("倒计时:"+h+":"+m+":"+s);
        }

        @Override
        public void onFinish() {
            flage = false;
            z3.setText("结束");
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值