Android实现汤姆猫小游戏

Android 安卓益智休闲源码 Android 安卓益智休闲源码 分享104个益智休闲PHP源码,总有一款适合你 阅读详情

转载自:https://blog.youkuaiyun.com/xch_yang/article/details/103213597

相信好多人都玩过汤姆猫这个小游戏,要做这个小游戏其实也不难,这不,现写一个,先看效果演示。
tom.gif

目前实现的主要功能点包括以下两部分:

  • 戳 tom 的各个身体部位它会做出相应反馈,包括动作和声音。
  • 往右滑动屏幕的时候另外一只黄色的小狗跳出来搞怪,并发出怪声。

鉴于我不知道这只黄色的狗子叫啥名字,后面的内容里我就称呼它为小黄吧。效果图听不见声音感觉有点无趣,所以我打了个安装包,想安装体验的可以扫码下载。
qr_tomcat.png

思路分析

我们先来分析一下这个小游戏的实现思路,首先是动作效果,不管是汤姆还是小黄所做的动作,其实就是一个逐帧动画,也就是将动画拆分为帧的形式,每一帧也就是一张图片,然后按序播放一组预先定义好的图片,就像播放一卷电影一样。声音效果就很简单了,在动作发生时播放音效即可。
这篇文章就分两部分讲吧,一部分是用手指戳汤姆,另一部分是小黄出来搞怪。



一、戳汤姆
1. 确定点击位置

我们点击汤姆时其实是点击了一些透明的按钮,透明效果只需要给控件alpha属性设置为0即可,如下图所示我们分别给汤姆的脚,肚子,尾巴和左右脸放置了按钮点击。
layout.png

2. 逐帧动画

逐帧动画就是加载一系列可绘制资源来创建动画,需要在xml文件的 animation-list 元素中使用 item 子元素定义动画的全部帧,并指定各帧的持续时间即可。
第一步
在/res/drawable目录下,定义一个逐帧动画的xml资源文件,如下

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/breath_0001"
        android:duration="200"/>
    <item
        android:drawable="@drawable/breath_0002"
        android:duration="200"/>
    <item
        android:drawable="@drawable/breath_0003"
        android:duration="200"/>
    <item
        android:drawable="@drawable/breath_0004"
        android:duration="200"/>
    <item
        android:drawable="@drawable/breath_0005"
        android:duration="200"/>
    <item
        android:drawable="@drawable/breath_0006"
        android:duration="200"/>
</animation-list>

这里每一个item就是一帧,drawable设置动画图片资源,duration设置一帧持续的时间(ms)。

第二步
播放逐帧动画,如下

layout_animation.setBackgroundResource(R.drawable.breath);
AnimationDrawable anim = (AnimationDrawable) layout_animation.getBackground();
anim.setOneShot(true);//是否播放一次
if (anim.isRunning()) {//如果动画已经播放过
    anim.stop();//停止动画
}
//启动动画
anim.start();

这里很简单,直接使用AnimationDrawable类的start()方法即可启动逐帧动画,另外通过setOneShot()方法可以设置是否循环一次,为true将循环一次,然后停止并保持最后一帧。如果设置为false,则动画将一直循环。


3. 播放声音

Android中除了MediaPlayer播放音频之外,还提供了SoundPool来播放音效,SoundPool使用音效池的概念来管理多个短促的音效,适用于短且对反应速度比较高的情况(游戏音效或按键声等),所以我们选择SoundPool来给汤姆和小黄加音效。

(1) 实例化SoundPool

SoundPool pool = new SoundPool(3, AudioManager.STREAM_MUSIC, 1);//同时播放最大数量 类型 音质

可以看到SoundPool的构造函数中有三个参数,SoundPool(int maxStreams, int streamType, int srcQuality),各参数如下

  • 参数maxStreams:指定支持多少个声音,也就是同时播放最大数量。
  • 参数streamType:指定声音类型。
  • 参数srcQuality:指定声音品质。

(2) 加载声音
得到SoundPool对象之后,就可调用SoundPool的load()方法来加载声音。load()方法有四个重载,返回值都是该声音的ID,如下

//1.通过资源ID加载声音。
int load(Context context, int resld, int priority)
//2.通过FileDescriptor加载 offset开始、长度为length的声音。
int load(FileDescriptor fd, long offset, long length, int priority)
//3.通过一个AssetFileDescriptor对象所对应的文件中加载声音
int load(AssetFileDescriptor afd, int priority)
//4.通过指定的路径加载。
int load(String path, int priority)

我们把声音文件放在res下的raw文件中,所以使用第一个重载load()方法,第一个参数是上下文,第二个参数就是我们的音频资源ID,第三个参数是声音的优先级。如下代码所示:

