黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

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

JavaScript 俄羅斯方塊游戲實現方法與代碼解釋

瀏覽:80日期:2023-11-05 11:11:52

本文實例講述了JavaScript 俄羅斯方塊游戲。分享給大家供大家參考,具體如下:

俄羅斯方塊代碼說明

/** 名稱:Javascript 俄羅斯方塊! 作者:Gloot 郵箱:glootz@gmail.com QQ:345268267 網站:http://www.cnblogs.com/editor/*/OLSFK = {};

本俄羅斯方塊代碼采用 JavaScript 腳本代碼寫成,簡單易懂;

全代碼采用靜態類及靜態變量成員組成;

全腳本通過實現代碼全局配置 OLSFK.Options = {...}

定義方塊起始坐標及定義各自的旋轉點;

從初始化俄羅斯方塊界面開始,再監聽鍵盤事件;以及左右,向下及旋轉動作判斷,重新渲染方塊位置;

判斷是否消行,以及相應的加級判斷,執行速度,加分操作來執行;

最后以判斷是否當前級別大于所定義的最大級別來判斷是否結束;

代碼說明講解

OLSFK.Options = { //相關參數 width:12,//界面橫向方塊數 height:20,//界面縱向方塊數 boxWidth : ’16px’, curLevel:1, speed : 1000, //setInterval,setTimeout direct : { //可以設定是A S D W, 還是← ↓ → Down: 40 , /*run speed*/ Left: 37, Right: 39, Rotate: 38 }, Move:true,//是否正在移動 Eventing:false, Levels: { 1:1000, 2:900, 3:800, 4:700, 5:600, 6:500, 7:400, 8:300, 9:200, 10:100 }, curBlock:4, //當前移動的圖形名稱 nextBlock:0, GampMap:new Object(), Timer:null, deline:0, Score:0, Deling:false, Start:false, lineNum:10, //刪除幾行了,加級 ScoreNum:40 //消一行加分}

direct 表示 使用鍵盤方位鍵來操作方塊的移動方向;

使用哪種方向鍵按自由喜歡配置,比如字母鍵的A, S, D, W; 或右邊小數字鍵盤的數字鍵各自的鍵盤編碼;

比如 上(旋轉)、下、左、右 方向鍵的編碼分別為:38、40、37、39;

Levels:表示級別配置,本配置共分為10級,每個級別所對應的下落速度,即定時執行間隔;

curBlock:表示當前活動的方塊;

nextBlock:表示接下來執行的方塊索引,并顯示界面右上角的預覽框中;

GampMap:用于保存在根據定義行列數形成的游戲表格中保存每個格的數據信息;

OLSFK.Options.GampMap[x+’_’+y] = 0;

對象表格為: id: 'box_'+x+'_'+y;

初始化數據為 ‘0’; 表示該表格還未占用;當有占用時,設置值為 ‘1’;

Timer:為定時執行器;setTimeout 定時執行方塊下落的的頻率;定時時間越小,速度越快;

Deling:當正在執行消行操作時,下次暫不顯示并下落;

lineNum:表示消超過 10 行,加一級;

ScoreNum:表示每消一行所加的分數;

OLSFK.ReItems = function (cur){ //key旋轉點 switch (cur) { case 1: OLSFK.Items[1] = {//長塊 LongBlock1:{x:4,y:0},2:{x:5,y:0},3:{x:6,y:0},4:{x:7,y:0},5:{x:5,y:0} //旋轉點 }; break; //.... }}

該方法用于恢復方塊的初始設置;

OLSFK.Next = { //key旋轉點 //長塊 LongBlock 1: { 1:{x:0,y:1}, 2:{x:1,y:1}, 3:{x:2,y:1}, 4:{x:3,y:1} }, //...}

為不了不與游戲方塊的設置沖突,獨立出來下次隨機方塊的對象配置;

OLSFK.Items = { //key旋轉點 //長塊 LongBlock 1: { 1:{x:4,y:0}, 2:{x:5,y:0}, 3:{x:6,y:0}, 4:{x:7,y:0}, 5:{x:5,y:0} }, //方塊Box 2: { 1:{x:4,y:0}, 2:{x:5,y:0}, 3:{x:4,y:1}, 4:{x:5,y:1}, 5:{x:0,y:0} }, //凸塊 TuBlock 3: { 1:{x:4,y:1}, 2:{x:5,y:0}, 3:{x:5,y:1}, 4:{x:6,y:1}, 5:{x:5,y:1} }, //L塊 LBlock 4: { 1:{x:5,y:0}, 2:{x:5,y:1}, 3:{x:5,y:2}, 4:{x:6,y:2}, 5:{x:5,y:2} }, 5: { //反向L塊 FLBlock 1:{x:5,y:2}, 2:{x:6,y:2}, 3:{x:6,y:1}, 4:{x:6,y:0}, 5:{x:6,y:2} }, //Z塊 ZBlock 6: { 1:{x:4,y:0}, 2:{x:5,y:0}, 3:{x:5,y:1}, 4:{x:6,y:1}, 5:{x:5,y:0} }, 7: {//反向Z塊 FZBlock 1:{x:4,y:1}, 2:{x:5,y:1}, 3:{x:5,y:0}, 4:{x:6,y:0}, 5:{x:5,y:1} }}

方塊共分為:長條塊,方塊,凸塊(T塊),L塊,反L塊,Z塊,反Z塊幾種;

共7種方塊,以1,2,3,4,5,6,7 索引鍵表示,方塊是四個小塊組成,每塊都有各自的坐標,1-4表示組成該塊的初始坐標位置,5表示旋轉點;

OLSFK.Init = function() { //初始化界面 //...}

俄羅斯方塊的界面初始化方法;將在 window.onload 中調用執行;

var w = OLSFK.Options.width; var h = OLSFK.Options.height; var total = w * h; var x=0,y=0; for (var i=0; i<total; i++) {OLSFK.Options.GampMap[x+’_’+y] = 0; Lib.Tag(’SPAN’,{id:'box_'+x+'_'+y,name:'cbox',style:{ width:OLSFK.Options.boxWidth, height:OLSFK.Options.boxWidth, border:'2px outset #669', background:'#ddd', float:'left', overflow:'hidden' },innerHTML:'&nbsp;',className:'cssbox'},back); var end = i + 1; x++; if (end >= w && end % w == 0) { x=0; y++; Lib.Tag(’DIV’,{style:{clear:'both' }},back); } }

通過設置的 Options.width, Options.height 列數與行數,以及設置的小方格寬度,初始化了一個寬:Options.width列,高為 Options.height 的表格界面出來;

Lib.Tag 用于創建標簽對象;

Lib.Tag = function(TAG,json,pnode) { //...}

TAG為標簽名,比如: div, span 等;

json為設置標簽樣式 style;

pnode 是該創建所在的父容器;

OLSFK.Init = function() {} 還創建主游戲區域旁邊的下次隨機方塊預覽區,當前級別,及分數,以及操作“開始”,“暫停”按鈕等;

JavaScript 俄羅斯方塊游戲實現方法與代碼解釋

游戲初始入口點

window.onload = function() { if (window.isIE) { document.attachEvent('onkeydown',function(e) { if (OLSFK.Options.Start) {var E = OLSFK.KeyCode();OLSFK.EventFunc(E); } }); document.attachEvent('onkeyup',function(e) { if (!OLSFK.Options.Move && OLSFK.Options.Start) {OLSFK.Options.Move = true;OLSFK.Options.Eventing = false;OLSFK.Options.Timer = setTimeout(function() { OLSFK.play();}, OLSFK.Options.Levels[OLSFK.Options.curLevel]); } }); } else { document.addEventListener('keydown',function(e) { if (OLSFK.Options.Start) {var E = OLSFK.KeyCode();OLSFK.EventFunc(E); } },false); document.addEventListener('keyup',function(e) { if (!OLSFK.Options.Move && OLSFK.Options.Start) {OLSFK.Options.Move = true;OLSFK.Options.Eventing = false;OLSFK.Options.Timer = setTimeout(function() { OLSFK.play();}, OLSFK.Options.Levels[OLSFK.Options.curLevel]); } },false); } OLSFK.Init();}

主要是監聽鍵盤事件,根據 鍵盤事件 返回的按鈕編碼與 OLSFK.Options.direct 設置方向鍵匹配來操作方塊的移動,旋轉等;

keydown 用于操作下落方塊的移動方向,旋轉等;并重新繪制方塊位置;

keyup 后繼續按本級速度向下落;

OLSFK.Options.Levels[OLSFK.Options.curLevel]

表示當前級別對應的速度,即定時器間隔執行時間(毫秒);

OLSFK.EventFunc = function(code) { switch (code) { case OLSFK.Options.direct.Left: //LEFT if (!OLSFK.Options.Deling) {clearTimeout(OLSFK.Options.Timer);OLSFK.Options.Eventing = true;OLSFK.Options.Move = false;OLSFK.Left(); } break; //... }}

該方法是 監聽 keydown 事件執行的動作;code 為按鍵 編碼;

當判斷未在消行動作時,清除定時器,OLSFK.Options.Eventing 設置為事件中 true,OLSFK.Options.Move 為 false 表示停止移動;

進入 向左移動方法 OLSFK.Left();

OLSFK.Left = function() { var block = OLSFK.Items[OLSFK.Options.curBlock]; if (block) { var flag = true; for (var i=1; i<=4; i++) { var x = block[i].x; var y = block[i].y; if (x-1 < 0) {flag = false;break; } if (OLSFK.Options.GampMap[(x-1)+’_’+y] == 1 && !OLSFK.isMe(x-1,y)) {flag = false;break; } } if (flag) { for (var i=1; i<=4; i++) //清除圖形 {var itm = block[i];var box = Lib.Getid(’box_’+itm.x+’_’+itm.y);box.style.background = ’#ddd’;OLSFK.Options.GampMap[itm.x+’_’+itm.y] = 0; } for (var i=1; i<=5; i++) {var x = block[i].x;var y = block[i].y;OLSFK.Items[OLSFK.Options.curBlock][i] = {x:(x-1),y:y}; } OLSFK.draw(); } }}

var block = OLSFK.Items[OLSFK.Options.curBlock]; 表示獲取當前移動方塊;

if (OLSFK.Options.GampMap[(x-1)+’_’+y] == 1 && !OLSFK.isMe(x-1,y)){ flag = false; break;}

判斷該方塊四個小方塊左邊是否有被占用的方塊,也即: OLSFK.Options.GampMap[(x-1)+’_’+y] 為 1; 并且該位置塊不屬于方塊自己的;

當左邊方向無占用格時,清除當前方塊四個小方塊位置,重新繪制方塊新坐標位置;并重置 相應的 OLSFK.Options.GameMap [x+y] 相應格的值;

當按鈕 keyup 時,繼承正常向下落;

OLSFK.isMe 代碼:

OLSFK.isMe = function(x,y) { var block = OLSFK.Items[OLSFK.Options.curBlock]; if (block) { for (var i=1; i<=4; i++) { if (block[i].x == x && block[i].y == y) {return true; } } } return false;}

即指定的 x,y (參數值) 是否還在當前方塊四個坐標內;

OLSFK.Right () 與 Left() 一樣;

旋轉方塊代碼;

OLSFK.Rotate = function() { var block = OLSFK.Items[OLSFK.Options.curBlock]; if (block) { var flag = true; var R = block[5]; for (var i=1; i<=4; i++) { var x = block[i].x; var y = block[i].y; if (R.x == x && R.y == y) { } else {var nson = new Object();nson.x = R.x + R.y - y;nson.y = R.y - R.x + x;if ( nson.x < 0 || nson.y < 0 || nson.x >= OLSFK.Options.width || nson.y >= OLSFK.Options.height ){ flag = false; break;}if (OLSFK.Options.GampMap[nson.x+’_’+nson.y] == 1 && !OLSFK.isMe(nson.x,nson.y)){ flag = false; break;} } } if (flag) { for (var i=1; i<=4; i++) //清除圖形 {var itm = block[i];var box = Lib.Getid(’box_’+itm.x+’_’+itm.y);box.style.background = ’#ddd’;OLSFK.Options.GampMap[itm.x+’_’+itm.y] = 0; } var Pnt = 1; for (var i=1; i<=4; i++) {var x = block[i].x;var y = block[i].y;if (R.x == x && R.y == y){ Pnt = i;} else { var nson = new Object(); nson.x = R.x + R.y - y; nson.y = R.y - R.x + x; OLSFK.Items[OLSFK.Options.curBlock][i] = {x:nson.x,y:nson.y};} } OLSFK.Items[OLSFK.Options.curBlock][5] = OLSFK.Items[OLSFK.Options.curBlock][Pnt]; OLSFK.draw(); } }}

var R = block[5]; 就是獲取旋轉點;

就開始對方塊四個小塊以旋轉點為中心,逆時針旋轉(并不全是 90 度);當當前塊不為旋轉點時,旋轉公式;

var nson = new Object();nson.x = R.x + R.y - y;nson.y = R.y - R.x + x;

這個公式要這樣看;

ResultX = RotateX + (RotateY - CurrentY);ResultY = RotateY - (RotateX - CurrentX);//Y的偏移量,就是X的增加值;//反之同

當旋轉四周都無占用物時;清除當前圖形,重繪旋轉后的圖形位置;

重置 OLSFK.Options.GampMap[itm.x+’_’+itm.y] 各個方塊的占用值;

OLSFK.Random = function() { if (OLSFK.Options.nextBlock != 0) { OLSFK.Options.curBlock = OLSFK.Options.nextBlock; var block = OLSFK.Next[OLSFK.Options.nextBlock]; if (block) { for (var i=1; i<=4; i++) {var itm = block[i];var box = Lib.Getid(’cur_’+itm.x+’_’+itm.y);box.style.background = ’#ddd’;//OLSFK.Options.GampMap[itm.x+’_’+itm.y] = 0; } } } else { OLSFK.Options.curBlock = Math.floor(Math.random() * 7 + 1); } OLSFK.Options.nextBlock = Math.floor(Math.random() * 7 + 1); OLSFK.drawNext();}

隨機生成下次預下落的方塊;并顯示到右上角的預覽表格里;

OLSFK.play = function(speed) { var block = OLSFK.Items[OLSFK.Options.curBlock]; if (block && OLSFK.Options.Move) { var flag = true; for (var i=1; i<=4; i++) { var x = block[i].x; var y = block[i].y; if (y+1 >= OLSFK.Options.height) {flag = false;break; } if (OLSFK.Options.GampMap[x+’_’+(y+1)] == 1 && !OLSFK.isMe(x,y+1)) {flag = false;break; } }if (flag) { for (var i=1; i<=4; i++) //清除圖形 {var itm = block[i];var box = Lib.Getid(’box_’+itm.x+’_’+itm.y);box.style.background = ’#ddd’;OLSFK.Options.GampMap[itm.x+’_’+itm.y] = 0; } for (var i=1; i<=5; i++) {var x = block[i].x;var y = block[i].y;OLSFK.Items[OLSFK.Options.curBlock][i] = {x:x,y:(y+1)}; } OLSFK.draw(); var S = OLSFK.Options.Levels[OLSFK.Options.curLevel]; if (speed) {S = 50; } OLSFK.Options.Timer = setTimeout(function() {OLSFK.play(); }, S); } else { OLSFK.ReItems(OLSFK.Options.curBlock); OLSFK.newRun(); } }}

OLSFK.play 正常下落的方法,也得判斷下落一格是否有被占用的格,如果沒有,清除當前方塊,繪制方塊新位置;

當方塊不能再下落時(flag = false),重置當前方塊坐標配置; OLSFK.ReItems(OLSFK.Options.curBlock);

進入 OLSFK.newRun(); 新下落方塊下落過程準備;

OLSFK.newRun = function() { clearTimeout(OLSFK.Options.Timer); OLSFK.DelFunc(); if (OLSFK.Options.deline >= 10) { OLSFK.Options.deline = 0; OLSFK.Options.curLevel ++; OLSFK.Element.CurLevel.setHTML('級:'+OLSFK.Options.curLevel); } OLSFK.Element.Score.setHTML('分:'+OLSFK.Options.Score); if (OLSFK.Options.curLevel <= OLSFK.Options.lineNum) { OLSFK.Random(); //判斷是否結束 OLSFK.ChkEnd(); } else { OLSFK.Options.Move = false; OLSFK.Options.Start = false; OLSFK.Options.Eventing = false; OLSFK.Options.Deling = false; Lib.Getid(’spn’).innerHTML = ’Game Is Over! You Win the Game!’; Lib.Getid(’dobtn’).innerHTML = ’ 開始 ’; } }

當下落結束時,清除定時器,暫停新方塊下落,檢測是否有可消除的行;減了多少行;

每減去一行 加分

OLSFK.Options.Score += OLSFK.Options.ScoreNum;

這個方法在 :

OLSFK.DelFunc = function() { OLSFK.Options.Deling = true; OLSFK.Options.Move = false; OLSFK.Options.Eventing = false; var Fn = 0; for (var i=OLSFK.Options.height-1; i>=0; i--) { Fn = 0; for (var j=0; j<OLSFK.Options.width; j++) { if (OLSFK.Options.GampMap[j+’_’+i] == 1) {Fn++; } } if (Fn == OLSFK.Options.width) { OLSFK.Options.deline ++; OLSFK.Options.Score += OLSFK.Options.ScoreNum; OLSFK.DelLine(i); i++; } } OLSFK.Options.Deling = false; OLSFK.Options.Move = true; OLSFK.Options.Eventing = true;}

中執行;

減完一行,就重置該行以上所有行往下降一行;并重置 :

OLSFK.Options.GampMap[x+’_’+y] = OLSFK.Options.GampMap[x+’_’+(y-1)];

該減行為上行的數據;

if (Fn == OLSFK.Options.width) { OLSFK.Options.deline ++; OLSFK.Options.Score += OLSFK.Options.ScoreNum; OLSFK.DelLine(i); i++; }

該判斷表示該行上所有格都被占用到;

回到 newRun 上,當判斷消行超過幾行時,即加級;

if (OLSFK.Options.curLevel <= OLSFK.Options.lineNum) { OLSFK.Random(); //判斷是否結束 OLSFK.ChkEnd(); }

如果級數小于配置的總級數,則進入 OLSFK.random();

設置當前下落方塊,并隨機生成下次下落方塊并預覽右上角表格上;

OLSFK.ChkEnd = function() { var block = OLSFK.Items[OLSFK.Options.curBlock]; if (block && OLSFK.Options.Move) { var flag = true; for (var i=1; i<=4; i++) { var x = block[i].x; var y = block[i].y; if (OLSFK.Options.GampMap[x+’_’+y] == 1) {flag = false;break; } } } if (flag ) { OLSFK.draw(); //定時往下掉 OLSFK.Options.Timer = setTimeout(function() { OLSFK.play(); }, OLSFK.Options.Levels[OLSFK.Options.curLevel]); } else { OLSFK.Options.Move = false; OLSFK.Options.Start = false; OLSFK.Options.Eventing = false; OLSFK.Options.Deling = false; Lib.Getid(’spn’).innerHTML = ’Game Is Over’; Lib.Getid(’dobtn’).innerHTML = ’ 開始 ’; }}

當當前下落的方塊進入表格上有被占用的格子,即被卡住,游戲結束;

反之 則 setTimeout 開始新方塊的下落動作;

其他方法說明

OLSFK.Event = function() { if (window.isIE) return window.event; func = OLSFK.Event.caller; while(func!=null) { var arg0=func.arguments[0]; if(arg0) { return arg0; } func=func.caller; } return null; }OLSFK.KeyCode = function() { return OLSFK.Event().keyCode || OLSFK.Event().which;}OLSFK.Event = function();

這是一種獲取當前事件的方法,可以比較兼容獲取當前的事件;

俄羅斯方塊 JavaScript 代碼

點擊此處本站下載

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數學運算用法總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript數組操作技巧總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結》

希望本文所述對大家JavaScript程序設計有所幫助。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 国产不卡毛片 | 91精品国产色综合久久久蜜香臀 | 国产午夜精品一区理论片飘花 | 成人免费视频大全 | 午夜美女久久久久爽久久 | 老汉老妇姓交视频 | 日本中文字幕在线 | 中文字幕日本在线观看 | 色播av| 24小时日本在线www免费的 | 亚洲精品资源 | 久久久久久伊人高潮影院 | 午夜剧场免费在线观看 | 69欧美视频 | 国产精品每日更新 | 浓精h攵女乱爱av | 成人性生交大片免费看视 | 狠狠躁日日躁夜夜躁影院 | 绯色av蜜臀vs少妇 | 成人av手机在线 | 越南性受xxx精品 | 999国产精品视频 | 国产女主播户外勾搭野战 | 第四色男人天堂 | 国产91福利在线观看 | 韩国午夜理论在线观看 | 男女爆操视频 | 最新无码a∨在线观看 | 国产成人无码午夜视频在线观看 | 成人免费无码大片a毛片 | 日韩视频一区二区三区在线播放免费观看 | 欧美三级a做爰在线观看 | 性chinese天美传媒麻 | 在线免费观看小视频 | 亚洲欧美一区二区三区国产精品 | 久草在线色站 | 91狠狠综合 | 91丨porny丨最新| 中文字幕一区2区3区 | 一二三四免费观看在线视频中文版 | 亚洲精品中文字幕一区二区三区 | 欧美日韩一区免费 | 欧美精品黄色片 | 国产精品久久综合 | 理论片午午伦夜理片影院99 | 2020av在线 | 99久久精品免费看国产小宝寻花 | 亚洲欧美另类中文字幕 | 国产精品性 | 超碰美女在线 | 超碰人人人人人人 | 国产真实夫妇视频 | 国精产品一区一区三区有限在线 | 99精品国产一区二区三区不卡 | 极品少妇xxxx精品少妇 | 青青久在线视频免费观看 | 中文字幕成人精品久久不卡 | 男女视频久久 | 香蕉在线播放 | 天天想夜夜爽 | 欧美日韩一区二区三区在线 | 国产女人好紧好爽 | 超碰一区二区 | 麻豆爱爱视频 | 特级黄色毛片在放 | 久久日本三级韩国三级 | 亚洲一区二区三区四区五区乱码 | 特级黄一级播放 | 日本少妇做爰奶水狂喷小说 | 国产精品久久久久av | 91在线免费看 | 青青青视频免费 | 色 综合 欧美 亚洲 国产 | 亚洲啊啊啊啊啊 | 99re在线观看视频 | 影音av在线| 乱淫av| 国产精品久久久久久一二三四五 | 国产精品99无码一区二区 | 中文字幕人妻丝袜乱一区三区 | 一级黄色a级片 | 国产精品久久久久久人妻精品 | 青青伊人久久 | 日韩在线影院 | 国产成人一区二区三区影院动漫 | 丝袜美女啪啪 | 六月丁香综合 | 狠狠干夜夜| 日韩天天| 国产精品成人免费一区久久羞羞 | 国产精品人成视频免费播放 | 成人禁片又硬又粗太爽了 | 大陆偷拍av | 毛片网站在线观看视频 | 4438ⅹ亚洲全国最大色丁香 | 亚洲成av人片在线观看无码 | 日韩午夜在线视频 | 他也色在线| 日韩欧美成人一区二区三区 | 无套内内射视频网站 | 人人爱夜夜爽日日做蜜桃 | 国产精品一二区在线观看 | 天堂va在线 | 91精品久久久久 | 97精品国产97久久久久久粉红 | 一本大道东京热无码视频 | 先锋影音资源2中文字幕 | 国产理伦天狼影院 | 另类综合视频 | 国产精品三级在线 | 天堂免费在线视频 | av天天在线 | 成人国产免费观看 | 999久久欧美人妻一区二区 | 亚洲欧美日韩久久精品第一区 | 国产91精品精华液一区二区三区 | 久久天堂热 | 五十路熟妇亲子交尾 | 国产午夜成人久久无码一区二区 | 中文字幕在线欧美 | 99自拍网| 女人解开奶罩喂男人吃奶 | 福利视频99| 国产97在线 | 日韩 | 国产精品亚洲综合色区韩国 | 免费成人蒂法网站 | 日本人妻丰满熟妇久久久久久 | 午夜精品久久久久久毛片 | 国产又粗又猛又爽又黄无遮挡 | 免费欧洲美女牲交视频 | 性欧美精品高清 | 国产精品不卡在线观看 | 激情人妻另类人妻伦 | 日产国产亚洲精品系列 | 毛片一卡二卡 | 国产91色 | 免费网站日本a级淫片免费看 | 国产最爽的乱淫视频国语对白 | 久久久久亚洲精品中文字幕 | 久久久日韩精品一区二区三区 | 丝袜捆绑调教午夜一区二区 | 少妇高潮大叫好爽 | 国产精品久久久久久无码 | 九九热视频在线播放 | 亚洲精品一卡二卡 | 尤物av午夜精品一区二区入口 | 日韩乱码人妻无码系列中文字幕 | 日本少妇裸体做爰高潮片 | 特级黄aaaaaaaaa毛片 | 欧美大白腚pics | 国产精品夜色一区二区三区 | 亚洲天堂免费av | 亚洲精选一区 | 天堂a区 | 精品午夜久久久 | 日韩中文字幕高清 | 精品福利一区二区 | 精品欧美一区二区在线观看 | 影音先锋大型av资源 | 国产伦理网站 | 精品免费国产一区二区三区四区 | 国产三级网址 | 天天躁日日躁狠狠躁av | 国产一区二区三区四区精 | 久久精品视频7 | 成人3d动漫一区二区三区 | 伊人网网站 | 热久久久久久久 | 国产日韩欧美精品在线观看 | 成人av网站在线观看 | 99久久99久久精品国产片果冻 | 成人欧美一区二区三区黑人 | 亚洲精品一区二区三区不 | 精品毛片在线观看 | 欧美一级在线观看 | tushy超清4k欧美极品在线 | 日韩精品无码一区二区 | 亚洲不卡中文字幕 | 日韩一级片免费 | 中文字幕第27页 | 久久精品www人人爽人人 | jizz韩国| 欧美三级图片 | 日本中文视频 | 国产视频一区在线播放 | 中文字幕日产乱码中文字幕 | 久久九| 成人免费777777被爆出 | 永久免费d站视频 | 一道本在线播放 | 国产不卡a | www91在线播放| 中文在线а天堂中文在线新版 | 国产精品99久久久久久久vr | 国产97色在线 | 精品欧洲av无码一区二区 | 中国偷拍毛茸茸肥老熟妇 | 免费人成在线观看网站 | 91免费国产视频 | videos另类灌满极品另类 | 日本少妇aaa | 怡红院av人人爰人人爽 | 一本色道久久88综合日韩精品 | 欧美第一页草草影院 | 国产欲妇 | 国产欧美日韩小视频 | 红桃17c视频永久免费入口 | 成人免费国产 | 麻豆福利在线观看 | 成年人在线观看网站 | 国产精品久久久久久久久久大牛 | 四虎国产成人精品免费一女五男 | 性视频毛茸茸 | 国产午夜精品一区二区 | 亚洲视频一区二区三区四区 | 午夜香蕉网 | 日本人妻丰满熟妇久久久久久 | 久久久久国产精品免费免费搜索 | 黄瓜视频91 | 天天操2018| 一本色道久久精品 | 欧美九九九| 亚 洲 视 频 高 清 无 码 | 天天做天天爱天天综合网2021 | 天天精品免费视频 | 中文字幕无线码免费人妻 | 欧美一级大片免费看 | 亚洲日本久久 | 丁香花在线影院观看在线播放 | 中文字幕乱码在线观看 | 奇米综合四色77777久久 | 狠狠躁日日躁夜夜躁2022麻豆 | 国产毛片农村妇女系列bd | 中文字幕精品亚洲无线码一区应用 | 琪琪色综合 | 亚洲精品乱码久久久久久国产主播 | 天天干天天操心 | 久久精品水蜜桃av综合天堂 | 日本老肥婆bbbwbbbwzr | 天堂资源在线www在线观看 | 处破女处破av | 久久天天躁夜夜躁狠狠85麻豆 | 五月天激情婷婷婷久久 | 精品精品国产高清a毛片 | 一级做受大片免费视频 | 中国a级大片 | 深夜福利一区二区 | 成人在线视频免费观看 | 好湿好紧太硬了我太爽了视频 | 亚洲a视频在线 | 国语精品一区二区三区 | 久操成人 | 亚洲淫视频 | 99精品国产一区二区三区2021 | 欧美日韩加勒比 | 中文永久有效幕中文永久 | 色噜噜狠狠一区二区三区果冻 | 制服丝袜第一页在线 | 日本打白嫩屁股视频 | 亚洲永久精品一区 | 亚洲天码中字 | 亚洲自拍成人 | 久久99精品国产麻豆不卡 | 亚洲国产精品无码久久98 | av看片资源 | 一边吃奶一边摸做爽视频 | 少妇特黄a片一区二区三区 精品香蕉一区二区三区 | 国产乱码精品一区二区三区精东 | 日韩一级免费 | 少妇性l交大片欧洲热妇乱xxx | 欧美激情精品久久久久 | 免费观看毛片视频 | 国产真实乱对白精彩久久老熟妇女 | 嫩草一线产区和二线产区 | 人妻少妇精品一区二区三区 | 免费观看毛片网站 | 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲爆爽av | 国产精品视频导航 | 99精品人妻少妇一区二区 | 极品少妇xxxx精品少妇偷拍 | 看黄色特级片 | 久久精品人人做人人爽97 | 少妇人妻丰满做爰xxx | 国产午夜禁区精品视频 | 免费国产黄色网址 | 五月天狠狠操 | 色爱视频 | 九一色视频 | 91一二区| 天天操天天射天天爽 | 蜜臀av综合网 | 狠狠操婷婷 | 久草在线手机视频 | gav久久| 成人h猎奇视频网站 | 国产麻豆91欧美一区二区 | av黄| 国产精品一区二区三区四区五区 | 人人超人人超碰超国产97超碰 | 亚洲一区二区三区三州 | www国产成人免费观看视频深夜成人网 | 黄色免费一级视频 | 国产午夜片无码区在线播放 | 夜夜操狠狠干 | 999久久久国产999久久久 | 国产嫩草影院久久久 | 一区二区在线观看免费视频 | 好看的中文字幕av | 久久久久无码精品国产app | 七七色影院 | 91性高湖久久久久久久久_久久99 | 国产成人免费观看久久久 | 老司机午夜免费精品视频 | 无码午夜成人1000部免费视频 | 波多野结衣乱码中文字幕 | 国产精品国产三级国产aⅴ浪潮 | 意大利少妇愉情理伦片 | 日韩在线网| 精品国产一区二区三区四区vr | 中文字幕一区二区三区四区五区 | 中国a级大片 | 色五婷婷 | 新婚少妇出差沦陷 | 午夜dv内射一区二区 | 麻豆精品国产精华精华液好用吗 | 欧美人与物videos另类 | 精品久久久久久中文字幕2017 | 欧美一级淫片免费视频魅影视频 | 久久疯狂做爰流白浆xx | aav在线| 水野朝阳av一区二区三区 | 日韩精品一区二区三区色欲av | 首页干日本少妇 | 亚洲精品www久久久 国产免费无码一区二区视频 | 宅男666在线永久免费观看 | 欧美黄色a级 | 国产偷自拍 | 一区二区三区综合 | 污污内射久久一区二区欧美日韩 | 免费高潮视频95在线观看网站 | 欧洲男女裸体无遮挡做爰 | 热99re久久精品这里都是精品 | 国产精品午夜一区 | 久久成人啪啪性教育 | 97日日碰曰曰摸日日澡 | 国产a∨精品一区二区三区不卡 | 精品国产一区二区三区四区阿崩 | 亚洲美女福利视频 | jizz曰本jlzz18| 成人在线免费观看视频 | 北岛玲日韩一区二区三区 | 日韩中文一区二区三区 | 久久久久久伦理 | 91们嫩草伦理| 日韩av无码精品人妻系列 | 日韩视频在线观看一区二区三区 | 夫の部长が调教中文字幕 | 超碰97人人人人人蜜桃 | 无码中文字幕乱码一区 | 操操综合| 岛国av噜噜噜久久久狠狠av | 三级无码在钱av无码在钱 | www天天干com| 中字幕视频在线永久在线观看免费 | 一女被多男玩喷潮视频 | 在线视频97| www视频在线观看免费 | 亚洲精品色视频 | 国产精品原创 | 欧美午夜一区二区三区 | 宅男噜噜噜666在线观看 | 成人免费视频一区二区三区 | 国产又粗又猛又爽又黄的网站 | 91黄色在线视频 | 久久av高潮av| 国产精品美女久久久久久久网站 | 欧美.www| 精品欧美乱码久久久久久1区2区 | 97人人模人人爽人人喊0 | 色综合欧美在线视频区 | 九九久久精品国产 | 人人妻人人妻人人片av | 欧美精品成人在线 | 九一色视频 | 色婷婷久久一区二区三区麻豆 | 久久精品久久精品久久 | 天天爱天天做天天大综合 | 五月婷婷影院 | 国产精品偷伦费观看一次 | 欧美一区二区伦理片 | 91精品在线播放 | 欧美专区第一页 | 欧美自偷自拍 | 午夜影院黄 | 日本高清免费毛片大全awaaa | 国产欧美wwwxj在线观看 | 天天爱天天射 | 日本美女黄色一级片 | www.国产在线视频 | 欧美肥老妇视频九色 | 日本成熟老太 | 日韩精品成人在线 | 大陆熟妇丰满多毛xxxx | 久久久亚洲欧洲日产国码aⅴ | 一级黄色大片视频 | 国产精品久久久久久一区二区三区 | 偷国产乱人伦偷精品视频 | 高清国产精品人妻一区二区 | 一区二区三区日本久久九 | 三级无遮挡污在线观看 | 国产91在线观看丝袜 | 国产极品在线播放 | 久久亚洲精品小早川怜子 | 强迫凌虐淫辱の牝奴在线观看 | 香蕉伊蕉伊中文视频在线 | 欧美成aⅴ人高清免费 | 午夜丰满少妇高清毛片1000部 | 哈利波特3在线观看免费版英文版 | 蜜臀av色欲a片无码精品一区 | 国内精品久久久久久 | 天天色棕合合合合合合合 | 国产午夜精品久久久久久免费视 | 爱爱免费小视频 | 国产欧美日韩高清 | 成人精品网站在线观看 | 国内精品卡一卡二卡三 | 美腿丝袜高跟三级视频 | 天天色天天射天天操 | 国产精品美女久久久另类人妖 | 成年人拍拍视频 | 亚洲无人区一区二区三区 | 色666| 狂野欧美性猛交xxxx777 | 99久久精品国产成人一区二区 | 老司机精品福利视频 | 亚洲欧美日韩国产成人精品影院 | 香蕉视频在线观看www | 欧美猛男性猛交视频 | 国产av无码专区亚洲版综合 | 美国av一区二区 | 精品国产乱码久久久久久蜜退臀 | 特大黑人巨交吊性xxxx视频 | 亚洲精品无码乱码成人 | 94久久国产乱子伦精品免费 | 麻豆一级片 | 中国特级毛片 | 好吊视频在线观看 | 日韩精品一区二区三区四区在线观看 | 国产一区二区播放 | 久久在线看| 少妇熟女久久综合网色欲 | 日韩欧美在线第一页 | 久久国产亚洲精品无码 | 99精品无人区乱码在线观看 | 成人综合影院 | 国产欧美日韩久久 | 久久午夜夜伦鲁鲁片不卡 | 中文幕无线码中文字夫妻 | 欧美激情精品久久久久久蜜臀 | 色呦呦视频在线观看 | 成人免费大片在线观看 | 一级片在线免费 | 一本大道伊人av久久综合 | 青娱乐伊人 | 91瑟瑟| 国产性一乱一性一伧的解决方法 | 成人国产精品久久久 | 台湾绝版午夜裸体写真秀 | 色八戒av| 强行糟蹋人妻hd中文字 | 久久久青| 亚洲精品97久久中文字幕无码 | 婷婷丁香六月激情综合啪 | 国内成人自拍视频 | 美国一级大黄一片免费中文 | 香蕉尹人网 | 国产网红福利 | 亚洲自偷自偷在线成人网站传媒 | 亚洲精品国产品国语在线观看 | 污网在线观看 | 国产成人在线视频观看 | 国产91在线观看丝袜 | 国产hxc132乱人免费视频 | 一区二区三区麻豆 | 看一级黄色 | 久久久午夜影院 | 亚洲字幕av一区二区三区四区 | 超碰在线观看99 | 国产美女mm131爽爽爽免费 | 久久久一区二区三区捆绑sm调教 | 成人黄色一级 | 无码人妻丰满熟妇啪啪 | 伊人手机视频 | 天天草夜夜操 | 男女做www免费高清视频网站 | 男男啪啪激烈高潮cc漫画免费 | 亚洲国产另类久久久精品性 | 老熟妇午夜毛片一区二区三区 | 91免费视频网 | 日本成人福利视频 | 欧美激情视频一区二区 | 经典av在线 | 无码人妻一区二区三区精品视频 | 天天躁人人躁人人躁狂躁 | 亚洲欧洲色 | 国产亚洲精品码 | 国产模特av私拍大尺度 | 国产色视频在线观看免费 | 国产免费视频传媒 | 99综合视频 | 亚洲国产精品成人av | 国产一区二区三区影院 | 国产精品嫩草影院久久久 | 国产成人麻豆精品午夜福利在线 | 大肉大捧一进一出好爽mba | 6699嫩草久久久精品影院 | 狠狠色老熟妇老熟女 | 欧美一级视频免费观看 | 天堂资源地址在线 | 国产成人在线网站 | 国产又黄又硬又湿又黄的播出时间 | 青青视频在线播放 | 中文在线字幕免费观看电 | 91av色| 成人黄色国产 | 毛片视频免费播放 | 爆操日本美女 | 精品人妻二区中文字幕 | 香蕉视频影院 | 国产成人视屏 | 男女下面进入的视频免费午夜 | 久久丁香网 | 中文精品在线观看 | 亚洲第一天堂网 | 爽爽影院免费观看视频 | 99热只有| 可以免费看成人啪啪过程的软件 | 麻豆成人久久精品二区三区免费 | 国产成人一区二区三区 | 亚洲精品一区二区三区中文字幕 | 性感美女一级片 | 欧美z○zo变态重口另类黄 | 亚洲色偷拍另类无码专区 | 欧美精品一二 | 91啪在线| 欧洲成人午夜精品无码区久久 | а√新版天堂资源中文8 | 亚洲男人的天堂在线观看 | 国产真实交换配乱淫视频 | 丰满老女人乱妇dvd在线播放 | 四虎影酷 | 国产精品永久免费视频 | 中文字幕在线视频免费 | 欧美偷拍一区二区 | 欧美大片免费看 | 毛片最新网址 | 国产桃色视频 | a级老太婆毛片老太婆毛片 a级毛片,黄,免费观看 m | 激情五月色综合国产精品 | 久久精品免费一区二区三区 | 日韩18p| 丰满少妇被猛烈进av毛片 | 中文幕无线码中文字夫妻 | 国产日产欧美最新 | 超碰8| 麻豆一级视频 | 国产精品污www一区二区三区 | 久久综合狠狠综合久久综合88 | 亚洲视频在线免费 | 欧美成人在线网站 | 亚洲一区二区在线免费观看 | 欧美刺激性大交 | 99在线免费观看视频 | 久久精品aⅴ无码中文字字幕蜜桃 | 国精品人妻无码一区二区三区喝尿 | 无码日韩人妻精品久久蜜桃 | 伊人免费| 国产精品一区二区不卡 | 日韩精品一区二 | 99精品欧美一区二区三区小说 | 一本色道久久亚洲精品加勒比 | 中文字幕人妻熟女人妻 | av中文字幕观看 | a资源在线| 自拍偷拍亚洲一区 | 老牛影视av一区二区在线观看 | 日韩黄色三级视频 | 国产一区二区三区四区五区密私 | 久久午夜无码鲁丝片 | 亚洲香蕉av在线一区二区三区 | 久久精品国产99久久99久久久 | 亚洲午夜精品一区二区 | 久久久国 | 狠狠cao日日穞夜夜穞av | 婷婷伊人网 | 中文字幕中文有码在线 | 欧美成人一区二免费视频 | 一二三四精品 | 天堂视频一区 | 亚洲精品乱码久久久久久蜜桃动漫 | 国产人成免费爽爽爽视频 | 一本色道久久精品 | 超色视频 | 色网站综合 | 欧美国产日韩a在线视频 | 99热在线观看 | 久久精品国产免费一区 | 婷婷五月花 | 91蝌蚪在线| 中国女人内谢69xxxx | 色香欲天天影视综合网 | 免费观看一区二区三区视频 | 黄色在线视频网址 | 欧美日韩免费高清一区色橹橹 |