近期在朋友圈,朋友转了一个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版——开发分享的更多相关文章

  1. 如何在CentOS上安装一个2048小游戏

    如何在centos上安装一个2048小游戏 最近在学习CentOS系统,就琢磨着玩点什么,然后我看到有人在玩2048小游戏,所有我就在想,为啥不装一个2048小游戏搞一下嘞,于是乎,我就开始工作啦 由 ...

  2. 微信小程序基础之在微信上显示和体验小程序?

    随着小程序正式上线,用户现在可以通过二维码.搜索等方式体验到开发者们开发的小程序了. 用户只要将微信更新至最新版本,体验过小程序后,便可在发现页面看到小程序TAB,但微信并不会通过这个地方向用户推荐小 ...

  3. 【C语言程序设计】—最近超火的小游戏—【数字炸弹】!

    ✍  准备工作和建议 一.程序的原理 在动手编程之前,得先跟大家说一下这个程序是干什么的. 我们可以称呼这个游戏为<数字炸弹>. 游戏的原理是这样: 每一轮电脑从 1 到 100 中随机抽 ...

  4. 基于jQuery的2048小游戏设计(网页版)

    上周模仿一个2048小游戏,总结一下自己在编写代码的时候遇到的一些坑. 游戏规则:省略,我想大部分人都玩过,不写了 源码地址:https://github.com/xinhua6/2048game.g ...

  5. “限时分享“ 本地80个小游戏 HTML+CSS+JS源码分享

    ​ 里面有80款小游戏源码,支持内置导航,可以拿来练手或者消磨时间,具体功能以及游戏请看下图 ​ ​ ​ ​ ​ ​ ​ ​ 维京战争小游戏源码 链接:https://pan.baidu.com/s/ ...

  6. 开发腾讯移动游戏平台SDK Android版Ane扩展 总结

    本文记录了在开发 腾讯移动游戏平台SDK(MSDK) Android版Ane扩展 过程中所遇到的问题和相关解决方式 问题一:编译报错:Unable to resolve target 'android ...

  7. 2048小游戏(C语言版)

    #include <climits> #include <cstdio> #include <cstring> #include <stack> #in ...

  8. 别踩白块儿游戏源码Android版

    这个项目有带说明文档,大家可以看看源码附件的说明文档吧,“别踩白块儿”是目前非常火的一款游戏,游戏非常简单刺激.关于具体怎么火法怎么玩我就不多说了,相信看到本文的朋友们都非常地清楚. 什么游戏火,我们 ...

  9. 【转】微信小游戏接入Fundebug监控

    在SegmentFault上看到Fundebug上线小游戏监控,刚好最近开始玩微信小游戏,于是尝试接入试了一下. 接入方法 创建项目的时候选择左下角的微信小游戏图标. 点击继续进入接入插件页面. 第三 ...

随机推荐

  1. 老男孩全栈python学习进程表

     老男孩Python高级全栈开发工程师-1  0001.开学典礼_ALEX简介  00:55:53 ☆  0002.职业生涯_来培训的目的  01:12:29 ☆  0003.课程目标  00:29: ...

  2. hdu5441

    Travel Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Su ...

  3. 九度oj 题目1460:Oil Deposit

    题目描述: The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. ...

  4. BZOJ4517 [Sdoi2016]排列计数 【组合数 + dp】

    题目 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是稳定的 满足条件的 ...

  5. mybatis读取oracle中blob

    controller: byte[] blob = commonService.getPersonImage(bean.getIdCard()); String base64 = new String ...

  6. 【python接口自动化】获取根目录

    将该方法放在根目录下面,在其他类中直接import 该方法. import os def getRootPath(): rootPath = os.path.dirname(os.path.abspa ...

  7. 旅行问题(bzoj 2746)

    Description yz是Z国的领导人,他规定每个地区的名字只能为26个小写拉丁字母的一个.由于地 区数有可能超过26个,便产生了一个问题,如何辨别名字相同的地区?于是yz规定,一个 地区的描述必 ...

  8. 外星人(bzoj 2749)

    Description Input Output 输出test行,每行一个整数,表示答案. Sample Input 1 2 2 2 3 1 Sample Output 3 HINT Test< ...

  9. vue.js源码学习分享(五)

    //配置项var config = { /** * Option merge strategies (used in core/util/options)//选项合并策略 */ optionMerge ...

  10. 标准C程序设计七---110

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...