欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android实现简易版打地鼠

程序员文章站 2023-10-22 17:34:10
本文实例为大家分享了android实现简易版打地鼠的具体代码,供大家参考,具体内容如下 目标效果: 1.activity_main.xml页面: <...

本文实例为大家分享了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定义为一个二维数组,然后生成随机坐标进行改变图片。

源码:点击打开链接

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