pool.load(this, R.raw.fart003_11025, 1);

(3) 播放声音
SoundPool提供了play()方法播放指定声音,有六个参数,如下:

int play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate);
  • 参数soundID:指定播放哪个声音,也就是上面load()方法返回的声音ID。
  • 参数leftVolume、rightVolume:指定左、右声道的音量。
  • 参数priority:指定播放声音的优先级,数值越大,优先级越高。
  • 参数loop:指定是否循环,0:不循环,-1:循环,其他值表示要重复播放的次数。
  • 参数rate:指定播放的比率,数值可从0.5到2, 1为正常比率。

当需要播放声音时,则调用play()方法即可,如下代码所示:

pool.play(soundId, 1, 1, 1, 0, 1);//声音id,左声道,右声道,优先级,循环,速率

二、小黄搞怪

这里我们设定了右滑屏幕小黄跑出来搞怪,其原理和戳汤姆是一样的,同样是播放逐帧动画和播放声音,只是我们触发这个事件的方式不同,当然你也可以写成戳他眼睛鼻子耳朵或者左滑下滑上滑让小黄出来搞怪,这里我就只介绍一下监听手势滑动的方法。
监听手势滑动可以利用Activity的ontouchEvent()方法或手势滑动监听器OnGestureListener等,咱们的重点在于讲解这个游戏的实现原理,这里我就只介绍第一种监听了。

首先手指滑动的时候会先按下,滑到另一个地方再抬起,我们就可以根据按下的坐标和抬起的坐标算出是往哪一个方向滑动了,如下代码所示。

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            //当手指按下的时候
            x1 = event.getX();
            y1 = event.getY();
        }
        if (event.getAction() == MotionEvent.ACTION_UP) {
            //当手指离开的时候
            x2 = event.getX();
            y2 = event.getY();
            if (x1 - x2 > 50) {//向左滑

            } else if (x2 - x1 > 50) {//向右滑
                //小黄开始出来搞怪
            }
        }
        return super.onTouchEvent(event);
    }


最后附上源码地址:https://download.youkuaiyun.com/download/xch_yang/85493956



分享177个安卓游戏源码,总有一款适合你 阅读详情

相关推荐

现代H5游戏开发实战:从《汤姆猫荒野派对》看跨平台休闲游戏技术架构

WebGL与Canvas渲染是现代网页游戏图形技术的核心基础,它们为浏览器环境提供了硬件加速的2D/3D图形渲染能力。其原理是通过JavaScript API直接操作GPU,实现高效的图形绘制与特效处理。这项技术的价值在于打破了传统网页游戏的表现力限制,使得在浏览器中运行复杂游戏成为可能,极大地降低了开发者的跨平台部署成本。在应用场景上,它特别适合休闲游戏、教育应用和互动营销等需要快速传播和跨设备访问的领域。以《汤姆猫荒野派对》为代表的成功案例,展示了如何通过Cocos Creator引擎和Draw Cal

weixin_34342207的博客 299

android右滑动退出_Android实现汤姆猫小游戏

相信好多人都玩过汤姆猫这个小游戏,要做这个小游戏其实也不难,这不,现写一个,先看效果演示。tom.gif目前实现的主要功能点包括以下两部分:戳 tom 的各个身体部位它会做出相应反馈,包括动作和声音。往右滑动屏幕的时候另外一只黄色的小狗跳出来搞怪,并发出怪声。鉴于我不知道这只黄色的狗子叫啥名字,后面的内容里我就称呼它为小黄吧。思路分析我们先来分析一下这个小游戏的实现思路,首先是动作效果,不管是汤姆...

weixin_39994438的博客 623

汤姆猫源码

包含汤姆猫源码、图片素材、button素材,demo里把关键方法都写了,做了一个简单的示例,如果需要丰富内容或者练手的同学可以根据代码注释进行编写。

实在没忍住还是对你出手了-Tom猫源码结构

Tomcat源码结构介绍 在分析Tomcat源码之前,我们先来看下Tomcat源码的结构组成,这样会更加的有利于我们更好的来分析源码。 1.项目源码结构 我们先从源码结构开始。Tomcat 服务器相关的代码在 java 文件夹下面,后面我们在进入这个文件夹去分析: 之前如何手动在Tomcat中部署过项目的话,这块应该会比较清楚点。 2.Tomcat源码结构 Tomcat 源码位于 java 文件夹下面。这个java文件夹中的每个包的作用,我们简单的来介绍下,后面在分析核心源码的时候会重点讲解。 我们可.

波波烤鸭的博客 2354

会说话的汤姆猫Androidstudio4源代码

