Android:简单实现美女扒衣服小游戏

原创 2015年11月20日 21:59:56

实现思路

说说实现的大概思路,首先要有两副图片。这两幅图片的区别就在于一副有穿衣服,另外一副没有穿衣服,其他的细节都要一模一样。这对于懂ps的童鞋就好办啦自己动手制作就好了。但是本文为了照顾不懂ps的童鞋,提供两幅图片供大家使用~~图中美女不美各位不要吐槽哈~。

A图:没穿衣服(after1)

B图:有衣服的(pre1)

首先一开始是把A图放在屏幕上,然后再把B图覆盖在A图上。那样用户一开始看到的是B图。我们通过,监听手指移动到哪些坐标上,就设置这些坐标的颜色为透明色。那么用户看到的就是A图,也就达到了扒衣服的效果。


大概思路简单叙述完了,那么接下来看看详细代码:


具体实现

首先在xml布局文件写上两个ImageView


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ImageView
        android:src="@drawable/after1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <ImageView
        android:id="@+id/iv2
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</RelativeLayout>
由于我们只需操作B图的像素点的颜色是否透明,所以只给第二个ImageView 定义id,第一个ImageView则不定义id

然后我们看java代码:
首先获取B图的bitmap对象:
       bitmap= BitmapFactory.decodeResource(getResources(), R.drawable.pre1);

在对B图进行处理之前我们先得出B图的副本copyBitmap:
1.创建空白bitmap
copyBitmap=Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig());
2.实例化Canvas对象,并把copyBitmap传进去
   Canvas canvas=new Canvas(copyBitmap);
3.new一支画笔出来,并设置默认颜色:
        Paint paint=new Paint();
        paint.setColor(Color.BLACK);

4.最后照着B图“画”出来
 canvas.drawBitmap(bitmap, new Matrix(), paint);
就这样copyBitmap就与B图的实例bitmap一模一样了,也就是说已经创建出B图的的副本啦。

最后把copyBitmap显示在表层的ImageView(也就是布局文件中的第二个ImageView)上
 iv2.setImageBitmap(bitmap);

现在运行会看到是这个样子的:




显示图片的步骤就是以上四步,那么接下来我们来实现监听用户手指滑动,并在所滑过的坐标设置为透明。

        iv2.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_MOVE:
                        int x = (int) event.getX();
                        int y = (int) event.getY();
                                    copyBitmap.setPixel(x, y , Color.TRANSPARENT);
                        iv2.setImageBitmap(copyBitmap);
                        Log.i("test", x + "," + y);
                        break;
                }

                return true;
            }
        });

copyBitmap.setPixel(x, y , Color.TRANSPARENT);代码就是将坐标为想x,y的像素点设置为透明色,而event.getX()与event.getY()则是分别获取用户触摸控件上的x坐标和y坐标。请注意这里笔者说的是控件上的坐标,并不是屏幕上的坐标。关于屏幕坐标与控件坐标的区别可以看以下博文


写到这里,可以运行一下,可以发现是可以“扒掉衣服”但是未免扒得也太慢了吧。为了满足饥渴的大家,为了能够扒衣服扒得快一点可以加上几句代码,变成这样:

 case MotionEvent.ACTION_MOVE:
                        int x = (int) event.getX();
                        int y = (int) event.getY();
                        for (int i = -18; i < 20; i++) {
                            for (int j = -18; j < 20; j++) {
                                try {
                                    copyBitmap.setPixel(x + i, y + j, Color.TRANSPARENT);
                                } catch (Exception e) {
                                    // TODO: handle exception
                                }
                            }
                        }


                        iv2.setImageBitmap(copyBitmap);
                        Log.i("test", x + "," + y);
                        break;


聪明的读者一定可以发现,这几句代码的作用就是把目标像素点的周围的像素点也变成透明色,来达到我们手指的作用范围。

