精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

跟著小白一起學鴻蒙—一起學做Tetris(上)

系統 OpenHarmony
小時候有個游戲叫俄羅斯方塊,大人小孩都喜歡玩,我們就一起看看如何能用OpenHarmony學習做個Tetris。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

簡介

小時候有個游戲叫俄羅斯方塊,大人小孩都喜歡玩,我們就一起看看如何能用OpenHarmony學習做個Tetris。

#盲盒+碼##跟著小白一起學鴻蒙# [番外三]一起學做Tetris(上)-開源基礎軟件社區

開發

1、HAP應用建立

《#跟著小白一起學鴻蒙#[六]如何編寫一個hap應用》里我們介紹了簡單的Hap應用的開發以及基礎控件的介紹,這里我們就不贅述Hap項目的建立過程,以下就是基礎的Hap的page文件:index.ets。

build() {
Row() {
Column() {
Canvas(this.context)
.width('100%')
.height('100%')
.onClick((ev: ClickEvent) => {
console.info("click!!")
this.doClick()
})
.onReady(() =>{
this.context.imageSmoothingEnabled = false
this.randomType()
this.drawall()
})
}
.width('100%')
}
.height('100%')
.backgroundColor("#cccccc")
}

build是基礎頁面的構造函數,用于界面的元素構造,其他的頁面的生命周期函數如下:

declare class CustomComponent {
/**
* Customize the pop-up content constructor.
* @since 7
*/
build(): void;
/**
* aboutToAppear Method
* @since 7
*/
aboutToAppear?(): void;
/**
* aboutToDisappear Method
* @since 7
*/
aboutToDisappear?(): void;
/**
* onPageShow Method
* @since 7
*/
onPageShow?(): void;
/**
* onPageHide Method
* @since 7
*/
onPageHide?(): void;
/**
* onBackPress Method
* @since 7
*/
onBackPress?(): void;
}

2、Canvas介紹

canvas是畫布組件用于自定義繪制圖形,具體的API頁面如下:

https://developer.harmonyos.com/cn/docs/documentation/doc-references/ts-components-canvas-canvas-0000001333641081。

頁面顯示前會調用aboutToAppear()函數,此函數為頁面生命周期函數。

canvas組件初始化完畢后會調用onReady()函數,函數內部實現小游戲的初始頁面的繪制。

(1)初始化頁面數據
drawall() {
this.drawBox()
this.drawSideBlock()
this.drawBoxBlock()
this.drawScore()
}

因為都是畫布畫的,所以布局有點麻煩,需要畫幾個部分:

  • 中間的大框:方塊下落和堆疊區域。
  • 右邊提升框:下個方塊類型。
  • 中間方塊:方塊運動和堆疊。
  • 下方計分:行數得分。