会说话的汤姆猫安卓源代码,在androidstudio4下重新编译通过,可以作为练手的项目,目前还没有很复杂的功能

基于pygame的汤姆猫

汤姆猫

会动的汤姆猫游戏源码

会动的汤姆猫游戏源码 去发现同类优质开源项目:https://gitcode.com/ 此仓库包含了一个有趣的会动汤姆猫小游戏的完整源码,使用了HTML、JavaScript以及CSS技术进行开发。以下是该游戏的特点: 游戏采用HTML构建页面结构,CSS进行样式设计,JavaScript实现交互逻辑和动画效果。 汤姆猫动画流畅,形象生动,并且配有音效,增加了游戏的真实感和趣味性。 源码结构清晰...

gitblog_06799的博客 475

android源码之会说话的汤姆猫.zip

android会说话的汤姆猫源码 这个游戏曾经在网上风靡一时,我想现在很多朋友的手机上还有这款游戏,不经意间发现这个源码和大家分享一下,android游戏源码的经典。

怎么用c语言写汤姆猫小游戏,Android实现汤姆猫小游戏

相信好多人都玩过汤姆猫这个小游戏,要做这个小游戏其实也不难,这不,现写一个,先看效果演示。tom.gif目前实现的主要功能点包括以下两部分:戳 tom 的各个身体部位它会做出相应反馈,包括动作和声音。往右滑动屏幕的时候另外一只黄色的小狗跳出来搞怪,并发出怪声。鉴于我不知道这只黄色的狗子叫啥名字,后面的内容里我就称呼它为小黄吧。效果图听不见声音感觉有点无趣,所以我打了个安装包,想安装体验的可以扫码下...

weixin_36213081的博客 719

PS2硬盘启动终极指南:从FMCB到OPL,告别光驱打造游戏博物馆