写到这里可以发现扒衣服的速度明显快很多。
恩~只有扒衣服未免单一了一点,我们还可以在扒衣服的过程中加点声音。
我们可以在手指滑动之后抬起的时候播放我们预先准备的声音,在手指触摸到屏幕的时候停止播放。

        iv2.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_UP:

                            mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.higirl);


                        mediaPlayer.start();;
                        break;
                    case MotionEvent.ACTION_MOVE:
                        int x = (int) event.getX();
                        int y = (int) event.getY();
                        for (int i = -18; i < 20; i++) {
                            for (int j = -18; j < 20; j++) {
                                try {
                                    copyBitmap.setPixel(x + i, y + j, Color.TRANSPARENT);
                                } catch (Exception e) {
                                    // TODO: handle exception
                                }
                            }
                        }


                        iv2.setImageBitmap(copyBitmap);
                        Log.i("test", x + "," + y);
                        break;
                    case MotionEvent.ACTION_DOWN:
                        if(mediaPlayer!=null){
                            mediaPlayer.stop();

                            mediaPlayer.release();
                        }

                        break;

                }

                return true;
            }

声音文件笔者放到res\raw里面了。
在这里再运行一次:




最后要用到的图片和声音文件都在demo里面,有兴趣的可以下载一下。


DEMO下载





















版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/javy_codercoder/article/details/49950607

JavaScript打飞机小游戏视频教程

-
  • 1970年01月01日 08:00

Android程序系列:给美女脱衣服游戏源码

  • 2012年07月24日 20:58
  • 4.22MB
  • 下载

Android小游戏应用---撕破美女衣服游戏

ImageView after; ImageView before; @Override protected void onCreate(Bundle savedInstanceState) {...
  • andywuchuanlong
  • andywuchuanlong
  • 2014-05-17 16:58:53
  • 1560

扒衣服小游戏Demo

  • 2015年11月20日 21:55
  • 7.38MB
  • 下载

扒美女衣服——妄撮游戏实现原理

扒美女衣服原版来自日本妄撮游戏,现在介绍一下它的实现原理。 1、两张美女图片,一张穿着衣服,一张没穿衣服。 2、采用FrameLayout将穿衣服的图片放在上面,没穿衣服的放在下面 3、当触摸图片时,...
  • axiaoquan
  • axiaoquan
  • 2014-05-15 16:05:56
  • 1116

Android:简单实现美女扒衣服小游戏

实现思路 说说实现的大概思路,首先要有两副图片。这两幅图片的区别就在于一副有穿衣服,另外一副没有穿衣服,其他的细节都要一模一样。这对于懂ps的童鞋就好办啦自己动手制作就好了。但是本文为了照顾不懂ps的...
  • javy_codercoder
  • javy_codercoder
  • 2015-11-20 21:59:56
  • 1063

帮美女脱衣服游戏完整版游戏源码

点击ImageSwitcher显示的图片即可切换到为美女换衣全屏界面,手指在界面上滑动,滑动处的衣服就被褪掉了,很黄很暴力,大家要hold住呀!! 其实啊这个实现就是两张图片,一张底图(没穿衣服),一...
  • lituanjieba
  • lituanjieba
  • 2015-08-31 09:50:18
  • 1115

"原来我也可以写Android小游戏"

其实两年前的我就想过写一款简单的手机App了。原因无他,不过是大量不知往何处去的迷茫和期待他人眼神的聚焦罢了。但当时上网查了“安卓开发入门”,大概的脉络是“先学Java,再学Android,再动手开发...
  • m0_37946085
  • m0_37946085
  • 2017-11-02 10:26:54
  • 155

扒完社交网络关系才明白,《权力的游戏》凭什么是神作

摘要:凡人皆有一死。”“没错,但那是‘凡人’。会数据的,都不是凡人。”——DT君当你看冰火的时候,你在看什么?作为一个《冰与火之歌》的资深迷弟,看到如今的冰火电视 “Valar Morg...
  • English0523
  • English0523
  • 2017-08-30 18:10:43
  • 544

Android开发之对上下两个图层的操作

我们在玩“美女脱衣服”游戏中,看到的可以把美女身上的衣服脱掉,其实是运用了图层的技术。其根本还是两张图片,将上层图片来依据手的触摸使上层图层消失。可以理解为,上层图层是一个View,下层可以是View...
  • ihrthk
  • ihrthk
  • 2013-02-04 19:20:34
  • 1674
收藏助手
不良信息举报
您举报文章:Android:简单实现美女扒衣服小游戏
举报原因:
原因补充:

(最多只允许输入30个字)