Android实现简易版打地鼠

本文实例为大家分享了Android实现简易版打地鼠的具体代码,供大家参考,具体内容如下

目标效果:

1.activity_main.xml页面:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
 android:orientation="vertical"
 tools:context="com.example.weixu.eclipsemole.MainActivity">

 <LinearLayout
 android:orientation="horizontal"
 android:layout_width="match_parent"
 android:layout_height="0dp"
 android:layout_weight="1">
 <ImageView
  android:id="@+id/ivZeroZero"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />
 <ImageView
  android:id="@+id/ivZeroOne"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />
 <ImageView
  android:id="@+id/ivZeroTwo"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />
 <ImageView
  android:id="@+id/ivZeroThree"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />

 </LinearLayout>
 <LinearLayout
 android:orientation="horizontal"
 android:layout_width="match_parent"
 android:layout_height="0dp"
 android:layout_weight="1">
 <ImageView
  android:id="@+id/ivOneZero"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />
 <ImageView
  android:id="@+id/ivOneOne"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />
 <ImageView
  android:id="@+id/ivOneTwo"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />
 <ImageView
  android:id="@+id/ivOneThree"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />

 </LinearLayout>
 <LinearLayout
 android:orientation="horizontal"
 android:layout_width="match_parent"
 android:layout_height="0dp"
 android:layout_weight="1">
 <ImageView
  android:id="@+id/ivTwoZero"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />
 <ImageView
  android:id="@+id/ivTwoOne"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />
 <ImageView
  android:id="@+id/ivTwoTwo"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />
 <ImageView
  android:id="@+id/ivTwoThree"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />

 </LinearLayout>
 <LinearLayout
 android:orientation="horizontal"
 android:layout_width="match_parent"
 android:layout_height="0dp"
 android:layout_weight="1">
 <ImageView
  android:id="@+id/ivThreeZero"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />
 <ImageView
  android:id="@+id/ivThreeOne"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />
 <ImageView
  android:id="@+id/ivThreeTwo"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />
 <ImageView
  android:id="@+id/ivThreeThree"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:onClick="whackAMole"
  android:clickable="false"
  android:background="@drawable/emptyhole"
  android:layout_height="match_parent" />

 </LinearLayout>

 <LinearLayout
 android:orientation="horizontal"
 android:layout_width="match_parent"
 android:layout_height="60dp">
 <Button
  android:id="@+id/btStartWhackAMole"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:layout_height="match_parent"
  android:onClick="btnClick"
  android:text="开始"/>
 <TextView
  android:id="@+id/tvWhackAMoleScore"
  android:gravity="center"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:layout_height="match_parent"
  android:text="分数"/>
 <Button
  android:id="@+id/btStopWhackAMole"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:layout_height="match_parent"
  android:onClick="btnClick"
  android:text="结束"/>
 </LinearLayout>

</LinearLayout>

2.MainActivity.java页面;

