一、效果运行图

二、涉及知识点
1、帧式布局(FrameLayout)
2、标签(ImageView)
3、线程(Thread)
4、异步消息处理器(Handler)
三、实现步骤
1、创建安卓应用Hamster


2、导入素材(背景图片(background),地鼠图片(mouse))


3、主布局文件activity_main.xml
打开res文件夹下布局文件夹(layout)再打开该目录下的activity_main.xml文件;

首先将默认添加的布局管理器和TextView组建删除,然后添加一个帧式布局管理器,最后在该布局管理器中添加一个用于显示地鼠的ImageView组件,并设置其显示一张地鼠图片,关键代码如下:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:background="@mipmap/background"tools:context=".MainActivity"><ImageViewandroid:id="@+id/iv1"android:layout_width="150px"android:layout_height="150px"android:src="@mipmap/mouse"/></FrameLayout>

4、主界面MainActivity
打开java文件夹下的com.example.admin.hamster再打开MainActivity文件在文件中编写事件代码

在该MainActivity中,声明程序中所需的成员变量,具体代码如下:

private int count;//记录打到了几只地鼠private ImageView mouse;//声明一个ImageView对象private Handler handler;//声明一个Handler对象public int[][] position=new int[][]{{131,352},{424,549},{521,256},{243,496},{619,345},{132,696},{572,758}};//创建一个表示地鼠位置的二维数组

获取布局管理器中添加的ImageView组件,并为该组件添加触摸监听器,在重写的onTouch()方法中,首先设置地鼠不显示,然后将count的值加1,再通过消息提示框显示打到了几只地鼠,具体代码如下

 mouse=findViewById(R.id.iv1);//获取ImageView对象//触摸监听事件mouse.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {v.setVisibility(View.INVISIBLE);//设置地鼠不显示count++;Toast.makeText(MainActivity.this,"打到["+count+"]只地鼠!",Toast.LENGTH_SHORT).show();//显示消息提示框return false;}});

