电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

java實現2048游戲源代碼

瀏覽:28日期:2022-08-29 13:34:00

本文實例為大家分享了java實現2048游戲源代碼,供大家參考,具體內容如下

一.主要功能:

1、游戲初始化:新建游戲4×4的16宮格畫布,隨機格子上生成2或者4兩個數字2、格子的移動:先判斷能否移動,移動后判斷能否合并,合并后改變格子顏色和數字3、新格子的生成:移動一次,就在剩余的空格子中隨機生成一個2或者44、判贏:16宮格中合并出了“2048”則為游戲勝利5、判輸:16宮格中沒有剩余空格子且不能再向任何方向移動則為游戲失敗

二.項目的主要結構:

java實現2048游戲源代碼

在項目2018游戲中,有4個源文件,此外,還有3個.png和兩個.wav格式的音樂文件。一個音樂是按鍵移動的聲音,另外一個是碰撞后的消除的聲音。然后游戲的最高分保存是在Recording源文件中,之后附上所需的圖片文件和音樂文件:

來了來了.

java實現2048游戲源代碼

java實現2048游戲源代碼

java實現2048游戲源代碼

三.代碼

1、Game.java

package shixun;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JLabel;public class Game extends JFrame { private static final long serialVersionUID = 1L; public static void main(String[] args) { Game UI = new Game(); UI.IntUI(); } // 用于存放數據的數組,構成游戲4*4界面的數值 private int Numbers[][] = new int[4][4] ; private void IntUI() { this.setTitle('2048小游戲'); this.setLocation(450, 100); this.setSize(400, 500); this.setLayout(null); // 開始游戲按鈕 ImageIcon imgicon = new ImageIcon('res/start.png'); JButton bt = new JButton(imgicon); bt.setFocusable(false); bt.setBorderPainted(false); bt.setFocusPainted(false); bt.setContentAreaFilled(false); bt.setBounds(5, 10, 120, 30);// 設置按鈕的x,y坐標位置和寬度與高度 this.add(bt); //后退一步按鈕 ImageIcon backicon = new ImageIcon('res/backicon.png'); JButton back = new JButton(backicon); back.setFocusable(false); back.setBorderPainted(false); back.setFocusPainted(false); back.setContentAreaFilled(false); back.setBounds(270, 10, 120, 30);// 設置按鈕的x,y坐標位置和寬度與高度 this.add(back); // 關于按鈕 ImageIcon imgicon2 = new ImageIcon('res/about.png'); JButton about = new JButton(imgicon2); about.setFocusable(false); about.setBorderPainted(false); about.setFocusPainted(false); about.setContentAreaFilled(false); about.setBounds(160, 10, 70, 30); this.add(about); // 分數顯示 JLabel lb = new JLabel('分數:0'); lb.setBounds(40, 45, 120, 30); lb.setFont(new Font('幼圓', Font.CENTER_BASELINE, 18)); lb.setForeground(new Color(0x000000)); this.add(lb); //最高分數 Recorder.getRecording(); int maxscore = Recorder.getMaxscore_2048(); JLabel M=new JLabel('最高分:0'); M.setBounds(150,45,120,30); M.setFont(new Font('幼圓', Font.CENTER_BASELINE, 18)); M.setForeground(new Color(0x000000)); this.add(M); //靜音 JCheckBox isSoundBox=new JCheckBox('靜音'); isSoundBox.setBounds(290, 45, 120, 30); isSoundBox.setFont(new Font('幼圓', Font.CENTER_BASELINE, 18)); isSoundBox.setFocusable(false); isSoundBox.setBorderPainted(false); isSoundBox.setFocusPainted(false); isSoundBox.setContentAreaFilled(false); this.add(isSoundBox); this.setDefaultCloseOperation(3); this.setResizable(false); this.setVisible(true);// 顯示界面 // 創建事件處理類 MyListener cl = new MyListener(this,Numbers,lb,M, bt, about,back,isSoundBox); bt.addActionListener(cl); about.addActionListener(cl); back.addActionListener(cl); isSoundBox.addActionListener(cl); this.addKeyListener(cl); }// 重寫窗體 @Overridepublic void paint(Graphics g) { super.paint(g); g.setColor(new Color(0xBBADA0)); g.fillRoundRect(15, 110, 370, 370, 15, 15);// 大矩形框 g.setColor(new Color(0xCDC1B4)); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { g.fillRoundRect(25 + i * 90, 120 + j * 90, 80, 80, 15, 15);// 小矩形框 } } // 調整數字的位置并上色 for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { if (Numbers[j][i] != 0) { int FontSize = 30; int MoveX = 0, MoveY = 0; switch (Numbers[j][i]) { case 2: g.setColor(new Color(0xeee4da)); FontSize = 30; MoveX = 0; MoveY = 0; break; case 4: g.setColor(new Color(0xede0c8)); FontSize = 30; MoveX = 0; MoveY = 0; break; case 8: g.setColor(new Color(0xf2b179)); FontSize = 30; MoveX = 0; MoveY = 0; break; case 16: g.setColor(new Color(0xf59563)); FontSize = 29; MoveX = -5; MoveY = 0; break; case 32: g.setColor(new Color(0xf67c5f)); FontSize = 29; MoveX = -5; MoveY = 0; break; case 64: g.setColor(new Color(0xf65e3b)); FontSize = 29; MoveX = -5; MoveY = 0; break; case 128: g.setColor(new Color(0xedcf72)); FontSize = 28; MoveX = -10; MoveY = 0; break; case 256: g.setColor(new Color(0xedcc61)); FontSize = 28; MoveX = -10; MoveY = 0; break; case 512: g.setColor(new Color(0xedc850)); FontSize = 28; MoveX = -10; MoveY = 0; break; case 1024: g.setColor(new Color(0xedc53f)); FontSize = 27; MoveX = -15; MoveY = 0; break; case 2048: g.setColor(new Color(0xedc22e)); FontSize = 27; MoveX = -15; MoveY = 0; break; default: g.setColor(new Color(0x000000)); break; } g.fillRoundRect(25 + i * 90, 120 + j * 90, 80, 80, 15, 15);// 小矩形框上色 g.setColor(new Color(0x000000)); g.setFont(new Font('Kristen ITC', Font.PLAIN, FontSize)); g.drawString(Numbers[j][i] + '', 25 + i * 90 + 30 + MoveX, 120 + j * 90 + 50 + MoveY); } } } }}

2、MyListener.java

package shixun;import java.awt.Component;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.util.Arrays;import java.util.Random;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JLabel;import javax.swing.JOptionPane;public class MyListener extends KeyAdapter implements ActionListener {/** * KevinWu */ private Game UI;// 界面對象 private int Numbers[][];// 存放數據的數組 private Random rand = new Random(); private int BackUp[][]= new int[4][4];//用于備份數組,供回退時使用 private int BackUp2[][]= new int[4][4];//用于備份數組,供起死回生時使用 public JLabel lb; public JLabel M; int score = 0; int maxscore=Recorder.getMaxscore_2048(); int tempscore,tempscore2;//記錄回退isWin的分數值 public JButton bt,about,back; public JCheckBox isSoundBox; private boolean isWin=false,relive=false,hasBack=false,isSound=true; public MyListener(Game UI, int Numbers[][], JLabel lb,JLabel M ,JButton bt,JButton about,JButton back,JCheckBox isSoundBox) { this.UI = UI; this.Numbers = Numbers; this.lb = lb; this.bt=bt; this.about=about; this.back=back; this.isSoundBox=isSoundBox; this.M=M; } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource() ==bt ){ isWin=false; for (int i = 0; i < 4; i++) for (int j = 0; j < 4; j++) Numbers[i][j] = 0;score = 0;// 保證每次重置游戲都是0分開始 lb.setText('分數:' + score); M.setText('最高分:'+maxscore); int r1 = rand.nextInt(4); int r2 = rand.nextInt(4); int c1 = rand.nextInt(4); int c2 = rand.nextInt(4); while (r1 == r2 && c1 == c2) { r2 = rand.nextInt(4); c2 = rand.nextInt(4); } // 生成數字(2或者4) int value1 = rand.nextInt(2) * 2 + 2; int value2 = rand.nextInt(2) * 2 + 2; // 把數字存進對應的位置 Numbers[r1][c1] = value1; Numbers[r2][c2] = value2; UI.paint(UI.getGraphics()); } else if(e.getSource()==about){ JOptionPane.showMessageDialog(UI, '游戲規則:n' + '開始時棋盤內隨機出現兩個數字,出現的數字僅可能為2或4n' + '玩家可以選擇上下左右四個方向,若棋盤內的數字出現位移或合并,視為有效移動n' + '玩家選擇的方向上若有相同的數字則合并,每次有效移動可以同時合并,但不可以連續合并n' + '合并所得的所有新生成數字想加即為該步的有效得分n' + '玩家選擇的方向行或列前方有空格則出現位移n' + '每有效移動一步,棋盤的空位(無數字處)隨機出現一個數字(依然可能為2或4)n' + '棋盤被數字填滿,無法進行有效移動,判負,游戲結束n' + '棋盤上出現2048,判勝,游戲結束。n' ); } else if(e.getSource()==back&&hasBack==false){ hasBack=true; if(relive==false){ score=tempscore; lb.setText('分數:' + score); for(int i=0;i<BackUp.length;i++){ Numbers[i]=Arrays.copyOf(BackUp[i], BackUp[i].length); } } else{ score=tempscore2; lb.setText('分數:' + score); for(int i=0;i<BackUp2.length;i++){ Numbers[i]=Arrays.copyOf(BackUp2[i], BackUp2[i].length); } relive=false; } UI.paint(UI.getGraphics()); } else if(e.getSource().equals(isSoundBox)){ if (isSoundBox.isSelected()) isSound=false; else isSound=true; } } // 鍵盤監聽 public void keyPressed(KeyEvent event) {int Counter = 0;// 計算器,判斷是否移動了 int NumCounter = 0;// 用于統計整個大方框中數字的個數,判斷是否已滿 int NumNearCounter = 0;// 用于統計相鄰格子數字相同的個數 /* * 方向鍵鍵值:左:37上:38右:39下:40 */ hasBack = false; if (BackUp != null || BackUp.length != 0) { tempscore2 = tempscore;// 先把分數備份好 // 下面的for循環調用java.util.Arrays.copyOf()方法復制數組,實現備份 for (int i = 0; i < BackUp.length; i++) { BackUp2[i] = Arrays.copyOf(BackUp[i], BackUp[i].length); } } tempscore = score;// 先把分數備份好 // 下面的for循環調用java.util.Arrays.copyOf()方法復制數組,實現備份 for (int i = 0; i < Numbers.length; i++) { BackUp[i] = Arrays.copyOf(Numbers[i], Numbers[i].length); } if (isWin == false) { switch (event.getKeyCode()) { case 37: // 向左移動 if (isSound == true) new PlaySound('move.wav').start(); for (int h = 0; h < 4; h++) for (int l = 0; l < 4; l++) if (Numbers[h][l] != 0) { int temp = Numbers[h][l]; int pre = l - 1; while (pre >= 0 && Numbers[h][pre] == 0) { Numbers[h][pre] = temp; Numbers[h][pre + 1] = 0; pre--; Counter++; } } for (int h = 0; h < 4; h++) for (int l = 0; l < 4; l++) if (l + 1 < 4 && (Numbers[h][l] == Numbers[h][l + 1]) && (Numbers[h][l] != 0 || Numbers[h][l + 1] != 0)) { if (isSound == true) new PlaySound('merge.wav').start(); Numbers[h][l] = Numbers[h][l] + Numbers[h][l + 1]; Numbers[h][l + 1] = 0; Counter++; score += Numbers[h][l]; if (Numbers[h][l] == 2048) { isWin = true; } }for (int h = 0; h < 4; h++) for (int l = 0; l < 4; l++) if (Numbers[h][l] != 0) { int temp = Numbers[h][l]; int pre = l - 1; while (pre >= 0 && Numbers[h][pre] == 0) { Numbers[h][pre] = temp; Numbers[h][pre + 1] = 0; pre--; Counter++; } } break; case 39:// 向右移動 if (isSound == true) new PlaySound('move.wav').start(); for (int h = 3; h >= 0; h--) for (int l = 3; l >= 0; l--) if (Numbers[h][l] != 0) { int temp = Numbers[h][l]; int pre = l + 1; while (pre <= 3 && Numbers[h][pre] == 0) { Numbers[h][pre] = temp; Numbers[h][pre - 1] = 0; pre++; Counter++; } } for (int h = 3; h >= 0; h--) for (int l = 3; l >= 0; l--) if (l + 1 < 4 && (Numbers[h][l] == Numbers[h][l + 1]) && (Numbers[h][l] != 0 || Numbers[h][l + 1] != 0)) { if (isSound == true) new PlaySound('merge.wav').start(); Numbers[h][l + 1] = Numbers[h][l] + Numbers[h][l + 1]; Numbers[h][l] = 0; Counter++; score += Numbers[h][l + 1]; if (Numbers[h][l + 1] == 2048) { isWin = true; } } for (int h = 3; h >= 0; h--) for (int l = 3; l >= 0; l--) if (Numbers[h][l] != 0) { int temp = Numbers[h][l]; int pre = l + 1; while (pre <= 3 && Numbers[h][pre] == 0) { Numbers[h][pre] = temp; Numbers[h][pre - 1] = 0; pre++; Counter++; } } break; case 38: //向上移動 if (isSound == true) new PlaySound('move.wav').start(); for (int l = 0; l < 4; l++) for (int h = 0; h < 4; h++) if (Numbers[h][l] != 0) { int temp = Numbers[h][l]; int pre = h - 1; while (pre >= 0 && Numbers[pre][l] == 0) { Numbers[pre][l] = temp; Numbers[pre + 1][l] = 0; pre--; Counter++; } } for (int l = 0; l < 4; l++) for (int h = 0; h < 4; h++) if (h + 1 < 4 && (Numbers[h][l] == Numbers[h + 1][l]) && (Numbers[h][l] != 0 || Numbers[h + 1][l] != 0)) { if (isSound == true) new PlaySound('merge.wav').start(); Numbers[h][l] = Numbers[h][l] + Numbers[h + 1][l]; Numbers[h + 1][l] = 0; Counter++; score += Numbers[h][l]; if (Numbers[h][l] == 2048) { isWin = true; } } for (int l = 0; l < 4; l++) for (int h = 0; h < 4; h++) if (Numbers[h][l] != 0) { int temp = Numbers[h][l]; int pre = h - 1; while (pre >= 0 && Numbers[pre][l] == 0) { Numbers[pre][l] = temp; Numbers[pre + 1][l] = 0; pre--; Counter++; } } break; case 40: // 向下移動 if (isSound == true) new PlaySound('move.wav').start(); for (int l = 3; l >= 0; l--) for (int h = 3; h >= 0; h--) if (Numbers[h][l] != 0) { int temp = Numbers[h][l]; int pre = h + 1; while (pre <= 3 && Numbers[pre][l] == 0) { Numbers[pre][l] = temp; Numbers[pre - 1][l] = 0; pre++; Counter++; } } for (int l = 3; l >= 0; l--) for (int h = 3; h >= 0; h--) if (h + 1 < 4 && (Numbers[h][l] == Numbers[h + 1][l]) && (Numbers[h][l] != 0 || Numbers[h + 1][l] != 0)) { if (isSound == true) new PlaySound('merge.wav').start(); Numbers[h + 1][l] = Numbers[h][l] + Numbers[h + 1][l]; Numbers[h][l] = 0; Counter++; score += Numbers[h + 1][l]; if (Numbers[h + 1][l] == 2048) { isWin = true; } } for (int l = 0; l < 4; l++) for (int h = 0; h < 4; h++) if (Numbers[h][l] != 0) { int temp = Numbers[h][l]; int pre = h - 1; while (pre >= 0 && Numbers[pre][l] == 0) { Numbers[pre][l] = temp; Numbers[pre + 1][l] = 0; pre--; Counter++; } } break;case 40: // 向下移動 if (isSound == true) new PlaySound('move.wav').start(); for (int l = 3; l >= 0; l--) for (int h = 3; h >= 0; h--) if (Numbers[h][l] != 0) { int temp = Numbers[h][l]; int pre = h + 1; while (pre <= 3 && Numbers[pre][l] == 0) { Numbers[pre][l] = temp; Numbers[pre - 1][l] = 0; pre++; Counter++; } } for (int l = 3; l >= 0; l--) for (int h = 3; h >= 0; h--) if (h + 1 < 4 && (Numbers[h][l] == Numbers[h + 1][l]) && (Numbers[h][l] != 0 || Numbers[h + 1][l] != 0)) { if (isSound == true) new PlaySound('merge.wav').start(); Numbers[h + 1][l] = Numbers[h][l] + Numbers[h + 1][l]; Numbers[h][l] = 0; Counter++; score += Numbers[h + 1][l]; if (Numbers[h + 1][l] == 2048) { isWin = true; } } for (int l = 3; l >= 0; l--) for (int h = 3; h >= 0; h--) if (Numbers[h][l] != 0) { int temp = Numbers[h][l]; int pre = h + 1; while (pre <= 3 && Numbers[pre][l] == 0) { Numbers[pre][l] = temp; Numbers[pre - 1][l] = 0; pre++; Counter++; } } break;default:break;} if(maxscore<=score) { maxscore=score; Recorder.setMaxscore(maxscore); Recorder.keepRecording(); } for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (Numbers[i][j] == Numbers[i][j + 1] && Numbers[i][j] != 0) { NumNearCounter++; } if (Numbers[i][j] == Numbers[i + 1][j] && Numbers[i][j] != 0) { NumNearCounter++; } if (Numbers[3][j] == Numbers[3][j + 1] && Numbers[3][j] != 0) { NumNearCounter++; } if (Numbers[i][3] == Numbers[i + 1][3] && Numbers[i][3] != 0) { NumNearCounter++; } } } for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { if (Numbers[i][j] != 0) { NumCounter++; } } } if (Counter > 0) { lb.setText('分數:' + score); M.setText('最高分:'+maxscore); int r1 = rand.nextInt(4); int c1 = rand.nextInt(4); while (Numbers[r1][c1] != 0) { r1 = rand.nextInt(4); c1 = rand.nextInt(4); } int value1 = rand.nextInt(2) * 2 + 2; Numbers[r1][c1] = value1; }if (isWin == true){ UI.paint(UI.getGraphics()); JOptionPane.showMessageDialog(UI, '恭喜你贏了!n您的最終得分為:' + score); } if (NumCounter == 16 && NumNearCounter == 0) { relive = true; JOptionPane.showMessageDialog(UI, '沒地方可以合并咯!!' + 'n很遺憾,您輸了~>_<~' + 'n悄悄告訴你,游戲有起死回生功能哦,不信你“退一步”試試?' + 'n說不定能扭轉乾坤捏 (^_~)'); } UI.paint(UI.getGraphics()); } } }

3、PlaySound.java

package shixun;import java.io.File;import java.io.IOException;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.DataLine;import javax.sound.sampled.SourceDataLine;//播放聲音的線程public class PlaySound extends Thread { private String filename; public PlaySound(String wavfile) { filename = 'res/' + wavfile; } public void run() { File soundFile = new File(filename); AudioInputStream audioInputStream = null; try { audioInputStream = AudioSystem.getAudioInputStream(soundFile); } catch (Exception e1) { e1.printStackTrace(); return; } AudioFormat format = audioInputStream.getFormat(); SourceDataLine auline = null; DataLine.Info info = new DataLine.Info(SourceDataLine.class, format); try { auline = (SourceDataLine) AudioSystem.getLine(info); auline.open(format); } catch (Exception e) { e.printStackTrace(); return; } auline.start(); int nBytesRead = 0; // 這是緩沖 byte[] abData = new byte[512]; try { while (nBytesRead != -1) { nBytesRead = audioInputStream.read(abData, 0, abData.length); if (nBytesRead >= 0) auline.write(abData, 0, nBytesRead); } } catch (IOException e) { e.printStackTrace(); return; } finally { auline.drain(); auline.close(); } }}

4、Recorder.java

package shixun;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class Recorder { private static int maxscore_2048=0; public static int getMaxscore_2048() { // TODO Auto-generated method stub return maxscore_2048; } public static void setMaxscore(int maxscore_2048) { // TODO Auto-generated method stub Recorder.maxscore_2048=maxscore_2048; } private static FileReader fr=null;private static BufferedReader br=null;private static FileWriter fw=null;private static BufferedWriter bw=null;//從文件中讀取,記錄public static void getRecording(){ boolean flag =false;//判斷文件是否新建 try { File f=new File('src/myRecording.txt'); if(f.exists()) { fr=new FileReader(f); br=new BufferedReader(fr); String n=br.readLine(); maxscore_2048=Integer.parseInt(n); } else { flag=f.createNewFile(); } } catch(Exception e) { e.printStackTrace(); } finally { try { if(!flag) { br.close(); fr.close(); } }catch(Exception e2) { e2.printStackTrace(); } } } //保存最高分記錄 public static void keepRecording() { try { File f=new File('src/myRecording.txt'); fw=new FileWriter(f); bw=new BufferedWriter(fw); bw.write(maxscore_2048+'rn'); }catch(IOException e) { e.printStackTrace(); } finally { try { bw.close(); fw.close(); } catch(IOException e) { e.printStackTrace(); } } } }

四.游戲截圖

java實現2048游戲源代碼

java實現2048游戲源代碼

更多有趣的經典小游戲實現專題,分享給大家:

C++經典小游戲匯總

python經典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經典游戲 玩不停

java經典小游戲匯總

javascript經典小游戲匯總

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 羞羞视频日本 | 日本欧美视频在线观看 | 亚洲国产精品一区二区第一页 | 成年免费视频黄网站在线观看 | 日韩高清av在线 | 国产欧美一区二区精品秋霞影院 | 成人免费av | 青青久在线视频免费观看 | 日韩精品一区二区三区在线播放 | 91亚洲国产精品 | 尤物视频激情在线视频观看网站 | 麻花豆传媒剧国产免费mv在线 | 欧美性做爰视频 | 亚洲精品欧美二区三区中文字幕 | 97夜夜澡人人双人人人喊 | 国产人妖在线视频 | 久久精品亚洲国产 | 亚洲成人第一网站 | 成人无码视频在线观看网址 | 一个色亚洲 | 国产精品久久久久久久免费大片 | 欧美极品jiizzhd欧美暴力 | 性欧美长视频免费观看不卡 | 色图自拍偷拍 | 一级做a爱视频 | 国产嫩草影院久久久 | 精品少妇一区二区三区四区五区 | ass亚洲熟妇毛耸耸pics | 欧美精品一区二区三区四区五区 | 久久www香蕉免费人成 | 亚洲色18禁成人网站www | 人禽20z0性伦 | 天堂在线www天堂中文在线 | 婷婷丁香六月天 | 国产一在线精品一区在线观看 | 精品人妻二区中文字幕 | 亚洲天堂中文字幕在线 | 午夜蜜汁一区二区三区av | 葵司免费一区二区三区四区五区 | 精品人妻伦九区久久aaa片 | 久久99精品国产.久久久久 | av黄色在线播放 | 韩国美女视频黄是免费 | 最新国产精品久久精品 | 国产 日韩 欧美 成人 | 国产裸体舞一区二区三区 | 日韩黄色免费网站 | 亚洲成色| 日日操日日 | 美女毛片一区二区三区四区 | 91看片一区二区三区 | 亚洲手机av | 亚洲精品少妇一区二区 | 国产精品婷婷久久爽一下 | 污污的网站在线免费观看 | 亚洲a∨无码一区二区三区 国产乱子伦精品免费女 | 亚洲天堂成人在线视频 | 中文一区二区 | 人妻精品久久久久中文字幕 | 最新69国产成人精品视频免费 | 久久国产劲爆∧v内射 | 中国av一区 | 在线精品小视频 | 国产l精品国产亚洲区在线观看 | 午夜三区 | 精品少妇人妻av免费久久久 | 摸摸摸bbb毛毛毛片 蘑菇av | 九九热精品在线视频 | 一级女人裸体舞毛片 | 亚洲色图丝袜 | 在线视频免费观看一区 | 伊人青青 | 亚洲精品乱码久久观看网 | 欧美人做人爱a全程免费 | av无码av天天av天天爽 | 熟妇人妻系列av无码一区二区 | 国产欲妇 | 成人国产一区二区三区 | 欧美久久一区 | 日韩成人中文字幕 | 狂野3p欧美激情性xxxx | 中国china体内裑精亚洲片 | 亚洲资源av| 农村偷人一级超爽毛片 | 国产二区三区视频 | 亚洲欧洲免费视频 | 免费看网站在线观 | 沉溺于黑人叶爱中文字幕 | 中文字幕乱码在线人视频 | 欧美日比视频 | 亚洲视频h| 天躁狠狠躁 | 狠狠色婷婷狠狠狠亚洲综合 | 蜜桃视频一区二区三区 | 女女同性女同区二区国产 | 亚洲午夜精品久久久久久 | 狠狠色噜噜狠狠狠狠2021天天 | 337p粉嫩大胆噜噜噜亚瑟影院 | 日韩av在线高清 | 欧美精品一区二区性色 | 91九色porn | 精品视频无码一区二区三区 | 丝袜高跟呻吟 | 粉嫩粉嫩一区二区三区在线播放 | 国产毛片一区二区三区va在线 | 先锋资源久久 | 少妇啊灬啊别停灬用力啊房东 | 日本特级黄色 | 久久www免费人成精品 | 亚洲国产av高清无码 | 国产精品99久久久久久宅男 | 女性隐私黄www网站视频 | 欧美成年人视频在线观看 | 动漫av网| 伊人网欧美 | 桥本有菜aⅴ一区二区三区 桥本有菜免费av一区二区三区 | 无套内射极品少妇chinese | 国产对白videos麻豆高潮 | 色就是色欧美色图 | 亚洲精品99999 | 久艹av| 一个色综合网 | 一级黄色视屏 | 麻豆精品久久久 | 黄色的一级片 | 在熟睡夫面前侵犯我在线播放 | 国产欧美在线 | 麻花豆传媒mv在线观看网站 | a在线观看免费网站大全 | 午夜视频体内射.com.com | 日韩乱码在线 | 日韩专区欧美专区 | 翁虹三级做爰在线播放 | 色资源av中文无码先锋 | 青草av在线 | 首页 动漫 亚洲 欧美 日韩 | 私人成片免费观看 | 漂亮少妇激烈床戏 | 精品少妇一区 | 国产精品视频第一区二区三区 | 欧美视频一区 | 无码人妻精品一区二区三区免费 | 婷婷久久五月天 | 性视屏| 亚洲成人午夜av | 大奶子情人| 无码高潮爽到爆的喷水视频app | 精品久久久久久无码中文字幕一区 | 交视频在线播放 | 欧美日韩中文在线观看 | 国产成人看片 | 乱人伦精品视频在线观看 | 女人被狂躁c到高潮喷水电影 | 日出水了特别黄的视频 | 张柏芝54张无删码艳照在线播放 | 色综合久久中文娱乐网 | 欧美成人做爰大片免费看黄石 | 免费看黄色小视频 | 牛牛超碰 | 中日躁夜夜躁 | 日韩裸体做爰xxxⅹ 日韩麻豆 | 风流少妇bbwbbw69视频 | 成人羞羞网站入口免费 | 二区不卡 | 日日摸夜夜骑 | 天堂av一区二区 | 国产亚洲精品久久久91 | 国产精品国产三级国产在线观什 | 国产精品久久久爽爽爽麻豆色哟哟 | 酒店大战丝袜高跟鞋人妻 | 亚洲高清视频在线播放 | 黄色一二三区 | 欧美中文字幕在线播放 | 三上悠亚精品二区 | 国精产品一区一区三区mba视频 | 无线日本视频精品 | 少妇特黄v一区二区三区图片 | 国产精品久久久久久久福利竹菊 | ,国产精品国产三级国产 | 性欧美18一19内谢 | 人人做人人爽 | 亚洲第一国产 | 中文字幕精品一区久久久久 | wwwxxx亚洲| 天天曰天天干 | 三级网址在线播放 | 中国女人啪啪69xxⅹ偷拍 | 日韩av在线免费 | 明日花绮罗576空乘在线播放 | 亚洲免费福利视频 | 97精品无人区乱码在线观看 | 婷婷精品国产欧美精品亚洲人人爽 | 成年人网站在线观看视频 | 性鲍视频在线 | 日本强好片久久久久久aaa | 毛片网站大全 | 精品国产一区二区三区久久久狼 | 国产精品日韩av在线播放 | 国产精品久久无码一区二区三区网 | 性高朝大尺度少妇大屁股 | 亚洲精品久久久久av无码 | 在线视频h| 欧美性受xxxx黑人xyx性爽 | 女人裸体偷拍全过程 | 天天操狠狠操夜夜操 | 国产精品www在线观看 | 日韩经典第一页 | 男女下面进入的视频免费午夜 | 波多野结衣在线视频播放 | 伦伦影院午夜理论片 | 久久精品国产999大香线蕉 | 亚洲va久久久噜噜噜久久狠狠 | 中文日字幕无限码 | 成人国内精品久久久久影院成人国产9 | 久久不卡影院 | 波多野结衣亚洲天堂 | 午夜不卡久久精品无码免费 | 99999av| 久久久久人妻精品一区三寸 | 国产亚洲精品精品国产亚洲综合 | 丝袜高跟呻吟 | 欧美区一区二区 | 中文人妻无码一区二区三区信息 | 亚洲日韩小电影在线观看 | 永久免费在线看片 | 三级毛片网 | 久久艹久久 | 男人懂得网站 | 久久国产午夜精品理论片最新版本 | 免费毛片大肚孕妇孕交av | 国产一国产二国产三 | 黄色无遮挡 | 综合久久综合久久 | 成人综合区 | 国产一区二区三区 | 日韩少妇 | 日本二区在线观看 | 国产你懂 | 美国黄色毛片一级 | 国产91片 | 日韩欧美三级视频 | 区二区三区玖玖玖 | 国产成人av手机在线观看 | 久久久国产精品黄毛片 | 欧美大片网站 | 亚洲性精品 | 中文字幕日本最新乱码视频 | 日韩和的一区二区 | 久草视频在 | 国产在线观看中文字幕 | 欧美一区二区最爽乱淫视频免费看 | 久久国产精品99久久久久久进口 | 黄色大片网 | 日韩毛片在线视频 | yy8男人的天堂 | 91国内在线 | 做爰吃奶全过程免费的网站 | 国产午夜片 | 荡女精品导航 | 深夜福利网站在线 | 人妻无码久久精品 | 久久99精品久久久久久久久久久久 | 手机在线一区二区三区 | 欧美国产在线观看 | 日韩第三页| 国产a一级片 | 国产蜜臀av在线一区尤物 | 国产精品综合久久久 | 午夜成人鲁丝片午夜精品 | 日本黄色动态图 | 国产超碰人人爽人人做人人添 | 婷婷综合影院 | 久久精品一区二区三区中文字幕 | 成人性生交大片免费看- | 中文在线日本 | 亚洲欧洲一区 | 蜜桃视频在线观看免费视频网站www | 亚洲国产欧洲综合997久久, | 人人妻人人爽人人做夜欢视频 | 岛国a视频 | 国产精品第一国产精品 | 中文字幕在线免费看线人 | 色噜噜狠狠狠狠色综合久不 | 成人性视频在线 | 多毛的亚洲人毛茸茸 | www.av网址| 色五月五月丁香亚洲综合网 | 好吊爽在线播放视频 | 韩国中文字幕在线观看 | 国产精品偷窥熟女精品视频 | 久久国产精品久久久 | av乱码av免费aⅴ成人 | www婷婷av久久久影片 | 久久 国产 尿 小便 嘘嘘 | 国产无套粉嫩白浆内谢在a 国产无套粉嫩白浆内谢在线 | 黄色一级片儿 | 玖玖精品视频 | 女生毛片| 中文字幕亚洲无线码 | 无码高潮少妇毛多水多水免费 | 亚洲精品无人区 | 黄色综合| 午夜成人亚洲理伦片在线观看 | 午夜国人精品av免费看 | 777久久精品一区二区三区无码 | 日韩av手机在线免费观看 | 青青艹在线视频 | 久久香蕉精品 | 国产精品久久久久久久久久久免费看 | 视频在线a| 久久婷五月 | 私人av| 4438x亚洲 | 国产又粗又猛又爽又黄的视频软件 | 亚洲欧美一区二区三区三高潮 | 日韩中文字幕高清 | 全黄久久久久a级全毛片 | 久久亚洲区| 亚洲欧洲一区二区三区四区 | 国产精品第157页 | 国产精品夜间视频香蕉 | 希岛爱理aⅴ在线中文字幕 希岛爱理和黑人中文字幕系列 | 99国产精品自在自在久久 | 欧美深夜福利视频 | 国产一级淫 | 色窝窝无码一区二区三区成人网站 | 亚洲一区二区三区乱码aⅴ 亚洲一区二区三区日本久久九 | 特黄aaaaaaa片免费视频 | 国产乱码精品 | 欧美人与牲禽xxxxx | 激情高潮呻吟抽搐喷水 | 国产亚洲日韩av在线播放不卡 | 成人午夜福利视频后入 | 999综合网 | 欧美性xxxxxxxxx | 国产精品对白刺激 | 国产成人免费ā片在线观看 | 大地资源中文在线观看官网第二页 | 亚洲色图少妇 | 午夜少妇性高湖久久久久 | 久久黄色视屏 | 国产伦精品一区二区三区免费迷 | 国产香蕉视频在线播放 | 国产女主播户外勾搭野战 | 微拍 福利 视频 国产 | 国产麻豆剧传媒精品国产av | 女人的黄色片 | 成熟女人毛片www免费版在线 | 国产又色又爽又刺激在线播放 | 久久av资源网 | 中文字幕在线播放不卡 | 中文字幕丰满伦孑 | 日本高清熟妇老熟妇 | 秋霞av国产精品一区 | 韩国成人免费视频 | 成年人免费网站在线观看 | 成人性做爰av片免费看 | 少妇高潮大叫好爽喷水 | 亚洲欧美日本国产 | 国产精品av在线 | 丁香五月欧美成人 | 天天操夜操 | 欧美性受xxxxx| 一级特黄色 | 国产精品video | 日韩一区精品视频一区二区 | 国产精品国产三级国产专区51 | 国产精品美女一区 | 天天午夜| www亚洲免费 | 亚洲第一激情 | 亚洲乱码一区二区 | 伊人影院在线视频 | 日韩精品在线观看视频 | 人人干人人爽 | 毛片毛片毛片 | 国产精品国产精品国产专区不片 | 国产精久久一区二区三区 | 美女黄网站18禁免费看 | 98久久 | 免费一级片观看 | 国产麻豆精品一区 | 国产黄色免费网站 | 两个人做羞羞的视频 | 日韩在线视频免费观看 | 9九色桋品熟女内射 | 小明看欧美日韩免费视频 | jzzjzz日本丰满成熟少妇 | 一区二区三区视频在线播放 | 东日韩二三区 | 日韩精品免费一区二区三区 | 播播激情网 | 欧美成人精品a∨在线观看 香蕉av福利精品导航 | 国产在线观看黄色 | 国产剧情v888av | 亚洲欧美中文日韩在线 | 国产伦精品一区二区三区视频不卡 | 99久久精品久久久久久ai换脸 | 国语对白一区 | 亚洲色www永久网站 少妇人妻综合久久中文字幕 | 啪啪av导航 | 激情爆乳一区二区三区 | 免费在线观看污 | 久久中文视频 | 狠狠色噜噜狠狠狠8888米奇 | 日韩视频中文字幕在线观看 | 美女隐私视频黄www曰本 | 国产做爰视频 | 免费乱理伦片在线观看夜 | 亚洲人成人77777网站 | 久久99精品久久久久婷婷 | 国产做爰xxxⅹ高潮视频在线 | 52avavjizz亚洲精品 | 色婷婷av一区二区三区丝袜美腿 | 欧美3p激情一区二区三区猛视频 | 在线观看中文字幕av | 免费无遮挡在线观看视频网站 | 亚洲国产情侣 | 亚洲香蕉视频天天爽 | 欧美亚洲视频一区 | 深夜福利影院 | 肉体公尝中文字幕第三部 | 91麻豆精品秘密 | 黄色网在线 | 男女激情视频免费观看刺激 | 欧美成人一区二免费视频小说 | 99久久免费精品国产男女高不卡 | 四虎精品 | 亚洲日日夜夜 | 少妇人妻系列无码专区视频 | 国产精品一区二区无线 | 色诱视频在线观看 | 91淫黄大片 | 在线观看中文字幕网站 | 欧美综合在线视频 | 久啪视频 | 亚洲精品国产精品国自产在线 | 亚洲图片在线播放 | 中国女人真人一级毛片 | 国产成人免费视频精品含羞草妖精 | 欧美性jizz18性欧美肥胖脸 | 日本精品久久久久久草草 | 国产视频第一页 | 欧美日韩精品在线观看 | 777色狠狠一区二区三区 | 国产91在线播放9色不卡 | 久久精品无码一区二区日韩av | 新疆毛片| 六姐妹在线观看免费 | 国产乱能 | 日韩伦理在线视频 | 国产巨乳在线观看 | 欧美中文字幕在线 | 成人日韩视频 | 欧美日韩在线一区二区 | 农村少妇伦理精品 | 国产丝袜一区视频在线观看 | 亚洲色大成网站www 中文字幕色婷婷在线视频 麻豆人妻少妇精品无码专区 | 男人扒开女人腿桶到爽免费 | 91成人精品一区在线播放69 | 二宫光在线播放88av | 久久在线视频 | 成 人 黄 色 片 在线播放 | 日韩美女乱淫免费看视频大黄 | 伊人一道本| 国产中年夫妇交换高潮呻吟 | 国产一区二区三区免费观看网站上 | 久草视频福利 | 大荫蒂欧美精品另类 | 日韩爱爱片 | 免费av网址大全 | 亚洲成人在线视频网站 | 国产精品入口66mio | 国产日日干 | 久久人人妻人人爽人人爽 | 两个奶头被吃高潮视频 | 黄色动漫在线免费观看 | 欧美激情图片 | 日本少妇网站 | 最近最新中文字幕高清免费 | 四虎影视免费观看 | 美女午夜影院 | 又粗又猛又爽又黄少妇视频网站 | 色屁屁www影院入口免费 | 久久精品女同亚洲女同13 | 色77777| 66亚洲一卡2卡新区成片发布 | 国产成人精品日本亚洲专区 | a免费网站免费观看 | 亚洲地区一二三色 | 免费看av软件 | 亚州视频在线 | 中文字幕在线看片 | 精品人伦一区二区三区蜜桃免费 | 欧美日韩1区2区3区 欧美日韩3p | 亚洲 欧美 变态 另类 制服 | 白白色2012年最新视频 | 波多野吉衣av在线 | 午夜福利电影 | av免费网 | 亚洲操片 | 久久久久99精品久久久久 | 日韩精品一区二区三区在线播放 | 少妇全黄性生交片 | 亚洲色图网站 | 国产成人精品在线视频 | 亚洲精品成人片在线观看 | 少妇脱了内裤让我添 | 久久久精彩视频 | 久久蜜桃资源一区二区老牛 | 欧美日韩激情一区二区 | 好吊妞视频988gao免费 | 成人xxx视频 | 99精品热 | 黄色应用在线观看 | 粗壮挺进人妻水蜜桃成熟 | 亚洲精品视频91 | 欧美日韩午夜爽爽 | 麻豆短视频 | 色片网站在线观看 | 亚洲色婷婷六月亚洲婷婷6月 | 三级视频在线播放 | 国产欧美一区二区精品性色 | 123毛片| 黑人做爰xxxⅹ性少妇69小说 | 日b视频免费观看 | 日韩在线精品 | 1024毛片基地| 国产露脸xxⅹ69 | 午夜精品三级久久久有码 | 欧美成人免费视频 | 青青草成人影视 | 女人18毛片九区毛片在线 | 亚洲性事 | 亚洲人成欧美中文字幕 | 国产无遮挡又黄又爽免费视频 | 天堂亚洲免费视频 | 在线精品一区 | 欧洲精品码一区二区三区 | 无码人妻精品一区二区三区不卡 | 182tv在线观看免费午夜免费线路 | 5151精品国产人成在线观看 | 国产偷窥盗摄一区二区 | 麻豆天天躁天天揉揉av | 揄拍成人国产精品视频 | 亚洲黄色小视频在线观看 | 国产一级片麻豆 | 欧美丰满一区二区免费视频 | 欧美区日韩区 | 黄色影院国产 | 日韩网红少妇无码视频香港 | 国产精品福利一区二区 | 在线天堂最新版资源 | 午夜免费国产体验区免费的 | 午夜av激情 | 欧美交换配乱吟粗大在线观看 | 日韩欧美在线播放 | 久久精品蜜芽亚洲国产av | 欧美日韩国产三级 | 国产成人免费ā片在线观看老同学 | 日本japanese丰满少妇 | 国产精品高清一区二区三区不卡 | 婷婷开心激情综合五月天 | 日韩精品免费看 | 亚洲成人在线视频播放 | 干欧美| 国产精品99一区二区三区 | 久久作爱| 性色av一区二区三区红粉影视 | 久久艹这里只有精品 | 亚洲一区二区三区精品动漫 | 无套日出白浆 | 亚洲精品色情app在线下载观看 | 精品无码人妻一区二区三区品 | 亚洲区色 | 久久免费视频在线观看 | 可以看av| 天天色天天搞 | jzzijzzij日本成熟丰满少妇 | 在线观看网站污 | 高清无码视频直接看 | 国产女人18毛片水真多1 | 污视频网站免费观看 | 麻豆精品 | 中国特级黄色毛片 | 国产精品综合av一区二区国产馆 | 国产日韩激情 | 日本老妇性生活 | 波多野结衣美乳人妻hd电影欧美 | 欧美成人在线免费 | 久草在线色站 | 亚洲视频一二 | 全肉高h后宫gl | 欧美精品一区二区三区四区 | 色婷婷激情网 | 亚洲国产一区二区在线 | 亚洲成人av影片 | 亚洲欧美日韩第一页 | 久久精品国产99精品国产亚洲性色 | 久久99婷婷国产精品免费 | 黄色男女 黄色a几 | 亚洲免费不卡视频 | 97人洗澡人人澡人人爽人人模 | 国产欧美中文字幕 | 欧美xx孕妇 | 精品一区二区av | 午夜福利理论片高清在线 | 国产一区二区三区小说 | 日本大尺度床戏揉捏胸 | 国产欧亚州美日韩综合区 | 天天摸夜夜操 | 亚洲美女午夜一区二区亚洲精品 | 成人妇女免费播放久久久 | gogogo免费在线观看 | 国产夫妻露脸 |