package com.example.weixu.eclipsemole;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

 private ImageView[][] view=new ImageView[4][4];
 private Button btStartWhackAMole,btStopWhackAMole;
 private TextView tvWhackAMoleScore;

 private int time_s=1000; //难度的时间
 private int time=time_s; //地鼠出来时间
 private int score=0; //成绩,打地鼠个数
 private int num=0; //地鼠出来个数
 private int temp_i=0,temp_j=0; //记录上一次出现的地鼠在数组view中的下标
 private int flag=1; //默认为停止状态,0开始,1结束,2运行
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 init();
 }

 private void init() {
 view[0][0]= (ImageView) findViewById(R.id.ivZeroZero);
 view[0][1]= (ImageView) findViewById(R.id.ivZeroOne);
 view[0][2]= (ImageView) findViewById(R.id.ivZeroTwo);
 view[0][3]= (ImageView) findViewById(R.id.ivZeroThree);
 view[1][0]= (ImageView) findViewById(R.id.ivOneZero);
 view[1][1]= (ImageView) findViewById(R.id.ivOneOne);
 view[1][2]= (ImageView) findViewById(R.id.ivOneTwo);
 view[1][3]= (ImageView) findViewById(R.id.ivOneThree);
 view[2][0]= (ImageView) findViewById(R.id.ivTwoZero);
 view[2][1]= (ImageView) findViewById(R.id.ivTwoOne);
 view[2][2]= (ImageView) findViewById(R.id.ivTwoTwo);
 view[2][3]= (ImageView) findViewById(R.id.ivTwoThree);
 view[3][0]= (ImageView) findViewById(R.id.ivThreeZero);
 view[3][1]= (ImageView) findViewById(R.id.ivThreeOne);
 view[3][2]= (ImageView) findViewById(R.id.ivThreeTwo);
 view[3][3]= (ImageView) findViewById(R.id.ivThreeThree);
 btStartWhackAMole= (Button) findViewById(R.id.btStartWhackAMole);
 btStopWhackAMole= (Button) findViewById(R.id.btStopWhackAMole);
 tvWhackAMoleScore= (TextView) findViewById(R.id.tvWhackAMoleScore);
 btStartWhackAMole.setClickable(true);
 btStopWhackAMole.setClickable(false);
 }

 public void whackAMole(View view){
 view.setBackgroundResource(R.drawable.hit);
 view.setClickable(false);
 score++;
 time=time_s-score*10;
 tvWhackAMoleScore.setText("分数:"+score);
 }
 public void btnClick(View view){
 switch (view.getId()){
  case R.id.btStartWhackAMole:
  btStartWhackAMole.setClickable(false);
  btStopWhackAMole.setClickable(true);
  num=0;
  score=0;
  flag=0; //开始
  tvWhackAMoleScore.setText("分数:0");
  new MyAsyncTask().execute();
  break;
  case R.id.btStopWhackAMole:
  btStartWhackAMole.setClickable(true);
  btStopWhackAMole.setClickable(false);
  score=0;
  flag=1; //停止
  new MyAsyncTask().execute();
  break;
 }
 }
 class MyAsyncTask extends AsyncTask<String,Integer,String>{

 @Override
 protected String doInBackground(String... strings) {
  //进入运行状态
  while(flag!=1){
  flag=2;
  double r=Math.random();
  int i=((int)(r*10))%4;
  r=Math.random();
  int j=((int)(r*10))%4;
  try {
   Thread.sleep(time);
  }catch (InterruptedException e){
   e.printStackTrace();;
  }
  publishProgress(i,j);
  }
  return null;
 }

 @Override
 protected void onProgressUpdate(Integer... values) { //主线程
  if(flag==0){ //开始
  view[values[0]][values[1]].setBackgroundResource(R.drawable.emptyhole);
  }else if(flag==2){ //运行
  view[temp_i][temp_j].setBackgroundResource(R.drawable.emptyhole);
  view[temp_i][temp_j].setClickable(false); //上一次出现的设置为不能点击
  view[values[0]][values[1]].setBackgroundResource(R.drawable.show6);
  view[values[0]][values[1]].setClickable(true);
  num++;
  if((num-score)==5){
   flag=1;
   btStartWhackAMole.setClickable(true);
   Toast.makeText(MainActivity.this,"游戏结束",Toast.LENGTH_SHORT).show();
  }
  temp_i=values[0];
  temp_j=values[1];
  }else if(flag==1){
  view[values[0]][values[1]].setBackgroundResource(R.drawable.emptyhole);
  view[values[0]][values[1]].setClickable(false);
  }
 }
 }
}

是将四行四列的ImageView定义为一个二维数组,然后生成随机坐标进行改变图片。