创建一个Handler对象,在重写的handleMessage()方法中,首先定义一个记录地鼠位置索引值的变量,然后使用if语句根据消息标识判断是否为指定的消息,如果是,则获取消息中保存的地鼠位置的索引值,并设置地鼠在指定位置显示,具体代码如下:

 handler=new Handler(){@Overridepublic void handleMessage(Message msg) {int index=0;if (msg.what==0x001){index=msg.arg1;//获取位置索引值mouse.setX(position[index][0]);//设置X轴位置mouse.setY(position[index][1]);//设置Y轴位置mouse.setVisibility(View.VISIBLE);//设置地鼠显示}super.handleMessage(msg);}};

创建并开启一个新线程,在重写的run()方法中,创建一个记录地鼠位置的索引值的变量,并实现一个循环,在该循环中,首先生成一个随机数,并获取一个Message对象,然后将生成的随机数作为地鼠位置的索引值保存到Message对象中,再为该Message设置一个消息标识并发送消息,最后让线程休眠一段时间(该时间随机数产生),具体代码如下:

 Thread t=new Thread(new Runnable() {@Overridepublic void run() {int index=0;//记录地鼠位置的索引值while (!Thread.currentThread().isInterrupted()){index=new Random().nextInt(position.length);//产生一个二维数组长度以内的随机数Message m=handler.obtainMessage();//获得消息m.what=0x001;//消息标识m.arg1=index;//保存地鼠位置的索引值handler.sendMessage(m);//发送信息try {//抛出异常Thread.sleep(new Random().nextInt(1000)+1000);//线程睡眠} catch (InterruptedException e) {e.printStackTrace();}}}});t.start();//开启线程

安卓小游戏——打地鼠相关推荐

  1. 安卓小游戏:小板弹球

    安卓小游戏:小板弹球 前言 这个是通过自定义View实现小游戏的第三篇,是小时候玩的那种五块钱的游戏机上的,和俄罗斯方块很像,小时候觉得很有意思,就模仿了一下. 需求 这里的逻辑就是板能把球弹起来,球 ...

  2. 安卓小游戏:飞机大战

    安卓小游戏:飞机大战 前言 前面写了十二篇自定义view的博客,说实话写的还是有点无聊了,最近调整了一下,觉得还是要对开发有热情,就写了点小游戏,现在抽时间把博客也写一写,希望读者喜欢. 需求 这里就 ...

  3. 安卓小游戏:俄罗斯方块

    安卓小游戏:俄罗斯方块 前言 最近用安卓自定义view写了下飞机大战.贪吃蛇.小板弹球三个游戏,还是比较简单的,这几天又把俄罗斯方块还原了一下,写了一天,又摸鱼调试了两天,逻辑不是很难,但是要理清.处 ...

  4. 我是大富翁安卓小游戏开发成果

    <我是大富翁>安卓小游戏!休闲单机,挖矿淘金小游戏! <我是大富翁>标签: 大富翁 大富豪 儿童游戏 女生 抓金子 休闲 单机游戏 娱乐 一款休闲与益智于一体的单机小游戏!免费 ...

  5. unity2D小游戏打地鼠

    打地鼠小游戏 一.制作流程 1.素材导入 创建工程文件后,创建一个名为sprites的文件夹,将准备好的图片素材直接拖入文件夹中. 2.创建游戏场景 素材图片Texture Type参数设置为Spri ...

  6. 用 Java 做个“你画手机猜”的安卓小游戏

    本文适合有 Java 基础的人群 作者:DJL-Lanking HelloGitHub 推出的<讲解开源项目>系列.有幸邀请到了亚马逊 + Apache 的工程师:Lanking( htt ...

  7. android简单小游戏——打地鼠

    这些天研究了一下View中一些函数的使用,以及一些基本游戏功能的实现,做了一款打地鼠的小游戏,带有笔者写时的丰富注释,初学者可以下来玩玩,学习学习,大神勿喷...小弟也是在边学别人的代码边写的,虽然有 ...

  8. C#课程设计 ——小游戏打地鼠

    课程设计说明书 代码(32条消息) C#课程设计-打地鼠小游戏-C#文档类资源-CSDN文库 设计题目: 打地鼠小游戏 院(系) 软件工程学院 专业年级 19级计科1班 学生姓名 学号 同组同学姓名 ...

  9. 用GDX写个安卓小游戏

    最近在看曼达洛人,突然想用小尤达写个小游戏,但是没找到好的素材,又没打算花太多时间,最后就只能变成这个干巴巴的小飞机了,就是简单上手了一下GDX. 配置 上https://libgdx.badlogi ...

最新文章

  1. 去除RNA-seq数据批次效应
  2. Linux Top 命令详解,用于日常运维监控
  3. c mysql 连接实例_c连接mysql数据库实例
  4. 关于exchange2003使用owa修改用户口令
  5. OpenCV isContinuous()连续存储的问题
  6. c++ Oracle OCCI 编程
  7. 为什么感觉农村人在城里工作后,大部分都变了?
  8. azure_Azure Analysis Services中的动态分区(表格)
  9. Excel用户如何学习数据分析语言DAX?
  10. TABLE与DIV的取舍
  11. FirstApp,iphone开发学习总结1,UIview添加UIimage
  12. 2020年度博客之星发榜了,第一次参加,第70名,感谢给我投票的老铁们,2021继续努力!
  13. 浅谈PM(项目管理)
  14. pdf关键字高亮 java_Java PDF查找和高亮文本-Go语言中文社区
  15. 8.以微型计算机为中心,全国网络教育统一考试《计算机应用基础》复习要点
  16. K_A08_004 基于 STM32等单片机驱动MX1919模块按键控制直流电机正反转加减速启停
  17. 三维地面激光扫描行业调研报告 - 市场现状分析与发展前景预测
  18. xp计算机硬盘东西不显示,WinXP系统电脑找不到硬盘怎么办 WinXP系统找不到硬盘的原因及解决方法...
  19. 共享汽车倒下了,为何我感觉心中的石头终于落地?
  20. 韩国三星集团会长转入普通病房 媒体曾称其已死

热门文章

  1. ICLR 2022 | 基于扩散模型(DDPM)的语义分割
  2. 【1404】我家的门牌号
  3. 计算机发展对自动化影响,我多对自动化与计算机关系的看法.doc
  4. DFIG双馈异步式风力发电系统的低电压穿越(LVRT)控制算法的仿真模型,基于Crowbar电路(转子串电阻)和Chopper电路
  5. 武汉理工大学《软件工程》复习总括一
  6. [bzoj2534]Uva10829L-gap字符串
  7. 在iOS上进行WebP编码是一种怎样的体验?
  8. 访问一个网站都经过哪些步骤_轻松访问电子商务网站的10个简单步骤
  9. 乐队设备---均衡器的学习和使用
  10. 移动app测试的多样性_web测试与移动App测试的常见测试要点