国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

Android實(shí)現(xiàn)拼圖小游戲功能

共 9578字,需瀏覽 20分鐘

 ·

2022-03-18 16:06

效果圖:



拋磚引玉:


這是一個簡單的小Demo,還可以有更多的擴(kuò)展,比如我們可以動態(tài)的從手機(jī)相冊中選取圖片作為拼圖底圖,可以動態(tài)的設(shè)置拼圖難易度(滑塊個數(shù))等等,看完這篇文章,請大家盡情發(fā)揮想象力吧~


實(shí)現(xiàn)思路:


簡單的過一下思路,首先我們需要一張圖作為拼圖背景,然后根據(jù)一定的比例把它分成n個拼圖滑塊并隨機(jī)打亂位置,指定其中一個滑塊為空白塊,當(dāng)用戶點(diǎn)擊這個空白塊相鄰(上下左右)的拼圖滑塊時,交換它們位置,每次交換位置后去判斷是否完成了拼圖,大概思路是這樣子,下面我們來看代碼實(shí)現(xiàn)。


拼圖滑塊實(shí)體類:

package jigsaw.lcw.com.jigsaw;
import android.graphics.Bitmap;
/**?*?拼圖實(shí)體類 */public class Jigsaw {
private int originalX; private int originalY; private Bitmap bitmap; private int currentX; private int currentY;
public Jigsaw(int originalX, int originalY, Bitmap bitmap) { this.originalX = originalX; this.originalY = originalY; this.bitmap = bitmap; this.currentX = originalX; this.currentY = originalY; }
public int getOriginalX() { return originalX; }
public void setOriginalX(int originalX) { this.originalX = originalX; }
public int getOriginalY() { return originalY; }
public void setOriginalY(int originalY) { this.originalY = originalY; }
public Bitmap getBitmap() { return bitmap; }
public void setBitmap(Bitmap bitmap) { this.bitmap = bitmap; }
public int getCurrentX() { return currentX; }
public void setCurrentX(int currentX) { this.currentX = currentX; }
public int getCurrentY() { return currentY; }
public void setCurrentY(int currentY) { this.currentY = currentY; }
@Override public String toString() { return "Jigsaw{" + "originalX=" + originalX + ", originalY=" + originalY + ", currentX=" + currentX + ", currentY=" + currentY + '}'; }}


首先我們需要一個滑塊的實(shí)體類,這個類用來記錄拼圖滑塊的原始位置點(diǎn)(originalX、originalY),當(dāng)前顯示的圖像(bitmap),當(dāng)前的位置點(diǎn)(currentX、currentY),我們在移動滑塊的時候,需要不斷的去交換顯示的圖像和當(dāng)前位置點(diǎn),而原始位置點(diǎn)是用來判斷游戲是否結(jié)束的一個標(biāo)志,當(dāng)所有的原始位置點(diǎn)與所有的當(dāng)前位置點(diǎn)相等時,就代表游戲結(jié)束。


拼圖底圖的實(shí)現(xiàn):