源码:点击打开链接

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android使用Handler实现打地鼠游戏

    本文实例为大家分享了Android使用Handler实现打地鼠的具体代码,供大家参考,具体内容如下 1.实现效果 如下图所示: 2.代码实现 新建一个名为DiglettDemo的项目,activity_main.xml代码如下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/a

  • Android实现简易版打地鼠

    本文实例为大家分享了Android实现简易版打地鼠的具体代码,供大家参考,具体内容如下 目标效果: 1.activity_main.xml页面: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schema

  • Android实现简易版弹钢琴效果

    本文实例为大家分享了Android实现弹钢琴效果展示的具体代码,供大家参考,具体内容如下 目标效果: 1.drawable下新建button_selector.xml页面: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:

  • Android学习项目之简易版微信为例(二)

    1 概述 从这篇开始,正式进入简易版微信的开发.深入学习前,想谈谈个人对Android程序开发一些理解,不一定正确,只是自己的一点想法.Android程序开发不像我们在大学时候写C控制台程序那样,需要从main开始写代码逻辑,大部分逻辑控制代码都由自己来实现.事实上,Android已经为我们提供了一个程序运行的框架,我们只需要往框架中填入我们所需的内容即可,这里的内容主要是:四大组件--Activity.Service.ContentProvider.BroadCast.在这四大组件中,可以实现

  • Android学习项目之简易版微信为例(一)

    这是"Android学习之路"系列文章的开篇,可能会让大家有些失望--这篇文章中我们不介绍简易版微信的实现(不过不是标题党哦,我会在后续文章中一步步实现这个应用程序的).这里主要是和广大朋友们聊聊一个非Java程序员对Android操作系统的理解以及一个Android工程的目录结构,为进一步学习做准备. 1 缘起 智能手机的出现与普及为人们的生活.工作带来了极大的便利,我们可以用手机随时随地.随心所欲地购物.玩游戏.聊天.听音乐等等.一个个精心设计.体验良好的移动客户端应用,让用户们爱

  • Android使用ViewBinding的详细步骤(Kotlin简易版)

    ViewBinding 是什么 2020年的3月份 巨佬 JakeWharton 开源的 butterknife 被官宣 停止维护,在github 上 说明 Attention: This tool is now deprecated. Please switch to view binding. Existing versions will continue to work, obviously, but only critical bug fixes for integration with

  • Android开发简易音乐播放器

    这里介绍一个简易的音乐播放器,供大家参考,具体内容如下 效果图如下: 但是,由于这是一个简易版的音乐播放器,所播放的音乐只有一首,且被写死,但,操作却十分简单,方便理解! 这是代码的主要设计: 音乐主要存放在这一个文件中: 下面就来介绍各部分代码: activity-main.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://

  • DB2优化(简易版)

    正在看的db2教程是:DB2优化(简易版).预备-monitors ON db2 "update monitor switches using  lock ON sort ON bufferpool ON uow ON  table ON statement ON" 打开监视开关,获取需要的性能信息 最简单而最见成效的-Bufferpool 缓冲池是内存中的一块存储区域,用于临时读入和更改数据库页(包含表行或索引项).缓冲池的用途是为了提高数据库系统的性能.从内存访问数据要比从磁盘访问

  • IOS实现简易版的QQ下拉列表

    下面我们通过实例代码来一步步看怎么实现, 首先建立了两个模型类, 一个Friend, 一个FriendGroup类. 数据源用的本地的一个plist文件. plist文件中包含了FriendGroup的name,friends数组等属性. Friend.h 示例代码 #import <Foundation/Foundation.h> @interface Friend : NSObject @property (nonatomic, copy) NSString *name; @end Fri

  • C语言开发简易版扫雷小游戏

    前言: 想起来做这个是因为那时候某天知道了原来黑框框里面的光标是可以控制的,而且又经常听人说起这个,就锻炼一下好了. 之前就完成了那1.0的版本,现在想放上来分享却发现有蛮多问题的,而且最重要的是没什么注释[果然那时候太年轻]!现在看了也是被那时候的自己逗笑了,就修改了一些小bug,增加了算是详尽而清楚的注释,嗯,MSDN上面对各种函数的解释很详细的[又锻炼一下英语],顺便让开头和结尾的展示"动"了起来,就当作1.5的版本好了. 这个只是给出了一个实现的思路,其中肯定也有很多不合理的地

  • js 简易版滚动条实例(适用于移动端H5开发)

    废话不多说,直接上代码 <!DOCTYPE html> <html> <head> <title>滑动条</title> <meta charset="utf-8"> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="viewport" conte

随机推荐