近期微信上非常火的小游戏【壹秒】android版——开发分享
近期在朋友圈,朋友转了一个html小游戏【壹秒】,游戏的规则是:用户按住button然后释放,看谁能精准地保持一秒的时间。^_^刚好刚才在linuxserver上调试程序的时候server挂了,腾出点时间分享下前天自己做的这个小游戏。
话不多说,直接上图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="300" height="500" alt="">
呐,作为一个对android无比热爱的小伙伴,腾出一个小小时间做一个小小的小游戏,也不失为一种享受哈。整个游戏比較简单,主要分为UI设计与开发和时间计算逻辑。当然,这个小游戏界面要做得美丽点,所以我側重讲下UI设计与开发。
UI设计与开发
採用RelativeLayout相对布局来控制整个界面比較灵活。主要的布局相信对你们来说都非常easy,都是简单的排版。
主要在于按住“按住”button之后怎么实现布局变长。这里提一下。我的思路是显示秒数布局一開始包括了所有所须要的空间。这个布局採用高度随内容增长,然后写一个高度10dp的view把高度撑起来。然后其它直接隐藏,后面依据逻辑直接显示就好。
以下是我的xml布局代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="#ffffff"
>
<!-- android:background="@drawable/bg"--> <!-- <TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="one second game。ready GO。"
android:textSize="22sp"
android:gravity="center"
android:textColor="#ffffff"
android:background="#000000"/>--> <LinearLayout
android:id="@+id/linearLayout"
android:layout_marginTop="30dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"> <TextView
android:id="@+id/tip_l"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="你的"
android:textSize="50sp"
android:gravity="right"
android:textColor="#666666"
android:textStyle="bold"/> <TextView
android:id="@+id/tip_r"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.3"
android:text="一秒钟"
android:textSize="50sp"
android:textColor="#FF3333"
android:gravity="left"
android:textStyle="bold"
/>
</LinearLayout> <TextView
android:layout_marginTop="3dp"
android:id="@+id/tip_b"
android:paddingLeft="8dp"
android:layout_below="@+id/linearLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="究竟有多长?"
android:textSize="40sp"
android:textColor="#666666"
android:textStyle="bold"
android:gravity="center"/> <TextView
android:layout_marginTop="15dp"
android:id="@+id/tip_e"
android:layout_below="@+id/tip_b"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="How long is one second?"
android:textSize="15sp"
android:textColor="#666666"
android:textStyle="bold"
android:gravity="center"/> <LinearLayout
android:layout_below="@+id/tip_e"
android:id="@+id/show_linearlayout"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:layout_marginTop="3dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/show"
android:orientation="vertical"> <TextView
android:layout_width="fill_parent"
android:layout_height="10dp"/> <LinearLayout
android:layout_marginTop="10dp"
android:id="@+id/show_result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone"> <TextView
android:id="@+id/show_result_l"
android:layout_width="0dp"
android:layout_weight="1.7"
android:layout_height="wrap_content"
android:gravity="right"
android:textColor="#CC9933"
android:textSize="40sp"/> <TextView
android:layout_marginLeft="3dp"
android:id="@+id/show_result_r"
android:text="秒"
android:gravity="left"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="25sp"/>
</LinearLayout> <TextView
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:layout_marginTop="5dp"
android:gravity="center"
android:id="@+id/show_remark"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:textColor="#ffffff"
android:textSize="15sp"
android:layout_marginBottom="20dp"/> </LinearLayout> <Button
android:layout_below="@+id/show_linearlayout"
android:layout_centerHorizontal="true"
android:background="@drawable/button"
android:layout_marginTop="20dp"
android:id="@+id/cul_bt"
android:layout_height="120dp"
android:layout_width="120dp"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:text="按住"
android:textColor="#ffffff"
android:textSize="30sp"/>
</RelativeLayout>
在UI界面中。为了更加美化增加了特殊字体。我加的是“方体卡通”和“华文彩云”字体。在android中显示特殊字体的方法是:假设你的IDE是eclipse,那么直接放在assets中(方法在此我不多介绍),我的IDE是android studio。假设你的IDE和我是一样的,能够使用下面方法:
首先在app→src→main文件夹下新建assets包。然后在自己项目的.iml文件里加入
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
之后在自己的代码中进行引用
private Typeface fangtikatong,huawencaiyun;//方体卡通,华文彩云
// 将字体文件保存在assets文件夹下。www.linuxidc.com创建Typeface对象
fangtikatong = Typeface.createFromAsset(getAssets(),"fangtikatong.ttf");
huawencaiyun = Typeface.createFromAsset(getAssets(),"huawencaiyun.TTF");
result_r.setTypeface(fangtikatong);
tip_l.setTypeface(huawencaiyun);
时间计算逻辑
时间计算逻辑比較简单,首先对button实现触摸监听,设置两个变量记录手摁下那一刻和离开那一刻(同个触摸过程)的系统时间。后者减去前者再进行单位换算就能够算出手触碰的持续时间。
代码例如以下:
click_cl.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
x1 = (long)System.currentTimeMillis();
//show = new StringBuffer("第一次按下"+'\n'+x1+'\n');
}
if(event.getAction() == MotionEvent.ACTION_UP){
x2 = (long)System.currentTimeMillis();
if(result_l.getVisibility() == View.GONE ||
result_l.getVisibility() == View.GONE ||
remark.getVisibility() == View.GONE ){
result.setVisibility(View.VISIBLE);
result_l.setVisibility(View.VISIBLE);
result_r.setVisibility(View.VISIBLE);
remark.setVisibility(View.VISIBLE);
}
num = (x2-x1)*1.000/1000;
result_l.setText(num+"");
//小于或等于1的先乘以1000再除以200
if(num <= 1){
remark.setText(remarks[(int)((num*1000)/200)]);
//大于1的先乘以1000再除以200
}else{
remark.setText(remarks[(int)((num*1000+200)/200)]);
}
}
return true;
}
});
到此,整个小游戏基本开发完毕,是不是也挺简单的呢?
热爱android的你们,空暇的时候也能够尝试开发自己的小游戏呢?
CSDN游戏代码下载:一秒游戏源代码
github游戏代码下在:一秒游戏源代码
近期微信上非常火的小游戏【壹秒】android版——开发分享的更多相关文章
- 如何在CentOS上安装一个2048小游戏
如何在centos上安装一个2048小游戏 最近在学习CentOS系统,就琢磨着玩点什么,然后我看到有人在玩2048小游戏,所有我就在想,为啥不装一个2048小游戏搞一下嘞,于是乎,我就开始工作啦 由 ...
- 微信小程序基础之在微信上显示和体验小程序?
随着小程序正式上线,用户现在可以通过二维码.搜索等方式体验到开发者们开发的小程序了. 用户只要将微信更新至最新版本,体验过小程序后,便可在发现页面看到小程序TAB,但微信并不会通过这个地方向用户推荐小 ...
- 【C语言程序设计】—最近超火的小游戏—【数字炸弹】!
✍ 准备工作和建议 一.程序的原理 在动手编程之前,得先跟大家说一下这个程序是干什么的. 我们可以称呼这个游戏为<数字炸弹>. 游戏的原理是这样: 每一轮电脑从 1 到 100 中随机抽 ...
- 基于jQuery的2048小游戏设计(网页版)
上周模仿一个2048小游戏,总结一下自己在编写代码的时候遇到的一些坑. 游戏规则:省略,我想大部分人都玩过,不写了 源码地址:https://github.com/xinhua6/2048game.g ...
- “限时分享“ 本地80个小游戏 HTML+CSS+JS源码分享
里面有80款小游戏源码,支持内置导航,可以拿来练手或者消磨时间,具体功能以及游戏请看下图 维京战争小游戏源码 链接:https://pan.baidu.com/s/ ...
- 开发腾讯移动游戏平台SDK Android版Ane扩展 总结
本文记录了在开发 腾讯移动游戏平台SDK(MSDK) Android版Ane扩展 过程中所遇到的问题和相关解决方式 问题一:编译报错:Unable to resolve target 'android ...
- 2048小游戏(C语言版)
#include <climits> #include <cstdio> #include <cstring> #include <stack> #in ...
- 别踩白块儿游戏源码Android版
这个项目有带说明文档,大家可以看看源码附件的说明文档吧,“别踩白块儿”是目前非常火的一款游戏,游戏非常简单刺激.关于具体怎么火法怎么玩我就不多说了,相信看到本文的朋友们都非常地清楚. 什么游戏火,我们 ...
- 【转】微信小游戏接入Fundebug监控
在SegmentFault上看到Fundebug上线小游戏监控,刚好最近开始玩微信小游戏,于是尝试接入试了一下. 接入方法 创建项目的时候选择左下角的微信小游戏图标. 点击继续进入接入插件页面. 第三 ...
随机推荐
- 牛客网数据库SQL实战
查找最晚入职员工的所有信息 CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_ ...
- “玲珑杯”ACM比赛 Round #23
A -- 生是脂肪的人 Time Limit:2s Memory Limit:128MByte Submissions:263Solved:97 DESCRIPTION 给定一个整数n,输出[(10^ ...
- request.getHeader("referer")
在开发web程序的时候,有时我们需要得到用户是从什么页面连过来的,这就用到了referer. 它是http协议,所以任何能开发web程序的语言都可以实现,比如jsp中是: request.getHea ...
- OGNL表达式详解
OGNL表达式标签中的值有三种: 1.直接是OGNL表达式. 2.字符串需转义自OGNL表达式. 1)OGNL表达式转换为字符串显示,需要用''(单引号)引起来. 2)转为OGNL表达式的字符串,需要 ...
- 使用jackson解析JSON数据
本文介绍使用jackson来对json数据进行解析操作 首先,需要去官网下载jackson,本文使用的是(jackson-all-1.9.11.jar) 主要通过ObjectMapper对json进行 ...
- google chrome & preferences & languages
google chrome & preferences & languages language settings https://www.google.com/preferences ...
- 【Luogu】P2962灯Lights(折半搜索)
题目链接 本意是想学高斯消元,然后一顿乱搞之后学到了一个神奇的搜索方式叫做折半搜索. qwq 就是我先dfs前二分之n个点,然后再dfs后二分之n个点. 然后我dfs后二分之n个点的时候判断一下第一次 ...
- sklearn python API
sklearn python API LinearRegression from sklearn.linear_model import LinearRegression # 线性回归 # modul ...
- 算法复习——背包dp
1.01背包 二维递推式子: 代码: ;i<=n;i++) ;x--) ][x-w[i]]+c[i],f[i-][x]); ][x]; printf("%d",f[n][m] ...
- iOS-文件断点续传
* 移动客户端在和服务器交互的时候,上传和下载使用十分广泛. * 在我们下载文件的时候,我们在点击暂停的时候可以暂停下载,点击下载的时候可以继续下载,这个功能如何实现? * 下载进度条如何显示? 先大 ...