(2)繪制大框
drawBox() {
this.context.lineWidth = 4
this.context.beginPath()
this.context.lineCap = 'butt'
this.context.moveTo(0, 100)
this.context.lineTo(270, 100)
this.context.moveTo(270, 100)
this.context.lineTo(270, 690)
this.context.moveTo(0, 690)
this.context.lineTo(270, 690)
}
(3)繪制提示方塊
drawSideBlock() {
this.context.fillStyle = 'rgb(250,0,0)'
let bs = this.blockSize
let coords = this.blockShapBasic[this.blockType]
let x = this.sideStartX + coords[0][0]*this.blockSize
let y = this.sideStartY + coords[0][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
x = this.sideStartX + coords[1][0]*this.blockSize
y = this.sideStartY + coords[1][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
x = this.sideStartX + coords[2][0]*this.blockSize
y = this.sideStartY + coords[2][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
x = this.sideStartX + coords[3][0]*this.blockSize
y = this.sideStartY + coords[3][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
this.context.stroke()
}
(4)繪制運動方塊
drawBoxBlock() {
this.setDirection()
this.context.fillStyle = 'rgb(250,0,0)'
let bs = this.blockSize
let coords = this.curBlockShap
let starty = this.slotStartY + this.step * this.blockSize
let x = this.slotStartX + coords[0][0]*this.blockSize
let y = starty + coords[0][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
x = this.slotStartX + coords[1][0]*this.blockSize
y = starty + coords[1][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
x = this.slotStartX + coords[2][0]*this.blockSize
y = starty + coords[2][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
x = this.slotStartX + coords[3][0]*this.blockSize
y = starty + coords[3][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
this.context.stroke()
this.slotBottomY = y
}
(5)繪制得分區域
drawScore() {
this.context.fillStyle = 'rgb(0,0,0)'
this.context.font = '80px sans-serif'
this.context.fillText("Score:"+this.score.toString(), 20, 740)
}

3、游戲邏輯

簡單的小游戲主體游戲邏輯為:等待開始,開始,結束流程圖如下:

graph LR
timer開始 --> 方塊下落
timer開始 --> click[點擊]
click[點擊] --> 方塊變形
方塊下落 --> |落到底| 能消除 --> 計分 --> 堆積
方塊下落 --> |落到底| 不能消除 --> 堆積
堆積 --> |堆積到頂| 滿了 --> 游戲結束
堆積 --> |堆積到頂| 未滿 --> 方塊下落
doClick() {
this.direction += 1
}

4、完整邏輯

@Entry
@Component
struct Index {
@State message: string = 'Hello World'
private settings: RenderingContextSettings = new RenderingContextSettings(true);
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings);
private blockType: number = 0
private blockSize: number = 30
private blockShapBasic = [
[[0,0],[0,1],[0,2],[0,3]],
[[0,0],[0,1],[0,2],[1,2]],
[[0,0],[0,1],[1,1],[0,2]],
[[0,0],[0,1],[1,1],[1,2]],
[[0,0],[0,1],[1,0],[1,1]],
]
private blockShap = [
[[0,0],[0,1],[0,2],[0,3]],
[[0,0],[0,1],[0,2],[1,2]],
[[0,0],[0,1],[1,1],[0,2]],
[[0,0],[0,1],[1,1],[1,2]],
[[0,0],[0,1],[1,0],[1,1]],
]
private curBlockShap = []
private sideStartX = 300;
private sideStartY = 150;
private slotStartX = 120;
private slotStartY = 150;
private slotBottomY = 150;;
private score = 0;
private step = 0;
private direction = 0;
aboutToDisappear() {
}
aboutToAppear() {
this.sleep(1000)
}
async sleep(ms: number) {
return new Promise((r) => {
setInterval(() => {
console.log(this.message)
this.drawStep()
}, ms)
})
}
doClick() {
this.direction += 1
}
drawBox() {
this.context.lineWidth = 4
this.context.beginPath()
this.context.lineCap = 'butt'
this.context.moveTo(0, 100)
this.context.lineTo(270, 100)
this.context.moveTo(270, 100)
this.context.lineTo(270, 690)
this.context.moveTo(0, 690)
this.context.lineTo(270, 690)
}
setDirection() {
this.curBlockShap = this.blockShap[this.blockType]
if (this.direction > 0) {
for (let i=0;i<4;i++) {
let x = this.curBlockShap[i][0]
this.curBlockShap[i][0] = this.curBlockShap[i][1]
this.curBlockShap[i][1] = x
}
this.direction = 0
}
}
drawSideBlock() {
this.context.fillStyle = 'rgb(250,0,0)'
let bs = this.blockSize
let coords = this.blockShapBasic[this.blockType]
let x = this.sideStartX + coords[0][0]*this.blockSize
let y = this.sideStartY + coords[0][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
x = this.sideStartX + coords[1][0]*this.blockSize
y = this.sideStartY + coords[1][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
x = this.sideStartX + coords[2][0]*this.blockSize
y = this.sideStartY + coords[2][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
x = this.sideStartX + coords[3][0]*this.blockSize
y = this.sideStartY + coords[3][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
this.context.stroke()
}
drawBoxBlock() {
this.setDirection()
this.context.fillStyle = 'rgb(250,0,0)'
let bs = this.blockSize
let coords = this.curBlockShap
let starty = this.slotStartY + this.step * this.blockSize
let x = this.slotStartX + coords[0][0]*this.blockSize
let y = starty + coords[0][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
x = this.slotStartX + coords[1][0]*this.blockSize
y = starty + coords[1][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
x = this.slotStartX + coords[2][0]*this.blockSize
y = starty + coords[2][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
x = this.slotStartX + coords[3][0]*this.blockSize
y = starty + coords[3][1]*this.blockSize
this.context.fillRect(x, y, bs, bs)
this.context.rect(x, y, bs, bs)
console.info("x,y"+x.toString()+":"+y.toString())
this.context.stroke()
this.slotBottomY = y
}
drawScore() {
this.context.fillStyle = 'rgb(0,0,0)'
this.context.font = '80px sans-serif'
this.context.fillText("Score:"+this.score.toString(), 20, 740)
}
randomType() {
this.blockType = Math.floor(Math.random()*5)
console.info("blocktype:"+this.blockType.toString())
}
drawStep() {
this.context.clearRect(0,0,this.context.width,this.context.height)
this.step += 1
this.drawBox()
this.drawSideBlock()
this.drawBoxBlock()
this.drawScore()
if (this.slotBottomY >= 660) {
this.step = 0
this.randomType()
}
}
drawall() {
this.drawBox()
this.drawSideBlock()
this.drawBoxBlock()
this.drawScore()
}
build() {
Row() {
Column() {
Canvas(this.context)
.width('100%')
.height('100%')
.onClick((ev: ClickEvent) => {
console.info("click!!")
this.doClick()
})
.onReady(() =>{
this.context.imageSmoothingEnabled = false
this.randomType()
this.drawall()
})
}
.width('100%')
}
.height('100%')
.backgroundColor("#cccccc")
}
}

遺留問題:

  1. 沒實現堆積計分(接下來會做)。
  2. 可實現網絡對戰(分布式對戰)。

5、獲取源碼

等游戲完整發布,會有兩個版本,單機和聯機版本。

總結

本文主要介紹了小游戲的開發,畫布功能的使用。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 51CTO開源基礎軟件社區
相關推薦

2022-12-02 14:20:09

Tetris鴻蒙

2022-11-14 17:01:34

游戲開發畫布功能

2023-03-30 09:32:27

2023-04-04 09:24:11

鴻蒙HiDumper

2022-10-10 14:47:04

藍牙應用鴻蒙

2022-08-19 19:02:20

開源鴻蒙操作系統

2023-02-27 16:30:32

鴻蒙開源協議分析

2023-03-30 09:19:54

SELinux安全子系統

2023-01-03 15:09:10

鴻蒙常用工具

2023-03-15 16:19:03

BinderIPC工具

2022-12-06 15:39:16

鴻蒙主干代碼

2022-11-24 14:34:41

Hap程序鴻蒙

2022-10-09 15:05:50

NAPI框架鴻蒙

2022-10-20 16:40:16

JS應用控制LED鴻蒙

2023-04-06 09:18:52

鴻蒙AVPlayerAVRecorder

2022-10-17 14:29:24

鴻蒙應用開發

2023-02-24 16:02:45

WebSocket網絡通訊協議

2022-11-28 15:42:39

分布式軟總線鴻蒙

2022-12-05 15:02:14

鴻蒙用戶鑒權

2022-12-09 15:34:38

點贊
收藏

51CTO技術棧公眾號

一区二区三区四区电影| 免费电影日韩网站| 国产馆精品极品| 久久久久久久久国产精品| 日本xxxx裸体xxxx| 免费电影日韩网站| 亚洲精品成人悠悠色影视| 国产精品一区二区三区在线| 精品一区二三区| 午夜天堂精品久久久久| 亚洲欧洲日韩国产| 免费不卡av网站| 韩国成人漫画| 一区二区三区在线播| 蜜桃视频在线观看成人| av观看在线免费| 久久综合九色综合欧美狠狠| 欧美大胆a视频| 蜜臀久久99精品久久久久久| 51社区在线成人免费视频| 日本韩国精品在线| 日本人体一区二区| 日本高清中文字幕在线| 成人午夜电影网站| 91精品久久久久久久久青青| 国产成人精品片| 欧美在线日韩| 在线观看日韩av| 亚洲国产精品无码久久久久高潮| 欧美大片网站| 91久久精品国产91性色tv| 国产在线观看欧美| 免费在线观看黄色网| 久久久久国产一区二区三区四区| 成人av蜜桃| 国产一区二区三区视频免费观看| 久久精品九九| 7777免费精品视频| 久久久久无码国产精品不卡| 99久久综合| 一本色道久久88亚洲综合88| 成人精品在线观看视频| 国产亚洲成av人片在线观黄桃| 91麻豆精品国产自产在线观看一区| 国产一区视频免费观看| 色是在线视频| 欧美日韩国产一区二区| 成人性免费视频| av中文字幕电影在线看| 亚洲最快最全在线视频| 日本a级片在线观看| 国产在线更新| 亚洲视频在线观看三级| 黄频视频在线观看| 成人看av片| 亚洲视频一二三| 成人短视频在线看| a天堂中文在线官网在线| 1024成人网| 国产麻豆电影在线观看| 国内外激情在线| 亚洲免费观看高清完整| 影音先锋男人的网站| 老司机午夜在线| 亚洲激情图片qvod| 亚洲精品蜜桃久久久久久| 欧美日韩经典丝袜| 亚洲mv在线观看| 欧美国产亚洲一区| 日本综合字幕| 欧美无人高清视频在线观看| 亚洲精品一二三四五区| 成人国产一区| 91精品麻豆日日躁夜夜躁| 两女双腿交缠激烈磨豆腐| 欧美1区2区3| 亚洲黄页视频免费观看| 精品人妻少妇嫩草av无码| 精品香蕉视频| 久久亚洲精品成人| 久久一级黄色片| 亚洲资源av| 国产精品网址在线| 精品国产一级片| av高清不卡在线| 日韩黄色影视| 八戒八戒神马在线电影| 亚洲福中文字幕伊人影院| 噜噜噜久久亚洲精品国产品麻豆| 欧美电影免费观看高清完整| 欧美日韩日日骚| 亚洲熟女乱综合一区二区| 极品国产人妖chinesets亚洲人妖| 国产丝袜一区视频在线观看 | 日韩av字幕| 一区二区三区高清国产| 青青草激情视频| 久久久精品日韩| 91系列在线播放| 同心难改在线观看| 中文字幕视频一区| 又粗又黑又大的吊av| 婷婷精品久久久久久久久久不卡| 精品国产sm最大网站免费看| 色欲狠狠躁天天躁无码中文字幕 | 久久这里只精品| av综合网站| 中文字幕亚洲二区| 人人干人人干人人干| 麻豆精品精品国产自在97香蕉| 国产91精品入口17c| sese一区| 婷婷开心久久网| 午夜激情视频网| 国产精品亚洲二区| 高清欧美一区二区三区| 一级全黄少妇性色生活片| 91在线国内视频| 欧美少妇一区二区三区| 91国拍精品国产粉嫩亚洲一区| 精品欧美一区二区久久| 久久精品国产亚洲AV成人婷婷| 中国女人久久久| 5g国产欧美日韩视频| av电影在线网| 欧美日韩加勒比精品一区| 精品国产aⅴ一区二区三区东京热| 国产一区不卡| 欧美专区福利在线| 天天干视频在线观看| 亚洲免费av高清| 亚洲第一天堂久久| 日韩中文首页| 国产精品欧美亚洲777777| 欧美视频综合| 欧美日韩中文字幕在线| 日韩精品视频一区二区| 综合视频在线| 91性高湖久久久久久久久_久久99| 二人午夜免费观看在线视频| 色综合天天综合网天天狠天天| xfplay5566色资源网站| 欧美日韩hd| av一区观看| 91精品久久久| 日韩免费高清av| 青娱乐av在线| 丁香天五香天堂综合| 欧美视频在线第一页| 日本免费精品| 欧美黑人xxxⅹ高潮交| 精品国产av一区二区| 亚洲人被黑人高潮完整版| 在线a免费观看| 亚洲一区 二区 三区| 444亚洲人体| 欧美videossex| 亚洲白拍色综合图区| 日本熟妇毛茸茸丰满| 99视频一区二区| 免费无码av片在线观看| 国产精品嫩模av在线| 国产精品草莓在线免费观看| 伊人在线视频| 欧美一级久久久| 麻豆91精品91久久久| 成人ar影院免费观看视频| 尤物av无码色av无码| 国产亚洲一区二区三区啪| 国产剧情久久久久久| 国产1区在线| 精品播放一区二区| 国产一区二区视频网站| 国产精品美女视频| japan高清日本乱xxxxx| 99精品国产一区二区青青牛奶| 另类小说综合网| 成人黄色毛片| 欧美大片大片在线播放| 日本在线一二三| 欧美人与z0zoxxxx视频| 国产精品99精品| 国产性色一区二区| 色姑娘综合天天| 亚洲永久免费| 国产又黄又爽免费视频| 国产亚洲精品美女久久| 国产精品中文久久久久久久| 自拍亚洲图区| 亚洲天堂色网站| 国产成人精品毛片| 色综合久久天天| 色欲人妻综合网| 久久蜜桃av一区精品变态类天堂| 久久国产这里只有精品| 亚洲一级二级| 在线日韩av永久免费观看| 嫩草国产精品入口| 国产在线高清精品| 性欧美18~19sex高清播放| 日韩中文字幕在线视频| 午夜在线视频观看| 91麻豆精品国产91久久久久 | 欧美日韩一级片在线观看| 久久久久成人网站| 日本一区二区高清| 国产精品第七页| 国产高清无密码一区二区三区| 成人在线免费播放视频| 好吊一区二区三区| 亚洲一区三区| 欧美男gay| 国产偷国产偷亚洲高清97cao| 欧美高清xxx| 欧美性做爰毛片| 久久电影网站| 久久九九免费视频| 国产精品一级伦理| 日韩精品福利网站| www.com在线观看| 欧美日韩美女一区二区| 国产一级淫片a视频免费观看| 亚洲电影第三页| 色在线观看视频| 国产精品国产自产拍高清av| 中文字幕免费视频| 97精品久久久久中文字幕| 九九九久久久久久久| 久久99久久99小草精品免视看| 黄www在线观看| 日韩视频中文| 日本中文字幕亚洲| 在线观看一区视频| 日本国产中文字幕| 欧美日韩专区| 青青青在线观看视频| 欧美在线看片| 久久www视频| 欧美国产91| 国风产精品一区二区| 欧美国产激情| 妺妺窝人体色777777| 影音国产精品| 中文字幕无码精品亚洲资源网久久| 欧美精品一级| 91九色丨porny丨国产jk| 精品福利av| 久久久一本二本三本| 亚洲免费一区二区| 国产极品美女高潮无套久久久| 亚洲欧美日韩国产一区二区| av动漫在线观看| 久久久精品五月天| 亚洲成色www.777999| 麻豆freexxxx性91精品| 国产又黄又猛的视频| 国产一区欧美一区| 极品白嫩的小少妇| 99精品久久久久久| 这里只有久久精品| 国产精品美女久久久久久| 少妇高潮惨叫久久久久| 亚洲视频在线观看一区| 久久久全国免费视频| 午夜影院久久久| 无码人妻黑人中文字幕| 欧美日韩国产不卡| 精品国产va久久久久久久| 亚洲国产精品系列| 美国一级片在线免费观看视频 | 日本黄色免费在线| 国产精品久久久久久久av大片| 四虎永久精品在线| 北条麻妃高清一区| 久久99青青| 国产精品99久久久久久大便| 亚洲高清二区| www.国产区| 国产在线精品视频| 精品国产一区在线| 国产精品另类一区| 精品在线视频观看| 一本大道久久a久久精二百| 一级特黄色大片| 亚洲级视频在线观看免费1级| 国产精品视频一区二区久久| 欧美精品在线免费播放| 波多视频一区| 18成人免费观看网站下载| 清纯唯美亚洲经典中文字幕| 亚洲巨乳在线观看| 136国产福利精品导航网址| 国产三级三级三级看三级| 大尺度一区二区| 亚洲一级黄色录像| 亚洲妇女屁股眼交7| 一区二区视频网| 日韩不卡中文字幕| 影音先锋男人在线资源| 国产成人福利视频| 高潮按摩久久久久久av免费| 亚洲欧美精品在线观看| 国产精品毛片| 欧美体内she精高潮| 国产欧美日韩精品一区| 中文字幕一区二区三区手机版| 欧美日韩久久一区二区| 四虎成人免费在线| 久久99亚洲热视| 2019中文亚洲字幕| 日韩国产精品一区二区三区| 在线视频免费在线观看一区二区| 黄色片免费网址| 欧美国产国产综合| 国产第一页在线观看| 亚洲成人久久网| 丝袜综合欧美| 91色中文字幕| 99久久99热这里只有精品| 老熟妇仑乱视频一区二区 | 狠狠色综合色区| 欧美激情国产在线| 粉嫩虎白女毛片人体| 99这里都是精品| 久久国产露脸精品国产| 在线不卡中文字幕| 午夜免费福利在线观看| 国产精品1234| 亚洲伊人春色| 日韩欧美一区二| eeuss鲁片一区二区三区在线观看 eeuss影院一区二区三区 | av在线成人| 中文字幕中文字幕99| 久久精品国产久精国产爱| 中文字幕免费在线看线人动作大片| 高跟丝袜一区二区三区| 五月天福利视频| 欧美性视频网站| 外国成人在线视频| 精品中文字幕av| 久久久久久影视| 亚洲视频 欧美视频| 亚洲欧美另类国产| 亚洲精品在线影院| 日韩av电影免费在线| 蜜臀久久99精品久久久画质超高清| 自拍偷拍亚洲天堂| 91久久人澡人人添人人爽欧美| 你懂的在线观看| 国产精品91久久久久久| 精品国产一区二区三区小蝌蚪| 欧美日韩大尺度| 国产精品毛片无遮挡高清| 亚洲天天综合网| 免费91麻豆精品国产自产在线观看| 国产精选久久| 久久人人爽人人爽人人av| www.欧美.com| 天堂网中文字幕| 国产一区二区三区在线播放免费观看 | 日韩免费av一区二区| 精品成av人一区二区三区| 亚洲va在线va天堂va偷拍| 亚洲激情自拍视频| 婷婷国产在线| 国产精品丝袜高跟| 综合激情在线| brazzers精品成人一区| 欧美日韩视频专区在线播放| 91麻豆一二三四在线| 九色91视频| 久久精品国产亚洲一区二区三区| 精品99在线观看| 亚洲男人天堂2023| 亚洲欧美久久精品| www.日本在线播放| 中文字幕不卡在线| 亚洲av无码一区二区三区dv| 青青草99啪国产免费| 欧美好骚综合网| 午夜久久久久久久| 欧美日韩国产经典色站一区二区三区 | 欧美偷拍综合| 亚洲成人激情小说| 午夜精品久久久久久久99水蜜桃| 国产高清视频免费最新在线| 99re热精品| 青青草国产精品亚洲专区无| 欧美日韩一级在线观看| 亚洲成人动漫在线播放| 在线看片国产福利你懂的| 国内精品视频在线播放| 首页国产欧美久久| 久久精品一级片| 亚洲欧美综合v| 午夜精品在线| 日本va中文字幕| 婷婷开心久久网| 香蕉视频免费在线播放| 蜜桃91精品入口|