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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国语对白做受xxxx | 经典三级四虎在线观看 | 精品国产乱码久久久久久免费流畅 | 帅老头恋帅老头同性tv | 草莓在深夜释放自己软件 | a级亚洲片精品久久久久久久 | 精品午夜久久福利大片免费 | 猫影视tv接口 | 四虎官网 | 亚洲免费闲人蜜桃 | 秋霞黄色网 | 成人国产精品一级毛片视频 | 国产午夜精品一区二区三区不卡 | 冰漪丰满大乳人体图片欣赏 | 日日插插 | 国产在线98福利播放视频免费 | 欧美精品亚洲精品日韩1818 | 四虎精品成人a在线观看 | 欧美日韩在线观看区一二 | 小草视频免费观看在线 | 接吻吃胸摸下面啪啪教程 | 成年男女免费视频 | 农村脱精光一级 | 羲义嫁密着中出交尾gvg794 | 99久久国产综合精品女不卡 | 国产青青草| 色综合天天综合网站中国 | 高h短篇校园1v1 | 九九热在线免费观看 | 久久亚洲精选 | 国产一级精品高清一级毛片 | 久久精品国产亚洲AV蜜臀 | 三上悠亚国产精品一区 | 欧美午夜寂寞影院安卓列表 | 亚洲天堂日韩在线 | 青草视频在线观看免费资源 | 扒开放荡老师裙子猛烈的进入 | 被老外操 | 白丝校花被扒开双腿喷水小说 | 十大网站免费货源 | 日产一区二区 |