当前位置: 首页 > 编程笔记 >

Android实现简易版打地鼠

洪浩
2023-03-14
本文向大家介绍Android实现简易版打地鼠,包括了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定义为一个二维数组,然后生成随机坐标进行改变图片。

源码:点击打开链接

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

 类似资料:
  • 本文向大家介绍javascript实现扫雷简易版,包括了javascript实现扫雷简易版的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了javascript实现扫雷简易版的具体代码,供大家参考,具体内容如下 使用截图 说明 这个完成的建议版本,所以没有插旗子,没有计时,就是最基本的原理实现,熟练的大佬30min就能完成 代码讲解 初始数据 初始化地图(CreateMap()) 用B

  • 本文向大家介绍Android实现简易闹钟功能,包括了Android实现简易闹钟功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android通过广播来实现闹钟的具体代码,供大家参考,具体内容如下 1.创建广播接收RepeatingAlarm.java 2.广播在Manifest.xml中配置: 3.通过代码设置一个闹钟 4.通过代码取消一个闹钟: 5.闹钟响是弹出的对化框并播放音

  • 本文向大家介绍Android Studio实现简易计算器,包括了Android Studio实现简易计算器的使用技巧和注意事项,需要的朋友参考一下 如果是制作简易计算器的话是基本没有难点的,供大家参考,具体内容如下 步骤是先写好界面布局,将按钮的布局、字号颜色啥的做好,再就是设置监听器。 使用了NoTitleBar的主题 代码如下: activity_main里关于界面的代码: Mainactiv

  • 本文向大家介绍python实现简易通讯录修改版,包括了python实现简易通讯录修改版的使用技巧和注意事项,需要的朋友参考一下 描述: 上一篇博客我写了一个简单的通讯录,但是还是觉得不够完美: 需要输入ID,虽然ID是主键,但是没有实现自增功能; 忘记加电话号码了; 如果插入用户名相同,则后续的查、改、删功能受到影响; 所以,我这个修改版主要修正了以上三点缺陷。具体如下 将用户ID设置为自增字段,

  • 本文向大家介绍js实现贪吃蛇游戏(简易版),包括了js实现贪吃蛇游戏(简易版)的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 直接开始 效果图: 项目结构:图片自己找的 1.html 2.area.js 3.config.js 4.food.js 5.init.js 6.move.js 7.score.js 8.snake.js

  • 本文向大家介绍利用C语言实现简易版扫雷,包括了利用C语言实现简易版扫雷的使用技巧和注意事项,需要的朋友参考一下 我和我的父亲都是扫雷的狂热粉,小时候我常常因为技术不好而被父亲嘲笑,那么今天我要来做一个简易版扫雷,回头也给他玩一玩。 首先我们要构建好雷盘的样子,我们理所当然想到利用二维数组。那么请注意:因为我们每一次随机生成的雷盘不能展示给用户,所以显示盘与雷盘要分开,那么我们在这里要用到两个二维数

  • 本文向大家介绍C语言实现扫雷游戏简易版,包括了C语言实现扫雷游戏简易版的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C语言实现扫雷游戏的简易版,供大家参考,具体内容如下 game.h game.c main.c 更多有趣的经典小游戏实现专题,分享给大家: C++经典小游戏汇总 python经典小游戏汇总 python俄罗斯方块游戏集合 JavaScript经典游戏 玩不停 java

  • 本文向大家介绍vue实现商城上货组件简易版,包括了vue实现商城上货组件简易版的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了vue实现商城上货组件的具体代码,供大家参考,具体内容如下 0、结果放前面 点击查看效果 带脚手架的源码 加个Star后,fork下来。 然后在控制台,先输入npm install安装依赖,再输入npm run dev运行查看效果 1、先列需求 一切开发都是基