一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - Android使用Handler實現打地鼠游戲

Android使用Handler實現打地鼠游戲

2022-03-01 15:40輕擾時光 Android

這篇文章主要為大家詳細介紹了Android使用Handler實現打地鼠游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Android使用Handler實現打地鼠的具體代碼,供大家參考,具體內容如下

1.實現效果

如下圖所示:

Android使用Handler實現打地鼠游戲

2.代碼實現

新建一個名為DiglettDemo的項目,activity_main.xml代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".MainActivity">
 
 <ImageView
  android:id="@+id/imageView"
  android:layout_width="80dp"
  android:layout_height="80dp"
  android:src="@drawable/diglett"
  android:visibility="gone" />
 
 <Button
  android:id="@+id/button"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignParentBottom="true"
  android:layout_centerHorizontal="true"
  android:layout_marginBottom="45dp"
  android:text="點擊開始" />
 
 <TextView
  android:id="@+id/textView"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignParentTop="true"
  android:layout_centerHorizontal="true"
  android:layout_marginTop="20dp"
  android:textColor="#ff0000"
  android:textSize="20sp" />
</RelativeLayout>

MainActivity.class代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
public class MainActivity extends AppCompatActivity implements View.OnClickListener, View.OnTouchListener {
 
 public static final int CODE = 999;
 public static final int RANDOM_NUMBER = 500;
 private TextView mTextView;
 private Button mButton;
 private ImageView mImageView;
 
 /**
  * 定義地鼠的位置
  */
 public int[][] mPosition = new int[][]{
   {342, 180}, {432, 880}, {521, 256}, {429, 780},
   {456, 976}, {145, 665}, {123, 678}, {564, 567},
 };
 
 private int mTotalCount, mSuccessCount = 0;
 public static final int MAX_COUNT = 10;
 
 private MyHandler mMyHandler = new MyHandler(this);
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  initView();
 }
 
 private void initView() {
  mTextView = findViewById(R.id.textView);
  mButton = findViewById(R.id.button);
  mImageView = findViewById(R.id.imageView);
  mButton.setOnClickListener(this);
  mImageView.setOnTouchListener(this);
 }
 
 @Override
 public void onClick(View v) {
  switch (v.getId()) {
   case R.id.button:
    start();
    break;
  }
 }
 
 private void start() {
  mTextView.setText("游戲開始了!");
  mButton.setText("游戲中...");
  mButton.setEnabled(false);
  //發送消息
  next(RANDOM_NUMBER);
 }
 
 private void next(int delayTime) {
  //產生一個0——數組長度的隨機數
  int positon = new Random().nextInt(mPosition.length);
  Message message = Message.obtain();
  message.what = CODE;
  message.arg1 = positon;
  mMyHandler.sendMessageDelayed(message, delayTime);
  //每發送一次消息,總數就加一
  mTotalCount++;
 }
 
 /**
  * 圖片點擊事件
  * @param v
  * @param event
  * @return
  */
 @Override
 public boolean onTouch(View v, MotionEvent event) {
  //每次觸碰到地鼠,則地鼠消失,打到地鼠的數量加一
  v.setVisibility(View.GONE);
  mSuccessCount++;
  mTextView.setText("打到了" + mSuccessCount + "只,共" + MAX_COUNT + "只");
  return false;
 }
 
 public static class MyHandler extends Handler {
  private final WeakReference<MainActivity> mWeakReference;
 
  public MyHandler(MainActivity activity) {
   this.mWeakReference = new WeakReference<>(activity);
  }
 
  @Override
  public void handleMessage(Message msg) {
   MainActivity activity = mWeakReference.get();
   super.handleMessage(msg);
   switch (msg.what) {
    case CODE:
     if (activity.mTotalCount > MAX_COUNT) {
      //游戲結束,初始化游戲
      activity.clear();
      Toast.makeText(activity, "地鼠打完了!", Toast.LENGTH_SHORT).show();
      return;
     } else {
      int position = msg.arg1;
      activity.mImageView.setX(activity.mPosition[position][0]);
      activity.mImageView.setY(activity.mPosition[position][1]);
      activity.mImageView.setVisibility(View.VISIBLE);
      //在隨機位置上顯示地鼠之后,再次發送消息
      int randomTime = new Random().nextInt(RANDOM_NUMBER) + RANDOM_NUMBER;
      activity.next(randomTime);
     }
     break;
   }
  }
 }
 
 /**
  * 游戲結束,初始化游戲
  */
 private void clear() {
  mTotalCount = 0;
  mSuccessCount = 0;
  mImageView.setVisibility(View.GONE);
  mButton.setText("點擊開始");
  mButton.setEnabled(true);
 }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/qingjianduoyun/article/details/80634068

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品综合久久久久久88小说 | 国产伦精品一区二区三区免费迷 | 日韩资源在线 | 韩国三级在线高速影院 | 99精品视频免费 | 青青青青青国产费线在线观看 | brazzersxxx欧美 | 亚洲精品一区二区久久久久 | 精品播放 | 精品一久久香蕉国产线看观 | 青苹果乐园影院免费观看完整版 | 美国女网址www呦女 美国复古性经典xxxxx | 成人国产第一区在线观看 | 男女男在线精品网站免费观看 | 99热这里只有精品免费 | 娇小XXXXX第一次出血 | 国产成人亚洲综合91精品555 | yellow视频在线观看免费 | 欧美日韩亚洲另类人人澡 | 国产情侣视频观看 | 娇妻终于接受了3p的调教 | 70老妇牲交毛片 | 9久久9久久精品 | 亚洲精品老司机福利在线播放 | 欧美日韩导航 | 精品久久免费观看 | 韩国三级年轻的小婊孑 | 国产精品福利在线观看入口 | 91大神第九部红酒气质女 | 国产成人精品日本亚洲网站 | 国产精品久久久久久久久久久威 | 国产人va在线 | 国内精品久久久久影院网站 | 香蕉成人国产精品免费看网站 | 趴好撅高打屁股sp调教h | 精品在线播放视频 | 西西人体大胆啪啪私拍色约约 | 亚洲国产婷婷俺也色综合 | 99精品国产成人一区二区 | 色综合中文字幕天天在线 | 国产精品久久久精品日日 |