既然要拼圖,那肯定需要有圖片了,有些朋友可能會想是不是需要準(zhǔn)備n張小圖片?其實(shí)是不用的,如果都這樣去準(zhǔn)備的話,要做一個拼圖闖關(guān)的游戲得預(yù)置多少圖片資源啊,包體積還不直接上天了,這里我們采用GridLayout來做,將一張圖片動態(tài)切割成n個小圖填充至ImageView,然后加入到GridLayout布局中。

    /**     * 獲取拼圖(大圖)     *     * @return     */    public Bitmap getJigsaw(Context context) {        //加載Bitmap原圖,并獲取寬高        Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.img);        int bitmapWidth = bitmap.getWidth();        int bitmapHeight = bitmap.getHeight();        //按屏幕寬鋪滿顯示,算出縮放比例        int screenWidth = getScreenWidth(context);        float scale = 1.0f;        if (screenWidth < bitmapWidth) {            scale = screenWidth * 1.0f / bitmapWidth;        }        bitmap = Bitmap.createScaledBitmap(bitmap, screenWidth, (int) (bitmapHeight * scale), false);        return bitmap;    }


首先我們需要對資源圖片進(jìn)行一定比例的壓縮,我們讓圖片充滿屏幕寬度,算出一定的縮放比例,然后壓縮圖片的高,這里有個createScaledBitmap方法,我們來看下底層源碼:

   /**     * Creates a new bitmap, scaled from an existing bitmap, when possible. If the     * specified width and height are the same as the current width and height of     * the source bitmap, the source bitmap is returned and no new bitmap is     * created.     *     * @param src       The source bitmap.     * @param dstWidth  The new bitmap's desired width.     * @param dstHeight The new bitmap's desired height.     * @param filter    true if the source should be filtered.     * @return The new scaled bitmap or the source bitmap if no scaling is required.     * @throws IllegalArgumentException if width is <= 0, or height is <= 0     */    public static Bitmap createScaledBitmap(@NonNull Bitmap src, int dstWidth, int dstHeight,            boolean filter) {        Matrix m = new Matrix();
final int width = src.getWidth(); final int height = src.getHeight(); if (width != dstWidth || height != dstHeight) { final float sx = dstWidth / (float) width; final float sy = dstHeight / (float) height; m.setScale(sx, sy); } return Bitmap.createBitmap(src, 0, 0, width, height, m, filter); }


其實(shí)它的原理就是根據(jù)我們傳入的壓縮寬高值,通過矩陣Matrix對圖片進(jìn)行縮放。


再來就是切割小塊拼圖滑塊了,我們把圖片分成3行5列,根據(jù)算出的寬高去創(chuàng)建3*5個小的Bitmap并裝載入ImageView,加入到GridLayout布局中,然后為每個ImageView設(shè)置一個Tag,這個Tag的信息就是我們之前創(chuàng)建的實(shí)體類數(shù)據(jù),并制定最后一個ImageView為空白塊。

    /**     * 初始化拼圖碎片     * @param jigsawBitmap     */    private void initJigsaw(Bitmap jigsawBitmap) {
mGridLayout = findViewById(R.id.gl_layout);
int itemWidth = jigsawBitmap.getWidth() / 5; int itemHeight = jigsawBitmap.getHeight() / 3;
//切割原圖為拼圖碎片裝入GridLayout for (int i = 0; i < mJigsawArray.length; i++) { for (int j = 0; j < mJigsawArray[0].length; j++) { Bitmap bitmap = Bitmap.createBitmap(jigsawBitmap, j * itemWidth, i * itemHeight, itemWidth, itemHeight); ImageView imageView = new ImageView(this); imageView.setImageBitmap(bitmap); imageView.setPadding(2, 2, 2, 2); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //判斷是否可移動 boolean isNearBy = JigsawHelper.getInstance().isNearByEmptyView((ImageView) v, mEmptyImageView); if (isNearBy) { //處理移動 handleClickItem((ImageView) v, true); } } }); //綁定數(shù)據(jù) imageView.setTag(new Jigsaw(i, j, bitmap)); //添加到拼圖布局 mImageViewArray[i][j] = imageView; mGridLayout.addView(imageView); } } //設(shè)置拼圖空碎片 ImageView imageView = (ImageView) mGridLayout.getChildAt(mGridLayout.getChildCount() - 1); imageView.setImageBitmap(null);????????mEmptyImageView?=?imageView; }


拼圖滑塊的移動事件:


上面代碼我們?yōu)镮mageView設(shè)置了點(diǎn)擊事件,這邊就是用來判斷當(dāng)前點(diǎn)擊的ImageView是否是可以移動的,判斷的依據(jù):當(dāng)前點(diǎn)擊ImageView是否在空白塊相鄰(上下左右)的位置,而這個位置信息可以通過ImageView里的Tag得到,參考圖如下(這里的R,C不是指XY坐標(biāo),而是指所在的行和列):



    /**     * 判斷當(dāng)前view是否在可移動范圍內(nèi)(在空白View的上下左右)     *     * @param imageView     * @param emptyImageView     * @return     */    public boolean isNearByEmptyView(ImageView imageView, ImageView emptyImageView) {
Jigsaw emptyJigsaw = (Jigsaw) imageView.getTag(); Jigsaw jigsaw = (Jigsaw) emptyImageView.getTag();
if (emptyJigsaw != null && jigsaw != null) { //點(diǎn)擊拼圖在空拼圖的左邊 if (jigsaw.getOriginalX() == emptyJigsaw.getOriginalX() && jigsaw.getOriginalY() + 1 == emptyJigsaw.getOriginalY()) { return true; } //點(diǎn)擊拼圖在空拼圖的右邊 if (jigsaw.getOriginalX() == emptyJigsaw.getOriginalX() && jigsaw.getOriginalY() - 1 == emptyJigsaw.getOriginalY()) { return true; } //點(diǎn)擊拼圖在空拼圖的上邊 if (jigsaw.getOriginalY() == emptyJigsaw.getOriginalY() && jigsaw.getOriginalX() + 1 == emptyJigsaw.getOriginalX()) { return true; } //點(diǎn)擊拼圖在空拼圖的下邊 if (jigsaw.getOriginalY() == emptyJigsaw.getOriginalY() && jigsaw.getOriginalX() - 1 == emptyJigsaw.getOriginalX()) { return true; } } return false; }


然后我們看一下移動拼圖滑塊的代碼,這里其實(shí)做了這么幾件事情:
1、根據(jù)點(diǎn)擊ImageView位置去構(gòu)造出對應(yīng)的移動的動畫
2、動畫結(jié)束后,需要處理對應(yīng)的數(shù)據(jù)交換
3、動畫結(jié)束后,需要去判斷是否完成了拼圖(下文會提,這里先不管)


   /**     * 處理點(diǎn)擊拼圖的移動事件     *     * @param imageView     */    private void handleClickItem(final ImageView imageView) {        if (!isAnimated) {            TranslateAnimation translateAnimation = null;            if (imageView.getX() < mEmptyImageView.getX()) {                //左往右                translateAnimation = new TranslateAnimation(0, imageView.getWidth(), 0, 0);            }
if (imageView.getX() > mEmptyImageView.getX()) { //右往左 translateAnimation = new TranslateAnimation(0, -imageView.getWidth(), 0, 0); }
if (imageView.getY() > mEmptyImageView.getY()) { //下往上 translateAnimation = new TranslateAnimation(0, 0, 0, -imageView.getHeight()); }
if (imageView.getY() < mEmptyImageView.getY()) { //上往下 translateAnimation = new TranslateAnimation(0, 0, 0, imageView.getHeight()); }
if (translateAnimation != null) { translateAnimation.setDuration(80); translateAnimation.setFillAfter(true); translateAnimation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { isAnimated = true; }
@Override public void onAnimationEnd(Animation animation) { //清除動畫 isAnimated = false; imageView.clearAnimation(); //交換拼圖數(shù)據(jù) changeJigsawData(imageView); //判斷游戲是否結(jié)束 boolean isFinish = JigsawHelper.getInstance().isFinishGame(mImageViewArray, mEmptyImageView); if (isFinish) { Toast.makeText(MainActivity.this, "拼圖成功,游戲結(jié)束!", Toast.LENGTH_LONG).show(); } }
@Override public void onAnimationRepeat(Animation animation) {
} });
imageView.startAnimation(translateAnimation); } } }


這里我們重點(diǎn)看一下數(shù)據(jù)的交換,我們都知道Android補(bǔ)間動畫只是給我們視覺上的改變,本質(zhì)上View的位置是沒有移動的,我們先通過setFillAfter讓其做完動畫保持在原處(視覺效果),在動畫執(zhí)行完畢的時候,我們進(jìn)行ImageView數(shù)據(jù)的交換,這邊要特別注意的是,其實(shí)我們并沒有去交換View的位置,本質(zhì)上我們只是交換了Bitmap讓ImageView更改顯示和currentX、currentY的值,原來的View在哪,它還是在哪,當(dāng)數(shù)據(jù)交換完成后,記得更改空白塊的引用。

   /**     * 交換拼圖數(shù)據(jù)     *     * @param imageView     */    public void changeJigsawData(ImageView imageView) {        Jigsaw emptyJigsaw = (Jigsaw) mEmptyImageView.getTag();        Jigsaw jigsaw = (Jigsaw) imageView.getTag();
//更新imageView的顯示內(nèi)容 mEmptyImageView.setImageBitmap(jigsaw.getBitmap()); imageView.setImageBitmap(null); //交換數(shù)據(jù) emptyJigsaw.setCurrentX(jigsaw.getCurrentX()); emptyJigsaw.setCurrentY(jigsaw.getCurrentY()); emptyJigsaw.setBitmap(jigsaw.getBitmap());
//更新空拼圖引用 mEmptyImageView = imageView; }


判斷游戲結(jié)束:


我們之前在拼圖滑塊實(shí)體類中預(yù)置了這幾個屬性originalX、originalY(代表最開始的位置),currentX、currentY(經(jīng)過一系列移動后的位置),因?yàn)榛瑝K的移動只是視覺效果,本質(zhì)上是沒有改變View位置的,只是交換了數(shù)據(jù),所以我們最后可以根據(jù)originalX、currentX和originalY、currentY是否相等來判斷(空白塊除外):

   /**     * 判斷游戲是否結(jié)束     *     * @param imageViewArray     * @return     */    public boolean isFinishGame(ImageView[][] imageViewArray, ImageView emptyImageView) {
int rightNum = 0;//記錄匹配拼圖數(shù)
for (int i = 0; i < imageViewArray.length; i++) { for (int j = 0; j < imageViewArray[0].length; j++) { if (imageViewArray[i][j] != emptyImageView) { Jigsaw jigsaw = (Jigsaw) imageViewArray[i][j].getTag(); if (jigsaw != null) { if (jigsaw.getOriginalX() == jigsaw.getCurrentX() && jigsaw.getOriginalY() == jigsaw.getCurrentY()) { rightNum++; } } } } }
if (rightNum == (imageViewArray.length * imageViewArray[0].length) - 1) { return true; } return false; }


手勢交互:


剛才我們已經(jīng)實(shí)現(xiàn)了點(diǎn)擊的交互事件,可以更炫酷點(diǎn),我們把手勢交互也補(bǔ)上,用手指的滑動來帶動拼圖滑塊的移動,我們來看下核心代碼:

    /**     * 判斷手指移動的方向,     *     * @param startEvent     * @param endEvent     * @return     */    public int getGestureDirection(MotionEvent startEvent, MotionEvent endEvent) {        float startX = startEvent.getX();        float startY = startEvent.getY();        float endX = endEvent.getX();        float endY = endEvent.getY();        //根據(jù)滑動距離判斷是橫向滑動還是縱向滑動        int gestureDirection = Math.abs(startX - endX) > Math.abs(startY - endY) ? LEFT_OR_RIGHT : UP_OR_DOWN;        //具體判斷滑動方向        switch (gestureDirection) {            case LEFT_OR_RIGHT:                if (startEvent.getX() < endEvent.getX()) {                    //手指向右移動                    return RIGHT;                } else {                    //手指向左移動                    return LEFT;                }            case UP_OR_DOWN:                if (startEvent.getY() < endEvent.getY()) {                    //手指向下移動                    return DOWN;                } else {                    //手指向上移動                    return UP;                }        }        return NONE;    }


首先我們根據(jù)手指的移動距離先判斷是左右滑動還是上下滑動,然后再根據(jù)坐標(biāo)的起始點(diǎn)判斷具體方向,有了對應(yīng)的移動方向,我們就可以來處理拼圖滑塊的移動了,這次是逆向思維,根據(jù)手勢方向判斷空白塊相鄰(上下左右)有沒有拼圖塊,如果有,把對應(yīng)的滑塊ImageView取出,交給上文提到的點(diǎn)擊滑塊移動代碼處理:

    /**     * 處理手勢移動拼圖     *     * @param gestureDirection     * @param animation        是否帶有動畫     */    private void handleFlingGesture(int gestureDirection, boolean animation) {        ImageView imageView = null;        Jigsaw emptyJigsaw = (Jigsaw) mEmptyImageView.getTag();        switch (gestureDirection) {            case GestureHelper.LEFT:                if (emptyJigsaw.getOriginalY() + 1 <= mGridLayout.getColumnCount() - 1) {                    imageView = mImageViewArray[emptyJigsaw.getOriginalX()][emptyJigsaw.getOriginalY() + 1];                }                break;            case GestureHelper.RIGHT:                if (emptyJigsaw.getOriginalY() - 1 >= 0) {                    imageView = mImageViewArray[emptyJigsaw.getOriginalX()][emptyJigsaw.getOriginalY() - 1];                }                break;            case GestureHelper.UP:                if (emptyJigsaw.getOriginalX() + 1 <= mGridLayout.getRowCount() - 1) {                    imageView = mImageViewArray[emptyJigsaw.getOriginalX() + 1][emptyJigsaw.getOriginalY()];                }                break;            case GestureHelper.DOWN:                if (emptyJigsaw.getOriginalX() - 1 >= 0) {                    imageView = mImageViewArray[emptyJigsaw.getOriginalX() - 1][emptyJigsaw.getOriginalY()];                }                break;            default:                break;        }        if (imageView != null) {            handleClickItem(imageView, animation);        }    }


游戲的初始化:


關(guān)于游戲的初始化,其實(shí)很簡單,我們可以構(gòu)造給隨機(jī)次數(shù),讓游戲開始的時候隨機(jī)方向,隨機(jī)次數(shù)的滑動即可:

   /**     * 游戲初始化,隨機(jī)打亂順序     */    private void randomJigsaw() {        for (int i = 0; i < 100; i++) {            int gestureDirection = (int) ((Math.random() * 4) + 1);            handleFlingGesture(gestureDirection, false);        }    }


好了,到這里文章就結(jié)束了,很簡單的一個小游戲,很美好的一份童年回憶~


源碼地址:

https://github.com/Lichenwei-Dev/JigsawView

瀏覽 66
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 99视频在线看| 啪视频网站国产馆| 麻豆一区| 精品欧美一区二区三区| 麻豆91精品人妻成人无码| 欧美特黄AAAAAAAAA片| 精品乱伦视频| 中文字幕乱码中文乱码91| 九色91PORNY国产| 欧美精品久| 777国产盗摄偷窥精品0000| 日韩无码人妻一区二区三区 | 一区二区三区观看| 在线三级片视频| 99爱在线| www.青草视频| 伊人久久AV| 特级西西444www| WW免费视频| h在线| 亚洲色在线播放| 羞羞色院91蜜桃| 狠狠干综合| 日本黄色A片| 99色视频| 欧美色图在线播放| 巜人妻初尝按摩师BD中字| A黄色片| 台湾成人综合网| 三级网站免费观看| 成人网站毛片| 亚洲欧洲成人| 国产区AV| www天天干| 国产一卡二卡在线观看| 成人毛片在线播放| 无码毛片一区二区三区人口| 操比片| 青娱乐自拍偷拍| ppypp电影频道| 国产嫩BBwBBw高潮| 亚洲激情黄色| 国产在线视频一区二区| 国产五月婷婷| 在线免费观看无码| 91成人在线免费视频| 午夜网页| 狠狠躁夜夜躁人爽| 人人妻人人色| 久久久久久成人电影| 久久久久久免费视频| 亚洲欧美日韩国产| 最新中文字幕在线| 青娱乐亚洲领先| 日本18禁网站| 亚洲一区二区成人网站戴套| 黄片av| 亚洲色影院| 五月婷婷中文字幕| 夜夜撸| 国产无套在线| 国产成人高清在线| 一级视频免费观看| 开心五月色婷婷综合开心网| 日韩色情电影| 中文字幕AV第一页| 精品成人久久| 天天干天天色| 欧美一区二区三区成人片下载| 毛片三级片| 中文字幕免费在线播放| 水蜜桃视频免费观看| 无码人妻精品一区二区三| 午夜看黄片| 五月丁香伊人| 安徽妇女BBBWBBBwm| 欧美操比视频| 韩国高清无码| 日本黄色视频电影| 五月激情黄色| 国产成人免费观看视频| 天天草天天爽| 亚洲免费黄色片| 刘玥精品国产一区二区三区| 青草超碰| 欧美黄色录像| 国产精品A片守望| 成人免费a片| 秋霞午夜福利| 欧美一区二区| AV一二区| 亲子乱婬-一级A片| 成人一区二区在线观看| 精品国产va久久久久久久| 国产乱码一区二区三区的区别| 波多野结衣日韩| 欧美午夜精品成人片在线播放| 九九九成人网| 日韩黄色网址| www久久| 女人自慰在线观看| A视频免费在线观看| 久久久久久久久久久久国产精品| 天堂8在线视频| 亚洲永久免费精品| 粉嫩小泬BBBB免费看-百度| 亚洲天堂第一页| 蜜桃91视频| 中国女人操逼视频| 白虎高清无码大尺度免费在线观看| 日韩无码砖区| 激情五月婷婷网| 日韩在线成人中文字幕亚洲| 九九天堂| 五月天婷婷基地| 天天干B| 成人网在线视频| 国产日韩性爱视频| 亚洲欧美成人| 暖暖av| 日韩视频网址| 五月丁香花| 国产福利网站| 999reav| 六月天av| 中文字幕+乱码+中文乱码91在线观看| 日本电影一区二区| 高潮国产视频| 偷拍综合网| 亚洲天天干| 国产香蕉视频免费| 欧一美一婬一伦一区二区三区 | 亚洲在线视频免费观看| 性BBwBBwBBwBBw禽| 欧美日韩国产不卡视频| 七区九区一区在线| 韩国无码一区二区| 91国产在线播放| 欧美亚洲激情| 五月婷婷激情| 天天爽天天做| 日韩做爱网站| 亚洲免费视频网| 久久久久久高清毛片一级| 五月天婷婷在线观看| 欧美成人A片在线观看| 黄色九九| 精品精品精品| 超碰93| av三级片在线观看| 91国产做爱| 亚洲天堂美女| 久久精品免费电影| 一级片久久| 精品国产91乱码一区二区三区| 欧美激情伊人久久五月天| 中文字幕无码A片久久| 91久久久久久久18| 婷婷中文网| 操美女逼逼| 少妇无码| 亚洲va欧美va| 欧一美一婬一伦一区二区三区黑人-亚| 欧美XXX黑人XYX性爽| 国内自拍第一页| 蜜桃一区二区中午字幕| 日本一区二区三区视频在线观看| 99久久伊人| 一区视频在线| 成人AV无码| 亚洲免费观看高清视频| 黑人一区二区三区四区| 久热精品免费| 国产成人AV片| 996热久久| 日韩日韩日韩日韩日韩| 日韩婬乱片A片AAA真人视频| 青青草精品| 操比一区| 激情国产精品| 欧美第五页| 中文字幕亞洲高清手機版第617| 欧美爆操视频| 国产综合无码| 一区二区三区免费在线观看| 青青草青娱乐| 日韩无码砖区| 国产中文字幕免费| 黄色成人网站在线播放| 欧美一区二区无码视频| 99热在线中文字幕| 亚洲一级性爱| 婷婷激情久久| 久草视频99| 欧美AⅤ视频| 欧美三级美国一级| 搡BBB| 欧美亚洲小说| 性爱视频小说| av不卡在线| 天堂成人在线视频| 亚洲AA视频| 青娱乐伊人| 日本人妻A片成人免费看片| 日韩一区二区三区在线视频 | 午夜激情视频网站| 午夜福利高清在线观看| 狠狠色噜噜狠狠狠888| 囯产精品一区二区三区线一牛影视1| 囯产精品宾馆在线精品酒店| 一级片黑人| 成人在线一区二区三区| 婷婷中文网| 国产乱码一区二区三区四区在线| 中国黄色一级A片| 操逼爽| 日韩免费视频一区二区| 国产免费观看av| 一级AA视频| 亚洲精品成a人在线观看| 欧美熟妇精品一二三区| 婷婷深爱激情| 男人天堂色男人| 神马午夜精品95| 欧美一区在线视频| 九九久久综合| 成人无码视频| 亚洲美女网站免费观看网址| 亚洲日韩成人电影| 国产91视频| 国产综合久久久777777色胡同| 91超碰免费| 久操视频在线| 99热精品免费观看| 日本A片免费看| 性爱久久久| 波多野结衣av在线观看| 97国产精品视频| 国产性爱电影网| 丁香五月婷婷中文字幕| 国产白丝在线观看| 久久婷婷青青| 91社成人影院| 日韩欧美一级| 国产精品一区二区在线播放| 国产一级A片久久久免费看快餐 | 亚洲免费视频网站| 69AV在线播放| 日日撸视频| 骚网站在线观看| 欧美A√| 国产ts视频| 江苏妇搡BBB搡BBBB| 女毛片| 人妻中文字幕av| 欧美精品成人免码在线| 日本人妻中出| 日韩一区不卡| 日韩高清一区| 亚洲精品久久久久久久蜜桃| 中文字幕免费在线播放| 操美女影院| 成人亚洲欧美| 精品无码一区二区三| 中文资源在线√8| 午夜黄色小视频| 青草伊人网| 天干天干天夜夜| 成人福利| 久久久久成人视频| 久久精品视频99| 久久视频一二| 毛片网站免费| 黄片视频免费看| 天堂中文在线播放| 亚洲高清无码一区| 日韩无码一卡二卡| www四虎com| 最近中文字幕在线视频| 极品av| 大香蕉人妻| 99热精品免费| 夜夜草视频| 日韩一级A| 午夜蜜桃人妻一区二区| 亚洲无码视频在线观看高清| 日韩成人无码免费视频| 91日逼| 亚洲AV成人一区二区三区不卡| 中文字幕亚洲在线观看| 国产精品4| 国产看片网站| 精品国产成人| 91精品电影| 人人做人人爽| 99黄片| 亚洲色图15p| 亚洲AV成人无码精品区| 日本一级a片| av乱伦小说| 天天摸天天操| 高清无码视频免费看| 无码AV一区二区| 成人免费一级视频| 丁香五月激情五月| 成人福利免费视频| www.激情| 视频一区二区免费| 欧洲成人在线视频| 成人做爱免费看| 激情无码一区二区| 日韩中文毛片| 北条麻妃毛片| 国产AV无码区亚洲| 操逼操逼视频| 欧美成人图片视频在线| 国产精品免费观看久久久久久久久| 91视频导航| 免费观看高清无码| 成人黄色在线视频| 午夜av在线免费观看| 怡红院成人网| 97人妻人人澡人人爽人人| 国产成人视频| 特黄AAAAAAAAA真人毛片| 99热久| 影音先锋乱伦| 亚洲激情| 色综合久久久无码中文字幕999| 天堂亚洲AV无码精品成人| 蜜桃性爱视频| 亚洲免费精品视频| 人人摸人人插| 人人爽亚洲AV人人爽AV人人片| 日本国产在线观看| 中文无码日本高潮喷水| 四季AV一区二区夜夜嗨| 国产一区在线播放| 四川少妇BBBB槡BBBB槡| а√天堂中文官网8| 国产在线导航| 人妻九九九| 俺去夜| 黄色一级片在线| 久草成人| 亚洲午夜精品成人毛片| 欧美性爱精品一区| 欧美一区二区三区不卡| 黄色录像一级带| 国产乱子伦视频国产印度| 大学生18一19GAY169| 99热在线看| 屁屁影院CCYYCOM发布地| 国产午夜视频在线观看| 18禁一区二区| 亚洲视频免费在线观看| 香蕉一区二区| 中文在线最新版天堂8| 99久在线精品99re8热| 成人黄色一级A片| 狠狠撸在线视频| 91国产精品在线| 91在线精品秘一区二区黄瓜| 日韩性爱A片| 91双飞会所双飞在线| 无码一区二区在线观看| 亚洲欧美久久久久久久久久久久| 中文字幕在线观看免费高清电影| 一区二区三区Av| 激情五月婷婷| 69式荫蒂被添全过程| 中文字字幕中文字幕乱码| av影音在线| 天天操人人爽| 久久精品三级片| 成人av免费观看| 日韩黄片| 少妇搡BBBB搡BBB搡造水多| 52妺嘿嘿午夜福利在线| 韩国无码免费| 欧美后门菊门交3p、| 无码22p| 国产AV日韩AV| 在线免费观看av片| 操B视频网站| 成人无码观看| 麻豆精品国产| 国产在线h| 精品一区二区三区四区五区| 黄色在线| 99ri精品| 深爱开心激情| 99热最新网址| 欧美黄页| 三级黄色小视频| 高清无码视频在线免费观看| 国产欧美日韩在线播放| 色呦呦一欧美| 亚洲天堂欧美| 美女91小视频| 大乳奶一级婬片A片| 五月天成人网址| 麻豆视频在线播放| 欧美色图在线视频| 日韩无码五月天| 天天爱夜夜爱| 亚洲三级片在线播放| 99精品免费在线观看| 亚洲激情视频网站| 一本色道久久综合熟妇| 无码视频在线免费播放| 性爱网站免费看| 欧美日韩成人视频| 大香蕉久久伊人| 久久亚洲日韩天天做日日做综合亚洲 | 精品少妇3p| 久久93| 99re国产视频| 永久免费不卡在线观看黄网站| 亚洲精品乱码久久久久久蜜桃91 | 无码人妻精品一区二区三千菊电影| 免费黄色av网址| 99热| 国产天堂网| 亲子伦一区二区三区观看方式| 日本欧美操| www欧美日韩| 国产在线色| 四虎影院中文字幕| 一级特黄大片录像i| 免看一级a毛片一片成人不卡| 久久精品色| 熟女人妻人妻の视频| 久久精品久久久久久久| 丁香五月婷婷综合网| 亚洲无码动漫| 五月丁香六月婷婷综合| 国产精品免费久久| 国产AV资源| 国产真实乱婬A片三区高清蜜臀 | 国产成人精品免费视频| 亚洲va在线| 亚洲精品日韩综合观看成人91| 69久久| 国产三级午夜理伦三级| 懂色av蜜臀av粉嫩av分| 人妻丝袜中出北条麻妃| 成人乱无码AV在线观看| 中文字幕高清| 成人精品二区| 久草网站| 日韩1区| 337P粉嫩大胆噜噜噜55569| 特级毛片AAAAAA蜜桃| 男人的天堂2019| 97人人色| 操B图| 91成人情欲影视网| 久久久免费| 大香蕉在线看| 大香蕉综合伊人| 成年人在线视频| 成人黄网免费观看视频| 91大神在线观看入口| 精品国产AV鲁一鲁一区| 精品无码一区二区三区四区| 操骚屄视频| 色色五月天网站| 亚洲人做受| 99国产精品99久久久久久| 毛片一级片| 久热免费视频在线观看| 99久久国产视频| 69久久| 四川少妇BBBB槡BBBB槡| 日韩精品视频一区二区三区| 欧美va视频| 日韩强操逼网| 中文字幕性爱| 欧美性色网| 波多野结衣与黑人| 青青草免费福利视频| 日韩高清AV| 超碰97资源| 无码人妻精品一区二区蜜桃漫画| 国产精品操逼网站| 亚洲小视频| 精品婷婷| 午夜操逼网| 精品人妻一区二区免费蜜桃| www.wuma| 黄色免费网站| 良妇露脸15P| 日欧无码| 一区二区三区水蜜桃| 国产成人毛片18女人18精品| 91在线精品视频| 亚洲色情在线观看| 伊人69| 成av人片一区二区三区久久| 天天日天天操天天日| 国产精品自拍视频| 九色在线观看| 国产成人ab| 午夜福利视频3000| 中文资源在线√8| 久久嫩草精品久久久久精| 日韩色情片| 国产成人精品123区免费视频| 中文字幕AV第一页| 日韩免费看片| 91丨牛牛丨国产人妻| 日本操B| 在线免费观看黄色片| www.豆花视频成人版| 性色aV中文字幕| 五月天丁香社区| 97欧美| 国产毛片777777| 白天操夜夜操| 美女少妇激情BBBB| 亚洲丝袜不卡| 蜜臀久久99精品久久久晴天影视 | 韩国午夜电影| 日本无码嫩草一区二区| 97精品在线| 97精品在线观看| 羽月希奶水饱胀在线播放| 51成人精品午夜福利| 国产亚洲视频在线观看视频| 黄色国产| 亚洲一区二区av| 8x8x黄色| 国产sm视频| 久久九一| 翔田千里av在线| 青青草免费福利视频| 无码人妻AⅤ一区二区三区A片一| 91精品久久香蕉国产线看观看| 囯产精品久久久久久久| 天天夜夜操| 蜜臀久久99精品| 久久久久99| 欧美亚洲系列| 97精品视频| 久久思思热| 亚洲AV无码成人精品区欧洲| A片免费在线播放| 麻豆乱伦视频| 自拍偷拍亚洲无码| 国产91丝袜在线播放| 日韩无码高清网站| 国产狂喷水潮免费网站www | 人人看人人摸人人插| 亚洲成人69| 高清无码免费| 久精品视频| 无码一区二区三区在线| 91资源在线观看| 色呦呦在线| 欧美老女人性爱视频| 久久国产精品99久久人人澡| 日本黄在线看| 日本免费一二三区| 韩国成人无码视频| 污污的网站18| 一区二区三区在线看| 国产精品天天干| 午夜精品18视频国产17c| 久一精品| 欧美日逼网| 男人的天堂在线播放| 大香蕉98| 亚洲AV无码乱码国产精品黑人 | 在线不卡无码| 中文字幕天堂网| 加勒比日韩在线| 悠悠无码一区日韩妇女| 国产精品成人电影| yw尤物| 91.xxxxx| 亚洲69视频| 人妻丰满熟妇av无码区| 久久无码高清| 国产亚洲久一区二区三区| 草草浮力院| 成人午夜无码| 国产大屌| 天堂国产一区二区三区| 国产一精品一aⅴ一免费| 激情婷婷在线| 自拍第一页| 91丨牛牛丨国产人妻| 中出欧美亚洲| 中文字幕乱码亚洲中文在线| 无码日韩精品一区二区免费96| 婷婷天堂站| 国产一级特黄A片| av三级片在线观看| 91福利导航| 爆操人妻| 天天色天天日天天干| 一区二区成人电影| 97免费| 亚洲免费黄色视频| 激情五月天导航| 超碰操| 色情一级AA片免费观看| 国产一a毛一a免费观看| 欧美综合亚洲| 伊人天天日| 欧美群交videotv群交| 欧美日韩婷婷| 7x7x7x人成免费观学生视频| 无码波多野结衣| 精品一区二区三区四区五区六区七区八区九区| 黄片网站入口| 欧一美一婬一伦一区二区三区自慰国| 一级a一级a爰片免费免免在线 | 激情婷婷色五月| 亚洲中文字幕无码爆乳av| 欧美性爱动态| 亚洲无码在线高清| 狼友视频在线看| 五月婷婷啪| 91国产视频网站| 国产精品无码乱伦| 久草大香蕉在线视频| 99精品一区二区三区| 97色色婷婷五月天| 亚洲激情综合视频| 亚洲精品视频在线观看免费| 青草视频在线观看免费| 色老板av| 亚洲AV永久无码国产精品久久| 蜜桃黄色视频| 色情综合| 国产成人精品a视频一区| 精品视频在线看| 欧美亚洲视频在线观看| 99久热在线精品| 亚洲欲色| 十八女人高潮A片免费| 久久精品国产亚洲AV成人婷婷| 狼友综合| 免费无码在线播放| 91丨牛牛丨国产| 亚洲天码中字| 成年人A片| 九九乱伦| 男人天堂v| www.黄色视频| 黄色大片在线免费观看| 久精品视频| 另类av| 最全av在线| 国产手机AV在线| 欧美成人性色欲影院| 亚洲最新无码视频| 免费观看黄色网| 亚洲精品无码更新| 久久久久久久免费无码| 国产熟妇码视频app| 操鸡巴网站| 色婷婷影音| 911精品国产一区二区在线 | а天堂中文在线资源| 亚洲成人综合在线| 操逼大香蕉| 一区二区无码在线| 亚洲天堂在线免费观看| 91视频导航| 香蕉漫画在线观看18| 天堂在线视频免费| 最美人妖系列国产Ts涵涵| 日本少妇BBw| 日屄电影| 免看一级a毛片一片成人不卡| 日韩黄色在线视频| 麻豆国产91在线播放| 无码人妻精品一区二区三区99仓 | 迷情校园综合| 一级特黄色| 国产精品无码天天爽视频| AV片在线观看| 久久国内视频| 婷婷视频| 亚洲草逼视频| 国产成人毛片18女人18精品| 操美女的网站| 国产我不卡| 天天天天天天天干| 60分钟上大床又黄又爽| 五月丁香婷婷在线| 国精产品一区一区三区| 一区免费视频| 日韩人妻无码一区二区三区七区| 国产久视频| 无码三级在线播放| 日韩在线中文字幕| 人妻斩り43歳| 久久久久无码精品国产91福利 | 成人在线H| 日韩成人无码免费视频| 91视频免费播放| 91香蕉在线观看| 在线观看黄色视频网站| 插丰满少妇在线观看| 亚洲精品在| 在线观看不卡av| 豆花视频一区二区| 中文无码熟妇人妻| 无码免费一区| 黄色视频网站免费在线观看| 欧美视频在线观看| 伊人久综合| 国产做受| 免费无码毛片一区二区A片| 免费十无码| 农村一级婬片A片AAA毛片古装| 怡红院男人的天堂| 啪啪啪啪网站| 成人女人18女人毛片| 伊人色色| 可以看的毛片| 久草手机视频在线观看| 青娱乐久久| 大香蕉伊在线观看| 亚洲一区二区三区在线++中国| 国产免看一级a一片成人aⅴ| 翔田千里无码免费播放| 欧美成人精品网站| 自拍视频在线观看| 欧美狠狠操| 少妇精品无码一区二区免费视频| 亚洲精品乱码久久久久久蜜桃欧美| 久久久久久久久久久久国产精品 | 丁香花在线高清完整版视频| 国产精品秘国产精品88| 人人摸人人操人人干| 日韩精品一级| 精品一区在线| 亚洲AV日韩AV永久无码网站| 爱爱欧美| 免费A片在线看| 一区二区三区四区免费看| 亚洲无码一区二区在线观看| 国产操b| 久久精品视频久久| 蜜桃精品一区二区| 天天日天天操天天摸天天干天日射天天插 | 久久国产高清视频| 欧性猛交ⅩXXX乱大交| 91国语对白| 成人精品免费| 午夜无码鲁丝片午夜精品| 亚洲成人性爱在线| 蜜桃91在线观看| 一级国产欧美成人A片| 日韩综合精品中文字幕66| 免费18蜜桃久久19| 日韩无码一区二区三| 99自拍网| 日本在线精品视频| 青青久草| 国产精品可站18| 一区免费在线观看| 国内久久婷婷| 中文字幕在线观看免费高清电影 | 国产在线性爱视频| 欧美婷婷综合| 日韩AV免费看| 欧美一区| 亚洲日本中文字幕在线观看| 影音先锋国产在线| 亚洲色图一区二区三区| 亚洲网站在线观看| 国产成人tv| 99精品免费观看| 亚洲第五页| 中文字幕第4页| 久久嫩草精品| 国产精品久久久久久久9999| 青青青草视频在线观看| 91探花足浴店少妇在线| 操屄视频播放| 超碰在线人人爱| 欧美成人精品在线观看| 国产精品1| 新超碰在线观看| 国产乱码精品一品二品| 97免费| 亚洲中文无码视频| 免费看特别黄色视频| 亚洲另类图片小说| 91在线无码精品秘入口三人| 婷婷色在线| 五月天无码av| 久久精品免费电影| 精品乱子伦一区二区三区免费播成| 色老板在线观看| 伊人久久久影视大全| 久久久五月| 久久黄片| 成人区123| 2016超碰| 91精品国产综合久久久蜜臀主演| 久久免费精品视频| 欧美XXXXBBBB| 日韩情色| 成人特级毛片| 天天色免费视频| 欧美特级黄| 国产麻豆精品成人毛片| 色中文字幕| 97精品人妻麻豆一区二区| 亚洲天堂无码AV| 日批网站在线观看| 久久亚洲中文字幕乱码| 黄色国产视频在线观看| 9l视频自拍蝌蚪9l成人蝌蚪| 亚洲成人免费| 亚洲欧洲自拍| 只有精品| 91精品久久香蕉国产线看观看 | 伊人久久久影视大全| 日韩欧美成人在线视频| 中文字幕在线观看免费高清完整版在线观看 | 丁香婷婷五月基地| 最新中文字幕免费MV第一季歌词| 精品国产99久久久久久www| 一区二区国产视频| 亚洲成人内射| 久久婷婷秘精品日产538| 国产高清精品在线| 男人的天堂在线播放| 亚洲黄色精品| 麻豆疯狂做受XXXX高潮视频| 欧美成人看片黄a免费看| 91色婷婷综合久久中文字幕二区 | 欧美日韩一区二区三区四区| 亚洲综合免费观看高清完整版| 日韩欧美视频一区国产欧美在线| 91无码一区二区三区| 性满足BBWBBWBBW| 婷婷亚洲精| www,色婷婷| 香蕉操逼视频| 国产V精品| 久久久成人影片| 亚洲av在线免费观看| 韩国三级AV| 免费色色| 久久久噜噜噜久久中文字幕色伊伊| 国产精品视频瘾无码| 日韩一区不卡| 黄色小视频免费看| 精品精品视频| 男人的天堂色婷婷| www.蜜桃| 2017天天干天天射| Chinese搡老女人| 亚洲一区| 日本免费色视频| 九色PORNY9l原创自拍| 中文字幕黑人无码| 校园春色av| 天天av天天av天天爽| 亚洲成人电影AV| 老婆被黑人杂交呻吟视频| 九九热只有精品| 大香蕉久久精品| 亚洲无码成人视频| 最近中文字幕2022在线观看A | 人妻精品综合码| 国产精品午夜成人免费| av色在线| 天干夜天干天天天爽视频| 一区二区AV| 国产永久在线| 久久99久久99精品免视看婷婷| 中出欧美亚洲| 国产精品永久久久久久久久久 | 日韩三级片AV| 无码免费毛片一区二区三区古代| 午夜看黄| 少妇搡BBBB搡BBB搡造水多,| 无卡无码| 操操小骚逼| 亚洲AV无码专区在线播放中文| 麻豆乱码国产一区二区三区| 精品国产999久久久免费| 欧美精品18| 亚洲无码高清在线观看视频| 久久91精品| 精久久久| 五月婷婷视频在线观看| 激情国产av| JlZZJLZZJlZZ亚洲女人17| 午夜福利小视频|