在计算机存储与数据读取领域,硬盘启动技术通过将操作系统或应用程序从本地硬盘直接加载,绕过了传统光驱等外部介质,实现了速度与可靠性的双重提升。其核心原理在于利用引导程序接管系统初始化流程,直接访问硬盘上的特定分区与文件镜像。这项技术的价值在于极大提升了数据读取效率、降低了物理介质损耗,并扩展了存储容量与管理的灵活性。在怀旧游戏硬件改造、嵌入式系统定制等场景中,硬盘启动技术被广泛应用,以实现老旧设备的功能焕新与性能优化。本文聚焦于索尼PS2游戏主机的硬盘启动方案,深入探讨了如何利用FMCB(Free MCBoo

weixin_34295316的博客 1778

Codex本地部署指南:从环境配置到API集成实战

Codex作为OpenAI推出的代码生成模型,能够根据自然语言描述自动生成代码片段,大幅提升开发效率。这次我们重点分析Codex的本地部署方案、硬件门槛、接口调用方式和实际使用效果,帮助开发者判断是否值得投入时间部署。 从技术架构看,Codex基于GPT-3模型微调,专门针对代码生成任务优化。最新版本支持多种编程语言,包括Python、JavaScript、Java、C++等主流语言。对于国内开发者来说,最关心的是能否在本地环境稳定运行,以及是否需要特殊网络配置。 1. 核心能力速览 能力项 技术说明 模型

weixin_33309048的博客 527

android mediaplayer预加载_Android实现汤姆猫小游戏

相信好多人都玩过汤姆猫这个小游戏,要做这个小游戏其实也不难,这不,现写一个,先看效果演示。tom.gif目前实现的主要功能点包括以下两部分:戳 tom 的各个身体部位它会做出相应反馈,包括动作和声音。往右滑动屏幕的时候另外一只黄色的小狗跳出来搞怪,并发出怪声。鉴于我不知道这只黄色的狗子叫啥名字,后面的内容里我就称呼它为小黄吧。思路分析我们先来分析一下这个小游戏的实现思路,首先是动作效果,不管是汤姆...

weixin_39900531的博客 237

文华财经公式编程:麦语言简介及基础语法

文华财经公式语言(麦语言)是一种专门用于金融领域的编程语言,它是由文华财经公司开发的。提供了丰富的金融计算函数和数据处理功能,可以用于金融市场的数据分析、模型建立和交易策略的开发。例1:A:CLOSE;// 定义变量A为收盘价(盘中k线没有走完的时候A为最新价)。例2:MA5:=MA(C,5);// 定义收盘价的5周期均线(C为CLOSE简写)。例3:A:=REF(C,1);// 取得前一根k线的收盘价。

超哥量化的博客 1万+

全网最新项目:会说话的汤姆猫直播搭建教程(附教学流程)

首先,这个直播玩法非常有意思,只需要让汤姆猫完成各种有趣味的动作,关键直播间人气也是比较高的,基本上都有500-800人以上,是一种非常典型的撸音浪直播玩法。这个项目操作还是非常简单的,具体看你个人如何去玩,不知道聊天话术的朋友,可以去对标直播间学习,这里小编就不做过多介绍了。这个就是利用项目的信息差,打包整个项目的操作流程出售,价格一般在19.9-99,这个定价看你自己。首先,操作这个项目之前,你得先准备一个可以直播的账号,以及一台运行流畅的电脑设备。3、最后一个肯定就是直播伴侣了,用来直播用。

qq_28102975的博客 2496

长期换衣行人重识别(Long-Term Clothes-Changing Person Reid)数据集汇总

长期换衣行人重识别任务中目前常用的数据集总览目前换衣数据集的主要问题数据集换衣/总体情况集统计DeepChange(2021)LaST(2021)COCAS(2020)VC-Clothes(2020)LTCC(2020)PRCC(2019)Celebrities-reID(2019) 总览 在长期换衣行人重识别的任务当中,数据集的获取(尤其是对于学术环境下)是一个难点,主要的困难有以下几点: 采集大规模的数据集比较困难。 采集不同的衣服的数据集比较困难。 采集不同衣服不同角度的数据集比较困难。 目前也有

KingsMan666的博客 8384

【嵌入式面经】上海 70迈 线上笔试

“关注|点赞|收藏” 福利干货第一时间送达!最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作!

qq_56921854的博客 1140

汤姆猫html5,Android汤姆猫小游戏

Tomcat-master/.gitignore,1002Tomcat-master/.idea/codeStyles/Project.xml,3309Tomcat-master/.idea/compiler.xml,686Tomcat-master/.idea/copyright/profiles_settings.xml,74Tomcat-master/.idea/encodi...

weixin_29029673的博客 1300

基于深度学习YOLOv8的PCB板缺陷检测系统

基于YOLOv8的PCB板缺陷检测系统,可以有效提高PCB生产过程中的检测效率。未来,我们可以进一步优化模型,结合更多的数据增强策略和先进的网络结构,以适应更复杂的生产环境。为了进行训练,理想的数据集应包含多种不同缺陷类型和不同背景的PCB图像。YOLOv8需要的数据格式为每个图像一个标签文件,每个标签文件包含缺陷的类别及其边界框坐标。运行该界面时,用户可以通过点击按钮选择图像,随后系统将自动检测图像中的PCB缺陷并显示结果。训练完成后,可以使用训练好的模型进行推理,检测新的PCB图像中的缺陷。

YOLO 1071

汤姆猫系列游戏技术架构解析:模块化开发与产品矩阵构建

游戏开发中的模块化设计与技术中台是提升研发效率和产品迭代速度的关键架构思想。其核心原理在于将通用功能(如角色系统、物理交互、经济模型)抽象为可复用的组件,通过标准化接口进行组装,从而支撑快速的产品创新和规模化扩展。这种架构的技术价值在于降低重复开发成本、保证多产品线体验一致性,并能基于数据驱动进行精细化运营调优。在休闲游戏、系列化应用等高频迭代场景中,模块化架构已成为行业主流实践。本文以“会说话的汤姆猫家族”系列为例,深入剖析其如何通过统一的**技术中台**和**模块化玩法**,构建起覆盖全球数十亿下载量的

weixin_30385925的博客 271

uniapp(全端兼容) - 最新详细实现接入腾讯视频播放器功能插件,uniapp全平台端(小程序/H5网页/App/nvu)调用引入并使用腾讯视频播放组件完整全流程(详细示例源码,一键复制开箱即用)

uniapp腾讯视频,uniapp微信小程序腾讯视频,uniapp小程序接入腾讯视频详细示例教程源码,uniapp怎么在微信小程序平台使用腾讯视频插件,在uni-app中使用腾讯视频插件播放视频,uniapp调用腾讯视频,uniapp引入腾讯视频插件,uniapp小程序中引入腾讯视频无法播放,uniapp微信小程序平台引入腾讯视频播放不了黑屏,在uniapp开发的微信小程序中使用腾讯视频,uniapp如何引入腾讯视频插件播放视频,uni-app小程序平台引入腾讯视频插件播放腾讯视频,uniapp 小程序接入

✅ 精选推荐文章 1万+

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是基于StarNet的YOLOv11轻量化改进方法研究。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 6001

java 实现Tom猫游戏(附带源码)

java 实现Tom猫游戏(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1119

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: Android鹰眼轨迹追踪
下一篇: Android音乐播放器源码
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值