久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java實(shí)現(xiàn)坦克大戰(zhàn)小游戲

瀏覽:129日期:2022-08-17 17:48:08

用java程序編寫的一個(gè)坦克大戰(zhàn),可以實(shí)現(xiàn)兩人同時(shí)在線

需要代碼的可以私信聯(lián)系我

package com.mr.frame;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Rectangle;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.image.BufferedImage;import java.util.ArrayList;import java.util.List;import java.util.Random;import java.util.Vector;import javax.swing.JPanel;import com.mr.model.Base;import com.mr.model.Boom;import com.mr.model.Bot;import com.mr.model.Bullet;import com.mr.model.Level;import com.mr.model.Map;import com.mr.model.Tank;import com.mr.model.wall.Wall;import com.mr.type.GameType;import com.mr.type.TankType;import com.mr.util.ImageUtil;/** * 游戲面板 實(shí)際大小[794,572] * * @author www.mingrisoft.com * */public class GamePanel extends JPanel implements KeyListener { /** * 游戲界面刷新時(shí)間:20毫秒 */ public static final int FRESH = 20; private BufferedImage image;// 在面板中顯示的主圖片 private Graphics2D g2;// 圖片的繪圖對(duì)象 private MainFrame frame;// 主窗體 private GameType gameType;// 游戲模式 private Tank play1, play2;// 玩家1、玩家2 private boolean y_key, s_key, w_key, a_key, d_key, up_key, down_key, left_key, right_key, num1_key;// 按鍵是否按下標(biāo)志,左側(cè)單詞是按鍵名 private int level;// 關(guān)卡值 private List<Bullet> bullets;// 所有子彈集合 private volatile List<Tank> allTanks;// 所有坦克集合 private List<Tank> botTanks;// 電腦坦克集合 private final int botCount = 20;// 電腦坦克總數(shù) private int botReadyCount = botCount;// 準(zhǔn)備出場(chǎng)的電腦坦克總數(shù) private int botSurplusCount = botCount;// 電腦坦克剩余量 private int botMaxInMap = 6;// 場(chǎng)上最大電腦坦克數(shù) private int botX[] = { 10, 367, 754 };// 電腦坦克出生的3個(gè)橫坐標(biāo)位置 private List<Tank> playerTanks;// 玩家坦克集合 private volatile boolean finish = false;// 游戲是否結(jié)束 private Base base;// 基地 private List<Wall> walls;// 所有墻塊 private List<Boom> boomImage;// 坦克陣亡后的爆炸效果集合 private Random r = new Random();// 隨機(jī)數(shù)對(duì)象 private int createBotTimer = 0;// 生產(chǎn)電腦計(jì)時(shí)器 private Tank survivor;// (玩家)幸存者,用于繪制最后一個(gè)爆炸效果 /** * 游戲面板構(gòu)造方法 * * @param frame * - 主窗體 * @param level * - 關(guān)卡 * @param gameType * - 游戲模式 */ public GamePanel(MainFrame frame, int level, GameType gameType) { this.frame = frame; this.level = level; this.gameType = gameType; setBackground(Color.WHITE);// 面板使用白色背景 init();// 初始化組件 Thread t = new FreshThead();// 創(chuàng)建游戲幀刷新線程 t.start();// 啟動(dòng)線程 addListener();// 開(kāi)啟監(jiān)聽(tīng) } /** * 組件初始化 */ private void init() { bullets = new ArrayList<Bullet>();// 實(shí)例化子彈集合 allTanks = new ArrayList<>();// 實(shí)例化所有坦克集合 walls = new ArrayList<>();// 實(shí)例化所有墻塊集合 boomImage = new ArrayList<>();// 實(shí)例化爆炸效果集合 image = new BufferedImage(794, 572, BufferedImage.TYPE_INT_BGR);// 實(shí)例化主圖片,采用面板實(shí)際大小 g2 = image.createGraphics();// 獲取主圖片繪圖對(duì)象 playerTanks = new ArrayList<>();// 實(shí)例化玩家坦克集合 play1 = new Tank(278, 537, ImageUtil.PLAYER1_UP_IMAGE_URL, this, TankType.player1);// 實(shí)例化玩家1 if (gameType == GameType.TWO_PLAYER) {// 如果是雙人模式 play2 = new Tank(448, 537, ImageUtil.PLAYER2_UP_IMAGE_URL, this, TankType.player2);// 實(shí)例化玩家2 playerTanks.add(play2);// 玩家坦克集合添加玩家2 } playerTanks.add(play1);// 玩家坦克集合添加玩家1 botTanks = new Vector<>();// 實(shí)例化電腦坦克集合 botTanks.add(new Bot(botX[0], 1, this, TankType.bot));// 在第一個(gè)位置添加電腦 botTanks.add(new Bot(botX[1], 1, this, TankType.bot));// 在第二個(gè)位置添加電腦 botTanks.add(new Bot(botX[2], 1, this, TankType.bot));// 在第三個(gè)位置添加電腦 botReadyCount -= 3;// 準(zhǔn)備出場(chǎng)的坦克總數(shù)減去初始化數(shù)量 allTanks.addAll(playerTanks);// 所有坦克集合添加玩家坦克集合 allTanks.addAll(botTanks);// 所有坦克集合添加電腦坦克集合 base = new Base(367, 532);// 實(shí)例化基地 initWalls();// 初始化地圖中的墻塊 } /** * 組件監(jiān)聽(tīng) */ private void addListener() { frame.addKeyListener(this);// 主窗體載入鍵盤監(jiān)聽(tīng),本類已實(shí)現(xiàn)KeyListener接口 } /** * 初始化地圖中的墻塊 */ private void initWalls() { Map map = Map.getMap(level);// 獲取當(dāng)前關(guān)卡的地圖對(duì)象 walls.addAll(map.getWalls());// 墻塊集合添加當(dāng)前地圖中所有墻塊 walls.add(base);// 墻塊集合添加基地 } /** * 重寫繪制組件方法 */ public void paint(Graphics g) { paintTankActoin();// 執(zhí)行坦克動(dòng)作 CreateBot();// 循環(huán)創(chuàng)建電腦坦克 paintImage();// 繪制主圖片 g.drawImage(image, 0, 0, this); // 將主圖片繪制到面板上 } /** * 繪制主圖片 */ private void paintImage() { g2.setColor(Color.WHITE);// 使用白色 g2.fillRect(0, 0, image.getWidth(), image.getHeight());// 填充一個(gè)覆蓋整個(gè)圖片的白色矩形 panitBoom();// 繪制爆炸效果 paintBotCount();// 在屏幕頂部繪制剩余坦克數(shù)量 panitBotTanks();// 繪制電腦坦克 panitPlayerTanks();// 繪制玩家坦克 allTanks.addAll(playerTanks);// 坦克集合添加玩家坦克集合 allTanks.addAll(botTanks);// 坦克集合添加電腦坦克集合 panitWalls();// 繪制墻塊 panitBullets();// 繪制子彈 if (botSurplusCount == 0) {// 如果所有電腦都被消滅 stopThread();// 結(jié)束游戲幀刷新線程 paintBotCount();// 在屏幕頂部繪制剩余坦克數(shù)量 g2.setFont(new Font('楷體', Font.BOLD, 50));// 設(shè)置繪圖字體 g2.setColor(Color.green);// 使用綠色 g2.drawString('勝 利 !', 250, 400);// 在指定坐標(biāo)繪制文字 gotoNextLevel();// 進(jìn)入下一關(guān)卡 } if (gameType == GameType.ONE_PLAYER) {// 如果是單人模式 if (!play1.isAlive()) {// 如果玩家陣亡 stopThread();// 結(jié)束游戲幀刷新線程 boomImage.add(new Boom(play1.x, play1.y));// 添加玩家1爆炸效果 panitBoom();// 繪制爆炸效果 paintGameOver();// 在屏幕中央繪制game over gotoPrevisousLevel();// 重新進(jìn)入本關(guān)卡 } } else {// 如果是雙人模式 if (play1.isAlive() && !play2.isAlive()) {// 如果玩家1是 幸存者 survivor = play1;// 幸存者是玩家1 } else if (!play1.isAlive() && play2.isAlive()) { survivor = play2;// 幸存者是玩家2 } else if (!(play1.isAlive() || play2.isAlive())) {// 如果兩個(gè)玩家全部陣亡 stopThread();// 結(jié)束游戲幀刷新線程 boomImage.add(new Boom(survivor.x, survivor.y));// 添加幸存者爆炸效果 panitBoom();// 繪制爆炸效果 paintGameOver();// 在屏幕中央繪制game over gotoPrevisousLevel();// 重新進(jìn)入本關(guān)卡 } } if (!base.isAlive()) {// 如果基地被擊中 stopThread();// 結(jié)束游戲幀刷新線程 paintGameOver();// 在屏幕中央繪制game over base.setImage(ImageUtil.BREAK_BASE_IMAGE_URL);// 基地使用陣亡圖片 gotoPrevisousLevel();// 重新進(jìn)入本關(guān)卡 } g2.drawImage(base.getImage(), base.x, base.y, this);// 繪制基地 } /** * 在屏幕頂部繪制剩余坦克數(shù)量 */ private void paintBotCount() { g2.setColor(Color.BLUE);// 使用藍(lán)色 g2.drawString('敵方坦克剩余:' + botSurplusCount, 337, 15);// 在指定坐標(biāo)繪制字符串 } /** * 在屏幕中央繪制game over */ private void paintGameOver() { g2.setFont(new Font('楷體', Font.BOLD, 50));// 設(shè)置繪圖字體 g2.setColor(Color.RED);// 設(shè)置繪圖顏色 g2.drawString('Game Over !', 250, 400);// 在指定坐標(biāo)繪制文字 } /** * 繪制爆炸效果 */ private void panitBoom() { for (int i = 0; i < boomImage.size(); i++) {// 循環(huán)遍歷爆炸效果集合 Boom boom = boomImage.get(i);// 獲取爆炸對(duì)象 if (boom.isAlive()) {// 如果爆炸效果有效 boom.show(g2);// 展示爆炸效果 } else {// 如果爆炸效果無(wú)效 boomImage.remove(i);// 在集合中?h除此爆炸對(duì)象 i--;// 循環(huán)變量-1,保證下次循環(huán)i的值不會(huì)變成i+1,以便有效遍歷集合,且防止下標(biāo)越界 } } } /** * 繪制墻塊 */ private void panitWalls() { for (int i = 0; i < walls.size(); i++) {// 循環(huán)遍歷墻塊集合 Wall w = walls.get(i);// 獲取墻塊對(duì)象 if (w.isAlive()) {// 如果墻塊有效 g2.drawImage(w.getImage(), w.x, w.y, this);// 繪制墻塊 } else {// 如果墻塊無(wú)效 walls.remove(i);// 在集合中?h除此墻塊 i--;// 循環(huán)變量-1,保證下次循環(huán)i的值不會(huì)變成i+1,以便有效遍歷集合,且防止下標(biāo)越界 } } } /** * 繪制子彈 */ private void panitBullets() { for (int i = 0; i < bullets.size(); i++) {// 循環(huán)遍歷子彈集合 Bullet b = bullets.get(i);// 獲取子彈對(duì)象 if (b.isAlive()) {// 如果子彈有效 b.move();// 子彈執(zhí)行移動(dòng)操作 b.hitBase();// 子彈執(zhí)行擊中基地判斷 b.hitWall();// 子彈執(zhí)行擊中墻壁判斷 b.hitTank();// 子彈執(zhí)行擊中坦克判斷 g2.drawImage(b.getImage(), b.x, b.y, this);// 繪制子彈 } else {// 如果子彈無(wú)效 bullets.remove(i);// 在集合中?h除此子彈 i--;// 循環(huán)變量-1,保證下次循環(huán)i的值不會(huì)變成i+1,以便有效遍歷集合,且防止下標(biāo)越界 } } } /** * 繪制電腦坦克 */ private void panitBotTanks() { for (int i = 0; i < botTanks.size(); i++) {// 循環(huán)遍歷電腦坦克集合 Bot t = (Bot) botTanks.get(i);// 獲取電腦坦克對(duì)象 if (t.isAlive()) {// 如果坦克存活 t.go();// 電腦坦克展開(kāi)行動(dòng) g2.drawImage(t.getImage(), t.x, t.y, this);// 繪制坦克 } else {// 如果坦克陣亡 botTanks.remove(i);// 集合中刪除此坦克 i--;// 循環(huán)變量-1,保證下次循環(huán)i的值不會(huì)變成i+1,以便有效遍歷集合,且防止下標(biāo)越界 boomImage.add(new Boom(t.x, t.y));// 在坦克位置創(chuàng)建爆炸效果 decreaseBot();// 剩余坦克數(shù)量-1 } } } /** * 繪制玩家坦克 */ private void panitPlayerTanks() { for (int i = 0; i < playerTanks.size(); i++) {// 循環(huán)遍歷玩家坦克 Tank t = playerTanks.get(i);// 獲取玩家坦克對(duì)象 if (t.isAlive()) {// 如果坦克存活 g2.drawImage(t.getImage(), t.x, t.y, this);// 繪制坦克 } else {// 如果坦克陣亡 playerTanks.remove(i);// 集合中刪除此坦克 i--;// 循環(huán)變量-1,保證下次循環(huán)i的值不會(huì)變成i+1,以便有效遍歷集合,且防止下標(biāo)越界 boomImage.add(new Boom(t.x, t.y));// 在坦克位置創(chuàng)建爆炸效果 } } } /** * 結(jié)束游戲幀刷新 */ private synchronized void stopThread() { frame.removeKeyListener(this);// 主窗體刪除本類鍵盤事件監(jiān)聽(tīng)對(duì)象 finish = true;// 游戲停止標(biāo)志為true } /** * 游戲幀刷新線程 */ private class FreshThead extends Thread { public void run() {// 線程主方法 while (!finish) {// 如果游戲未停止 repaint();// 執(zhí)行本類重繪方法 try { Thread.sleep(FRESH);// 指定時(shí)間后重新繪制界面 } catch (InterruptedException e) { e.printStackTrace(); } } } } /** * 添加電腦坦克,如果場(chǎng)上坦克未到達(dá)最大值,每4秒鐘之后在三個(gè)出生位置隨機(jī)選擇其一,創(chuàng)建電腦坦克。 */ private void CreateBot() { createBotTimer += FRESH;// 計(jì)時(shí)器按照刷新時(shí)間遞增 // “當(dāng)場(chǎng)上電腦小于場(chǎng)上最大數(shù)時(shí)” 并且 “準(zhǔn)備上場(chǎng)的坦克數(shù)量大于0” 并且 “計(jì)時(shí)器記錄已過(guò)去4秒鐘” if (botTanks.size() < botMaxInMap && botReadyCount > 0 && createBotTimer >= 4000) { int index = r.nextInt(3);// 隨機(jī)獲取0或1或2其中一個(gè)值 Rectangle bornRect = new Rectangle(botX[index], 1, 35, 35);// 創(chuàng)建坦克隨機(jī)出生區(qū)域 for (int i = 0, lengh = allTanks.size(); i < lengh; i++) {// 循環(huán)遍歷所有坦克集合 Tank t = allTanks.get(i);// 獲取坦克對(duì)象 if (t.isAlive() && t.hit(bornRect)) {// 如果場(chǎng)上存在與隨機(jī)位置重合并存活的坦克 return;// 結(jié)束方法 } } botTanks.add(new Bot(botX[index], 1, GamePanel.this, TankType.bot));// 在隨機(jī)位置創(chuàng)造電腦坦克 botReadyCount--;// 準(zhǔn)備上場(chǎng)電腦數(shù)量-1 createBotTimer = 0;// 產(chǎn)生電腦計(jì)時(shí)器重新計(jì)時(shí) } } /** * 進(jìn)入下一關(guān)卡 */ private void gotoNextLevel() { Thread jump = new JumpPageThead(Level.nextLevel());// 創(chuàng)建跳轉(zhuǎn)到下一關(guān)卡的線程 jump.start();// 啟動(dòng)線程 } /** * 重新進(jìn)入本關(guān)卡 */ private void gotoPrevisousLevel() { Thread jump = new JumpPageThead(Level.previsousLevel());// 創(chuàng)建重新進(jìn)入本關(guān)卡的線程 jump.start();// 啟動(dòng)線程 } /** * 剩余坦克數(shù)量減少1 */ public void decreaseBot() { botSurplusCount--;// 電腦剩余數(shù)量-1 } /** * 按鍵按下時(shí) */ @Override public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) {// 判斷按下的按鍵值 case KeyEvent.VK_Y:// 如果按下的是“Y” y_key = true;// “Y”按下標(biāo)志為true break; case KeyEvent.VK_W:// 如果按下的是“W” w_key = true;// “W”按下標(biāo)志為true a_key = false;// “A”按下標(biāo)志為false s_key = false;// “S”按下標(biāo)志為false d_key = false;// “D”按下標(biāo)志為false break; case KeyEvent.VK_A:// 如果按下的是“A” w_key = false;// “W”按下標(biāo)志為false a_key = true;// “A”按下標(biāo)志為true s_key = false;// “S”按下標(biāo)志為false d_key = false;// “D”按下標(biāo)志為false break; case KeyEvent.VK_S:// 如果按下的是“S” w_key = false;// “W”按下標(biāo)志為false a_key = false;// “A”按下標(biāo)志為false s_key = true;// “S”按下標(biāo)志為true d_key = false;// “D”按下標(biāo)志為false break; case KeyEvent.VK_D:// 如果按下的是“D” w_key = false;// “W”按下標(biāo)志為false a_key = false;// “A”按下標(biāo)志為false s_key = false;// “S”按下標(biāo)志為false d_key = true;// “D”按下標(biāo)志為true break; case KeyEvent.VK_HOME:// 如果按下的是“HOME”,效果同下 case KeyEvent.VK_NUMPAD1:// 如果按下的是小鍵盤數(shù)字1 num1_key = true;// 小鍵盤數(shù)字1按下標(biāo)志為true break; case KeyEvent.VK_UP:// 如果按下的是“↑” up_key = true;// “↑”按下標(biāo)志為true down_key = false;// “↓”按下標(biāo)志為false right_key = false;// “→”按下標(biāo)志為false left_key = false;// “←”按下標(biāo)志為false break; case KeyEvent.VK_DOWN:// 如果按下的是“↓” up_key = false;// “↑”按下標(biāo)志為false down_key = true;// “↓”按下標(biāo)志為true right_key = false;// “→”按下標(biāo)志為false left_key = false;// “←”按下標(biāo)志為false break; case KeyEvent.VK_LEFT:// 如果按下的是“←” up_key = false;// “↑”按下標(biāo)志為false down_key = false;// “↓”按下標(biāo)志為false right_key = false;// “→”按下標(biāo)志為false left_key = true;// “←”按下標(biāo)志為true break; case KeyEvent.VK_RIGHT:// 如果按下的是“→” up_key = false;// “↑”按下標(biāo)志為false down_key = false;// “↓”按下標(biāo)志為false right_key = true;// “→”按下標(biāo)志為true left_key = false;// “←”按下標(biāo)志為false break; } } /** * 根據(jù)按鍵按下?tīng)顟B(tài),讓坦克執(zhí)行相應(yīng)動(dòng)作 */ private void paintTankActoin() { if (y_key) {// 如果“Y”鍵是按下?tīng)顟B(tài) play1.attack();// 玩家1坦克攻擊 } if (w_key) {// 如果“W”鍵是按下?tīng)顟B(tài) play1.upward();// 玩家1坦克向上移動(dòng) } if (d_key) {// 如果“D”鍵是按下?tīng)顟B(tài) play1.rightward();// 玩家1坦克向右移動(dòng) } if (a_key) {// 如果“A”鍵是按下?tīng)顟B(tài) play1.leftward();// 玩家1坦克左移動(dòng) } if (s_key) {// 如果“S”鍵是按下?tīng)顟B(tài) play1.downward();// 玩家1坦克向下移動(dòng) } if (gameType == GameType.TWO_PLAYER) { if (num1_key) {// 如果“M”鍵是按下?tīng)顟B(tài) play2.attack();// 玩家2坦克攻擊 } if (up_key) {// 如果“←”鍵是按下?tīng)顟B(tài) play2.upward();// 玩家2坦克向上移動(dòng) } if (right_key) {// 如果“→”鍵是按下?tīng)顟B(tài) play2.rightward();// 玩家2坦克向右移動(dòng) } if (left_key) {// 如果“↑”鍵是按下?tīng)顟B(tài) play2.leftward();// 玩家2坦克左移動(dòng) } if (down_key) {// 如果“↓”鍵是按下?tīng)顟B(tài) play2.downward();// 玩家2坦克后移動(dòng) } } } /** * 按鍵抬起時(shí) */ @Override public void keyReleased(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_Y:// 如果抬起的是“Y” y_key = false;// “Y”按下標(biāo)志為false break; case KeyEvent.VK_W:// 如果抬起的是“W” w_key = false;// “W”按下標(biāo)志為false break; case KeyEvent.VK_A:// 如果抬起的是“A” a_key = false;// “A”按下標(biāo)志為false break; case KeyEvent.VK_S:// 如果抬起的是“S” s_key = false;// “S”按下標(biāo)志為false break; case KeyEvent.VK_D:// 如果抬起的是“D” d_key = false;// “D”按下標(biāo)志為false break; case KeyEvent.VK_HOME:// 如果抬起的是“HOME”,效果同下 case KeyEvent.VK_NUMPAD1:// 如果抬起的是小鍵盤1 num1_key = false;// 小鍵盤1按下標(biāo)志為false break; case KeyEvent.VK_UP:// 如果抬起的是“↑” up_key = false;// “↑”按下標(biāo)志為false break; case KeyEvent.VK_DOWN:// 如果抬起的是“↓” down_key = false;// “↓”按下標(biāo)志為false break; case KeyEvent.VK_LEFT:// 如果抬起的是“←” left_key = false;// “←”按下標(biāo)志為false break; case KeyEvent.VK_RIGHT:// 如果抬起的是“→” right_key = false;// “→”按下標(biāo)志為false break; } } /** * 向子彈集合中添加子彈 * * @param b * - 添加的子彈 */ public void addBullet(Bullet b) { bullets.add(b);// 子彈集合中添加子彈 } /** * 獲取所有墻塊集合 * * @return 所有墻塊 */ public List<Wall> getWalls() { return walls; } /** * 獲取基地對(duì)象 * * @return 基地 */ public Base getBase() { return base; } /** * 獲取所有坦克集合 * * @return 所有坦克 */ public List<Tank> getTanks() { return allTanks; } /** * 游戲結(jié)束跳轉(zhuǎn)線程 */ private class JumpPageThead extends Thread { int level;// 跳轉(zhuǎn)的關(guān)卡 /** * 跳轉(zhuǎn)線程構(gòu)造方法 * * @param level * - 跳轉(zhuǎn)的關(guān)卡 */ public JumpPageThead(int level) { this.level = level; } /** * 線程主方法 */ public void run() { try { Thread.sleep(1000);// 1秒鐘后 frame.setPanel(new LevelPanel(level, frame, gameType));// 主窗體跳轉(zhuǎn)到指定關(guān)卡 } catch (InterruptedException e) { e.printStackTrace(); } } } /** * 鍵入某按鍵事件 */ public void keyTyped(KeyEvent e) { // 不實(shí)現(xiàn)此方法,但不可刪除 }}

圖片

java實(shí)現(xiàn)坦克大戰(zhàn)小游戲

java實(shí)現(xiàn)坦克大戰(zhàn)小游戲

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 久久国产精品视频 | 亚洲h| 日本成人中文字幕 | 久久久久久亚洲 | 一区二区免费播放 | 国产精品成人一区二区 | 久久一精品 | 人人射人人干 | 国产精品原创av片国产免费 | japan国产精选videos| 亚洲精品一区二三区不卡 | 精品三区 | www.99精品 | 精品在线播放 | 欧美国产91| 亚洲精品一区二区 | 亚洲精品久久久久久下一站 | 亚洲一区 中文字幕 | 国内在线一区 | 福利视频一区 | 国产一级一级特黄女人精品毛片 | 一道本视频 | 后人极品翘臀美女在线播放 | 午夜影视剧场 | 亚洲午夜精品视频 | 国产精品一区二区三 | 一区二区三区 在线 | 精品亚洲一区二区三区四区五区 | 99免费看| 在线日韩 | 午夜影院a | 99在线精品视频 | 国产午夜视频 | 91精品国产91久久综合桃花 | 久草日韩 | 97成人在线视频 | 91久久综合 | 国产一二三区在线播放 | 久久久xx | 成人爽a毛片一区二区免费 美女高潮久久久 | 99热热热热| 欧美激情久久久 | 亚洲狠狠久久综合一区77777 | 婷婷色在线 | 亚洲精品久久久久久一区二区 | 欧美一级黄视频 | 在线欧美日韩 | 国产乱码精品一区二区三区中文 | 色综合天天天天做夜夜夜夜做 | 国产一区二区三区四区在线观看 | 成人午夜视频在线观看 | 精品久久久久久久久久久久包黑料 | 蜜臀91精品国产高清在线观看 | 欧美激情精品久久久久久变态 | 国产成人精品免高潮在线观看 | 日韩久久久 | 国产综合视频 | 日韩在线播放一区 | 国产毛片av| av伊人网| 国产精品成人国产乱一区 | 久久综合久久综合久久 | 精品国产一区探花在线观看 | 一区二区日韩视频 | 久久精品一区二区三区四区 | 中文字幕乱码一区二区三区 | 成人激情视频在线播放 | 在线观看免费国产 | 国产精品久久久久久亚洲调教 | 日韩成人在线观看 | 亚洲毛片 | 国产精品高清在线 | 欧美精品中文字幕久久二区 | 一区二区三区国产 | 成人在线观看网 | 国产一区二区精品丝袜 | 日韩欧美在线视频 | 日日操夜夜操天天操 | 中文字幕成人免费视频 | 在线亚洲成人 | 久久精品麻豆 | 色999精品| 国产成人精品一区二区三区 | 国产精品国产精品国产专区不蜜 | 国产片侵犯亲女视频播放 | 91亚洲高清 | av黄色在线 | 精品无码久久久久国产 | 欧美精品一级二级 | 日本在线视频一区二区 | 国产精品久久综合 | 日韩精品一区二区在线观看 | 亚洲天堂中文字幕 | 午夜国产影院 | 欧美日本韩国一区二区三区 | 最新国产在线视频 | 久热精品在线视频 | 亚洲欧美日韩国产综合精品二区 | 久久久久久久久久久久久九 | 久久91视频 | 精品国产乱码久久久久久1区2区 | 久久精品久久综合 | 91丨九色丨国产 | 欧美国产综合一区 | 免费毛片视频 | 成人免费影院 | 国产在线一区二区 | 一级毛片免费视频 | 97精品国产| 亚洲男人天堂av | 成人在线一区二区 | 色接久久 | 欧美日韩综合精品 | 精品久久精品久久 | 久久精品小视频 | 亚洲欧洲一区二区三区 | 成人免费xxxxxx视频 | 日本久久国产 | 视频在线一区 | 中文一区二区 | 精品96久久久久久中文字幕无 | 九九九九九九精品任你躁 | 国产成人精品免高潮在线观看 | 成人精品一区二区三区中文字幕 | 日韩精品一区二区在线观看 | 亚洲欧美一区二区三区不卡 | 国产91精品一区二区绿帽 | 欧美一区二区三区视频 | 一区二区三区四区av | h视频在线观看免费 | 狠狠爱网站 | 中文在线一区二区 | 亚洲天堂久久 | 成人日韩| 黄色免费高清视频 | 色欧美片视频在线观看 | 一区二区在线影院 | 午夜在线影院 | 国产一区久久久 | 久草在线| 视频专区一区二区 | 欧美区国产 | 黄色片免费 | www色婷婷| 国产网站在线播放 | 日日搞夜夜操 | 午夜网址 | 热久久这里只有精品 | 久久久国产日韩 | 99热欧美| 狠狠操夜夜操 | 在线免费黄色小视频 | 蜜桃视频成人m3u8 | 国产精品com| 国产精品一区二 | 国产日韩欧美一区二区 | 欧美成人综合在线 | 97国产精品 | 成人三级网址 | 中文字幕视频网站 | 日韩国产精品一区二区 | 亚洲wu码| av网站免费线看 | 欧美第一网站 | 久久久久久久久99精品 | 综合久久综合久久 | 成人av免费在线观看 | 99re国产 | 日韩在线 | 欧美久久精品 | 亚洲精品国产电影 | 亚洲一二三 | 国产不卡免费视频 | 日韩成人在线观看 | 国产毛片毛片 | 一区二区在线免费观看 | 丁香五月亚洲综合在线 | 一级片国产 | 日韩视频区 | 欧美日韩一区二区三区免费视频 | 亚洲区视频在线 | 久久99精品久久久久久琪琪 | 国产在线小视频 | 日日爽天天操 | avmans最新导航地址 | 久久成人精品视频 | 国产中文在线 | 无码日韩精品一区二区免费 | 亚洲成av人片在线观看 | 成人免费一区二区三区视频网站 | 欧美日韩亚洲视频 | 色www精品视频在线观看 | www.91在线 | 成人影院在线 | 成人精品视频在线观看 | 久久久久中文字幕 | 一级毛片观看 | 国产成人精品久久二区二区 | 在线观看亚洲 | 亚洲一区二区免费看 | 午夜艹 | av在线一区二区三区 | 国产精品美女久久久久久免费 | 中文字幕在线观看1 | 欧美精品一区二区三区在线 | 欧美在线观看一区 | 精品三级在线观看 | 国产高清视频在线观看 | 成人免费国产 | 中文字幕毛片 | 成人午夜精品久久久久久久蜜臀 | 天天艹视频 | 国产成人61精品免费看片 | 精品一区二区在线观看 | 欧美xxxⅹ性欧美大片 | 玖玖综合网 | 99久久精品免费看国产一区二区三区 | 黄色片在线 | 精品久久久久久久久久久久久久久久久久久 | 日本一区二区不卡 | 精品国产黄a∨片高清在线 99热婷婷 | www.久久| 久久99精品久久久 | 久久久综合网 | 欧美国产综合一区 | 欧美一区二区三区精品免费 | 精品一区二区三区蜜桃 | 91伊人 | 午夜影院操| 久久黄色网 | 日韩福利电影 | 久久久涩| 国产最新视频在线 | 午夜寂寞影视在线观看 | 中文字幕在线网址 | 一级在线观看视频 | 国产伦精品一区二区三区四区视频 | 亚洲乱码一区二区三区在线观看 | 欧美日韩一级视频 | 特黄一级 | 永久精品 | 精品一区二区三区不卡 | 国产精品久久久久毛片软件 | 一级在线观看视频 | 精品国产黄色片 | 99热在线精品免费 | 国产福利在线观看 | 日韩在线视频观看 | 一级片国产 | 亚洲男人av | 91免费在线 | 在线观看日韩av | 亚洲国产精品网站 | 黄色成人在线网站 | 国产天堂在线 | 日韩激情二区 | sese综合| 日本一区二区三区免费观看 | 日韩视频一区二区三区四区 | 爱爱视频在线 | 国产91极品 | 一区二区三区播放 | 国内精品视频一区 | 人人爽在线观看 | 久久精品久久久 | 99中文字幕 | 国产精品久久久久久亚洲影视 | 国产一区二区三区免费视频 | 午夜av影院| 日韩视频精品 | www.xxxx在线观看| 国产精品久久久久婷婷二区次 | 中文字幕精品三区 | 亚洲二区在线 | 欧美成人精品激情在线观看 | 精品不卡| 日韩在线成人 | 在线国产一区二区 | 精品成人免费视频 | 黄色在线免费观看 | 亚洲天堂一区 | 成人免费视频网址 | 亚洲三级网站 | 国产中文字幕一区 | 国产日韩欧美一区二区 | 亚洲免费视频大全 | 精品一区二区三区三区 | 午夜日韩在线观看 | 亚洲精品视频一区 | 极品久久 | 黄色在线观看网址 | 久久久com| 久久久久久亚洲 | 中文字字幕在线 | 国产视频自拍一区 | 日本久久精品视频 | 自拍视频在线播放 | 综合久久综合 | 午夜a v电影 | 国产精品亚洲一区二区三区在线 | 久久蜜桃视频 | 99精品一区二区三区 | 欧美日韩一区二区三区在线观看 | 欧美日韩在线一区二区 | 男女啪啪免费网站 | 国产精品网站在线看 | 影音先锋中文字幕一区 | 日韩欧美在线免费观看 | 天天干天天操 | 精品欧美一区二区三区久久久 | 国产伦精品一区二区三区四区视频 | 在线观看欧美日韩视频 | 中文字幕国产在线视频 | 亚洲精品日韩综合观看成人91 | 亚洲精品欧美 | 久久精品久久久 | 91亚洲精品久久久 | 欧美一级一区 | 天天天天爽 | 亚洲精品www久久久 www.蜜桃av | 一二三区不卡视频 | 午夜av电影 | 亚洲一区 国产 | 中文字幕av亚洲精品一部二部 | 日韩中文字幕一区 | www.com久久| 久久美女 | 欧美日韩在线免费观看 | 欧美精品在线观看免费 | www.日韩三级 | 日本亚洲一区 | 成年无码av片在线 | 色婷婷综合久久久中文字幕 | 中文字幕日韩一区二区三区 | 涩涩视频大全 | 欧美日韩电影一区二区三区 | 成人在线网址 | 人人草人人 | 欧美视频精品在线观看 | 欧美国产在线一区 | 亚洲精品欧美精品 | 亚洲777| 午夜精品一区二区三区在线视频 | 亚洲精品综合在线 | 国产精久久久久 | 中文在线a在线 | 午夜视频在线观看网址 | 色www精品视频在线观看 | 欧美性猛交一区二区三区精品 | 欧美视频三区 | 久久久久久久久国产成人免费 | 国产免费一区二区三区 | 色欧美片视频在线观看 | 久草热8精品视频在线观看 亚洲区在线 | 91视频一区二区三区 | 精品国产欧美一区二区三区成人 | 亚洲精品久久久久avwww潮水 | 国产成人精品久久二区二区91 | 精品视频一区二区三区四区 | 亚洲综合区 | 黄色在线视频网 | 国产免费一区 | 亚洲精品国产setv | 91免费在线播放 | 成人深夜在线 | 99热热热热| 国产小视频网站 | 久草视频在线播放 | 久久久久国产精品 | 91观看在线视频 | 黄色地址 | 精品国产乱码久久久久久丨区2区 | 97人人干| 午夜影院免费 | 国产一区二区在线观看视频 | 欧美福利一区二区三区 | 天天干夜夜操 | 精品久久久久久亚洲精品 | 日本精品免费 | 国产在线一二 | 综合婷婷| 精品久久中文字幕 | 欧美一区二区三区男人的天堂 | 9999国产精品欧美久久久久久 | 一区二区三区在线观看免费 | 中文字幕在线观看www | 91精品国产欧美一区二区 | 美女黄在线观看 | 六月婷婷久久 | 免费大片在线观看网站 | 国产麻豆乱码精品一区二区三区 | 人人爱超碰 | 日韩一区免费在线观看 | 亚洲午夜电影在线 | 久久国产精品久久精品 | 久久久av | 黄色毛片在线看 | 国产成人免费视频网站高清观看视频 | 色黄视频在线观看 | 人人av在线| 成人免费视频在线观看 | 欧美性猛交一区二区三区精品 | 伊人色播 | 九九热精品免费视频 | 国产欧美在线观看 | 国产免费自拍av | 超碰av在线 | 91久久国产精品 | 国产精品1区2区3区 欧美 中文字幕 | 嫩草懂你 | 成人精品视频99在线观看免费 | 久久精品欧美一区二区三区不卡 | 五月天婷婷国产精品 | 欧美一区二区三区黄色 | 久久久久久综合 | 色婷婷av久久久久久久 | 日韩视频在线观看 | 羞羞视频在线观看免费 | 啪啪免费网站 | 91视频.www | 欧美视频精品在线 | 久久国内免费视频 | 国产精品伦理 | 午夜精品久久久久久久久久久久久 | 一区二区三区在线观看免费 | 亚洲高清在线视频 | 国产精品久久久久久久久久久杏吧 | 中文字幕国产 | 日韩在线观看一区二区 | 夜夜操操操 | 在线成人av观看 | 成人欧美一区二区三区黑人孕妇 | 成人久久久| 国产高清一区二区三区 | 国产成人在线一区二区 | 亚洲区在线 | av一二三区 | 中文字幕亚洲一区二区三区 | 精品欧美乱码久久久久久 | 午夜精品成人一区二区 | 国产成人久久精品一区二区三区 | 国产美女www爽爽爽免费视频 | 一区在线播放 | 91久久精品日日躁夜夜躁国产 | 国产高清精品一区二区三区 | 成人精品一区二区 | 99精品99| 欧美a网 | 成人一级片 | 亚洲欧洲精品视频在线观看 | 91视频网| 久草电影网 | 久久91精品国产 | av午夜| 国产欧美精品一区aⅴ影院 毛片视频网站 | 欧美日韩中文字幕在线 | 免费毛片网站 | 久久青青视频 | www.国产精品| 天天色影视综合 | 天天看片天天操 | 中文字幕一区在线 | 日韩欧美高清dvd碟片 | 日韩久久久 | 精品亚洲永久免费精品 | 北条麻妃一区二区三区在线 | 日韩一区二区三区在线观看 | 色婷婷亚洲一区二区三区 | 亚洲欧美中文日韩在线v日本 | 亚洲人成网站999久久久综合 | 亚洲影视一区 | 精品在线一区二区 | 99r在线 | 欧美午夜一区二区福利视频 | 国产区视频在线观看 | 日本成人黄色网址 | 精品一二区 | 国产精品视频在线观看 | 亚洲久久在线 | 欧美一区二区大片 | 欧美日本亚洲 | 亚洲国内精品 | 国产午夜精品久久久久免费视高清 | 成人在线免费 | 久久成人免费视频 | 久久99深爱久久99精品 | 日本久久网 | 国产高清精品在线 | 亚洲国产高清视频 | 一区二区精品视频 | 国产女人爽到高潮免费视频 | 日韩欧美国产一区二区三区 | 成人免费淫片aa视频免费 | 亚洲人人 | 成人欧美一区二区三区白人 | 欧美高清hd | 日韩理伦在线 | 日干夜干天天干 | 日韩在线精品 | 一区二区在线电影 | 免费在线观看毛片网站 | 欧美中文字幕在线 | 日本在线黄色 | 欧美自拍视频一区 | 国产女人和拘做受视频 | 99视频网站 | 国产一区二区黑人欧美xxxx | 免费av在线 | 国产91麻豆视频 | 国产视频色 | 午夜看看| 欧美一区永久视频免费观看 | 精精国产xxxx视频在线 | 欧美全黄| 碰碰视频 | 亚洲高清av在线 | av亚洲在线 | 日韩在线免费 | 免费观看一级毛片 | ririsao久久精品一区 | 中文字幕视频在线观看 | 一区二区三区欧美在线 | 天天成人综合网 | 精品国产乱码久久久久久丨区2区 | 可以在线看的黄色网址 | 日韩在线免费观看视频 | 亚洲精品在线看 | 亚洲精品福利网站 | 国产精品久久国产精品 | 国产精品2区 | 欧洲黄色 级黄色99片 | 精品视频成人 | av在线播放免费 | 欧美日韩国产中文 | 日本在线观看视频网站 | 日韩精品视频三区 | 日韩三级在线 | 日韩毛片免费视频一级特黄 | 三级黄色片在线播放 | 中文字幕日韩一区 | 国产精品一区av | 91中文字幕网 | 亚洲日韩欧美一区二区在线 | 国产一极片 | 高清国产一区二区三区四区五区 | 午夜资源 | 日本久久99 | 久久精品毛片 | 国产精品久久久久久中文字 | 免费观看黄色大片 | 亚洲精品在线看 | 一区二区三区视频 | 91在线视频免费观看 | 91精品久久久久久久久 | 日韩一区二区三区在线观看 | 国产美女在线观看 | 欧美日韩久久精品 | 精品免费国产 | 91视频国产区 | 在线中文字幕视频 | 午夜免费 | 国产精品美女久久久久aⅴ国产馆 | 激情久久久 | 五月天婷婷丁香 | 亚洲精品一区二区三区在线 | 精品久久久久一区二区国产 | 中文字幕加勒比 | h在线观看 | 日本啪啪网站 | 在线视频 欧美日韩 | 91精品久久久久久久久久 | 国产在线观看一区二区 | 日韩成人视屏 | 日韩一区二区三区在线观看 | 欧美激情精品久久久久久 | 天天天综合网 | 最新国产福利在线 | 毛片aaa| 亚洲自拍偷拍av | 成人免费视频网站在线观看 | 久久波多野结衣 | 亚洲伦理影院 | 国产色婷婷精品综合在线播放 | 成人在线播放网站 | 久久天堂电影 | 爱爱视频免费 | 国产精品美女视频 | 97超碰人人 | 精品999www| 国产老头老太作爱视频 | 最新超碰 | 福利片中文字幕 | 一区二区观看 | 精久久久| 得得啪在线视频 | 日韩精品免费在线观看 | aaa级片 | 国产成人高清视频 | 亚洲一级在线 | 久久亚洲国产精品 | 亚洲精品午夜国产va久久成人 | 精品国产91乱码一区二区三区 | 日韩欧美在线视频观看 | 99久久99 | 国产精品国产精品国产专区不卡 | 国产成人亚洲综合 | 成人伊人| 免费成人av | 日韩精品一区二区三区中文字幕 | 日韩精品一区二区在线观看 | 日韩精品www| 国产精品久久久久久久浪潮网站 | 久久四色 | 成人精品一区二区三区中文字幕 | 精品av |