最近微信上很火的小游戏【壹秒】android版——开发分享

最近在朋友圈,朋友转了一个html小游戏【壹秒】,游戏的规则是:用户按住按钮然后释放,看谁能精准地保持一秒的时间。^_^刚好刚才在linux服务器上调试程序的时候服务器挂了,腾出点时间分享下前天自己做的这个小游戏。

话不多说,直接上图:

   

呐,作为一个对android无比热爱的小伙伴,腾出一个小小时间做一个小小的小游戏,也不失为一种享受哈。整个游戏比较简单,主要分为UI设计与开发和时间计算逻辑。当然,这个小游戏界面要做得漂亮点,所以我侧重讲下UI设计与开发。

UI设计与开发

采用RelativeLayout相对布局来控制整个界面比较灵活。基本的布局相信对你们来说都很easy,都是简单的排版。主要在于按住“按住”按钮之后怎么实现布局变长,这里提一下。我的思路是显示秒数布局一开始包含了全部所需要的空间,这个布局采用高度随内容增长,然后写一个高度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);

时间计算逻辑

时间计算逻辑比较简单,首先对按钮实现触摸监听,设置两个变量记录手摁下那一刻和离开那一刻(同个触摸过程)的系统时间,后者减去前者再进行单位换算就可以算出手触碰的持续时间。

代码如下:

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游戏代码下在:一秒游戏源码

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 06:35:39

最近微信上很火的小游戏【壹秒】android版——开发分享的相关文章

微信为什么要搞一个小游戏?

众厂关于 H5 游戏市场的争夺,自 2014 年以来,一直就没有停止过.但一直也没有尘埃落定,最终花落谁家,鹿死谁手现在还不好讲.微信推出小程序,继而推出小游戏,只是腾讯数年来在 H5 市场企业战略的一环. 微信为什么要自定义一套技术,起名为小程序?明明就是原来的 H5 技术,为什么 CSS 不叫 CSS,叫 WXSS:为什么 HTML 不叫 HTML,叫 WXML:为什么明明有 JS.TS,还要自主研发一个 WXS,并且声称"WXS 与 JS 是不同的语言,有自己的语法,并不和 JS 一致&q

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

如何在centos上安装一个2048小游戏 最近在学习CentOS系统,就琢磨着玩点什么,然后我看到有人在玩2048小游戏,所有我就在想,为啥不装一个2048小游戏搞一下嘞,于是乎,我就开始工作啦 由于我个人的编程能力不强,所以我就在网上找到了一个C语言版的2048游戏小程序,我把它放到我的百度网盘上,可以供大家下载(链接:http://pan.baidu.com/s/1jIutb3g 密码:mu9z),然后我们把这个程序给复制到CentOS系统下,在进行下一步的工作.我们可以在CentOS上安

2048小游戏(C语言版)

1 #include <climits> 2 #include <cstdio> 3 #include <cstring> 4 #include <stack> 5 #include <string> 6 #include <map> 7 #include <vector> 8 #include <cmath> 9 10 11 /* 12 玩法说明:编译运行后,输入一个整数n,表示自己想玩的游戏中是n*n的表格

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

来源:http://blog.csdn.net/linguifa/article/details/25832011 本文记录了在开发 腾讯移动游戏平台SDK(MSDK) Android版Ane扩展 过程中所遇到的问题和相关解决方案 问题一:编译报错:Unable to resolve target 'android-7': 将低版本的代码导入eclipse时,常遇到这样的问题:Unable to resolve target 'android-XX' 这是原代码中project.properti

飞行熊猫游戏源码android版

这款游戏是前一段时间完成的一个项目,飞行熊猫游戏源码android版,飞行熊猫基于cocos2d游戏引擎开发,包括了谷歌admob广告支持,没有任何版权问题,大家可以自由修改和上传应用商店. 1.本游戏支持无限关卡. 2.源码包也包括了游戏PSD格式资源文件,可自行修改图片. 3.自适应各种屏幕分辨率, 支持android2.1+ 源码下载: http://code.662p.com/view/6682.html <ignore_js_op> <ignore_js_op> <

【微信小游戏】排行榜实战版

一.前提 微信小游戏主打社交玩法,为了丰富社交玩法我们肯定会用到关系链数据来做好友排行帮,群排行榜等功能.本篇主要介绍Cocos Creator中排行榜的实现,上一篇微信小游戏排行版概念篇. 二.准备 工具:cocos creator 版本:v1.9.1 语言:JavaScript 介绍: 1)cocos creator v1.9.1 版本,构建发布中增加了子域的概念,这里的子域对应的就是小游戏中的开放数据域.如图1 2)子域代码目录:指的就是小游戏game.json中subContext的路径

白话kali linux上可以安装什么小游戏(好奇版)

技术博客的可读性非常重要,这也是技术博客写作的重要原则. 电脑系统是kali linux2018.1版本的,64bit 游戏是极客精神的产物,这句话没毛病. 因为之前在windows电脑上一直都是很方便的下载游戏,玩,像红色警戒2,血战上海滩,植物大战僵尸之类的单机游戏,当时也是给我带来了巨大的快乐,时至今日,如何在kali上安装一些非常小的游戏,对于我来说,是非常激发好奇心的一件事,这里也有几个常见的,甚至非常古老的游戏. 这里会有图片一一见证. 开始之前先apt-get update 1.俄

在网上看到一个很有趣的小游戏

<html> <title>猜数字</title> <body> <center><h2>猜数字</h2></center> <hr> <script> var target=36; var number=0; do{ number=window.prompt("输入数字",number); if(number==null || number==target) bre

微信上很有态度的心情句子,愿你余生不悔,旧路不归

情谊如歌每天分享一段爱情感悟,幸福可以很简单~ 1 愿你余生不悔,旧路不归. May you not regret for the rest of your life and never return to the old road. 2 愿你所到之处遍地阳光,愿你梦的远方温暖为向. May the sun shine everywhere you go, the warmth of your dreams. 3 愿你白天有说有笑,晚上睡个好觉. May you have a good nigh