近期在朋友圈,朋友转了一个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. csrf 攻击及防御

    1.什么是CSRF攻击: CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:C ...

  2. Leetcode 464.我能赢吗

    我能赢吗 在 "100 game" 这个游戏中,两名玩家轮流选择从 1 到 10 的任意整数,累计整数和,先使得累计整数和达到 100 的玩家,即为胜者. 如果我们将游戏规则改为 ...

  3. Leetcode 435.无重叠区间

    无重叠区间 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠. 注意: 可以认为区间的终点总是大于它的起点. 区间 [1,2] 和 [2,3] 的边界相互"接触" ...

  4. 爬虫Scrapy框架-Crawlspider链接提取器与规则解析器

    Crawlspider 一:Crawlspider简介 CrawlSpider其实是Spider的一个子类,除了继承到Spider的特性和功能外,还派生除了其自己独有的更加强大的特性和功能.其中最显著 ...

  5. [git 学习篇] 创建公钥

    http://riny.net/2014/git-ssh-key/ 1 安装 windows gitbash    msysgit是Windows版的Git,从https://git-for-wind ...

  6. [整理]linux中颜色的含义

    蓝色(Blue): Directory  目录 绿色(Green): Executable or recognized data file  可执行文件,可执行的程序 天蓝(Sky Blue): Sy ...

  7. 【bzoj1040】[ZJOI2008]骑士 并查集+基环树dp

    题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里,在 ...

  8. 【Luogu】P2057善意的投票(最小割转最大流)

    题目链接 也算水题一道吧,不过Round1感性理解一下就xjb建了个图,40 Round2仔细分析了一会,理性建了个图,90 然后分析了半天……改大数组就A了…… 从S到所有值为1的点连一条inf的边 ...

  9. NOI2017 [NOI2017]游戏 【2-sat】

    题目 题目背景 狂野飙车是小 L 最喜欢的游戏.与其他业余玩家不同的是,小 L 在玩游戏之余,还精于研究游戏的设计,因此他有着与众不同的游戏策略. 题目描述 小 L 计划进行nn 场游戏,每场游戏使用 ...

  10. 你所在的公司是如何实施DEVOPS的?

    工欲善其事,必先利其器,现在大家在DevOps领域最关注的还是在工具层面.下面是我跟这么多公司接触下来,大家使用比较多的工具:1.监控工具比较老牌的就是Zabbix,Nagios,用Zabbix的感觉 ...