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

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

python實現A*尋路算法

瀏覽:50日期:2022-06-17 08:01:25
目錄A* 算法簡介關鍵代碼介紹保存基本信息的地圖類搜索到的節點類算法主函數介紹代碼的初始化完整代碼A* 算法簡介

A* 算法需要維護兩個數據結構:OPEN 集和 CLOSED 集。OPEN 集包含所有已搜索到的待檢測節點。初始狀態,OPEN集僅包含一個元素:開始節點。CLOSED集包含已檢測的節點。初始狀態,CLOSED集為空。每個節點還包含一個指向父節點的指針,以確定追蹤關系。

A* 算法會給每個搜索到的節點計算一個G+H 的和值F:

F = G + H G:是從開始節點到當前節點的移動量。假設開始節點到相鄰節點的移動量為1,該值會隨著離開始點越來越遠而增大。 H:是從當前節點到目標節點的移動量估算值。 如果允許向4鄰域的移動,使用曼哈頓距離。如果允許向8鄰域的移動,使用對角線距離。

算法有一個主循環,重復下面步驟直到到達目標節點:1 每次從OPEN集中取一個最優節點n(即F值最小的節點)來檢測。2 將節點n從OPEN集中移除,然后添加到CLOSED集中。3 如果n是目標節點,那么算法結束。4 否則嘗試添加節點n的所有鄰節點n’。

鄰節點在CLOSED集中,表示它已被檢測過,則無需再添加。 鄰節點在OPEN集中: 如果重新計算的G值比鄰節點保存的G值更小,則需要更新這個鄰節點的G值和F值,以及父節點;否則不做操作 否則將該鄰節點加入OPEN集,設置其父節點為n,并設置它的G值和F值。

有一點需要注意,如果開始節點到目標節點實際是不連通的,即無法從開始節點移動到目標節點,那算法在第1步判斷獲取到的節點n為空,就會退出

關鍵代碼介紹保存基本信息的地圖類

地圖類用于隨機生成一個供尋路算法工作的基礎地圖信息

先創建一個map類, 初始化參數設置地圖的長度和寬度,并設置保存地圖信息的二維數據map的值為0, 值為0表示能移動到該節點。

class Map():def __init__(self, width, height):self.width = widthself.height = heightself.map = [[0 for x in range(self.width)] for y in range(self.height)]

在map類中添加一個創建不能通過節點的函數,節點值為1表示不能移動到該節點。

def createBlock(self, block_num):for i in range(block_num):x, y = (randint(0, self.width-1), randint(0, self.height-1))self.map[y][x] = 1

在map類中添加一個顯示地圖的函數,可以看到,這邊只是簡單的打印出所有節點的值,值為0或1的意思上面已經說明,在后面顯示尋路算法結果時,會使用到值2,表示一條從開始節點到目標節點的路徑。

def showMap(self):print('+' * (3 * self.width + 2))for row in self.map:s = ’+’for entry in row:s += ’ ’ + str(entry) + ’ ’s += ’+’print(s)print('+' * (3 * self.width + 2))

添加一個隨機獲取可移動節點的函數

def generatePos(self, rangeX, rangeY):x, y = (randint(rangeX[0], rangeX[1]), randint(rangeY[0], rangeY[1]))while self.map[y][x] == 1:x, y = (randint(rangeX[0], rangeX[1]), randint(rangeY[0], rangeY[1]))return (x , y)搜索到的節點類

每一個搜索到將到添加到OPEN集的節點,都會創建一個下面的節點類,保存有entry的位置信息(x,y),計算得到的G值和F值,和該節點的父節點(pre_entry)。

class SearchEntry():def __init__(self, x, y, g_cost, f_cost=0, pre_entry=None):self.x = xself.y = y# cost move form start entry to this entryself.g_cost = g_costself.f_cost = f_costself.pre_entry = pre_entrydef getPos(self):return (self.x, self.y)算法主函數介紹

下面就是上面算法主循環介紹的代碼實現,OPEN集和CLOSED集的數據結構使用了字典,在一般情況下,查找,添加和刪除節點的時間復雜度為O(1), 遍歷的時間復雜度為O(n), n為字典中對象數目。

def AStarSearch(map, source, dest):...openlist = {}closedlist = {}location = SearchEntry(source[0], source[1], 0.0)dest = SearchEntry(dest[0], dest[1], 0.0)openlist[source] = locationwhile True:location = getFastPosition(openlist)if location is None:# not found valid pathprint('can’t find valid path')break;if location.x == dest.x and location.y == dest.y:breakclosedlist[location.getPos()] = locationopenlist.pop(location.getPos())addAdjacentPositions(map, location, dest, openlist, closedlist)#mark the found path at the mapwhile location is not None:map.map[location.y][location.x] = 2location = location.pre_entry

我們按照算法主循環的實現來一個個講解用到的函數。下面函數就是從OPEN集中獲取一個F值最小的節點,如果OPEN集會空,則返回None。

# find a least cost position in openlist, return None if openlist is emptydef getFastPosition(openlist):fast = Nonefor entry in openlist.values():if fast is None:fast = entryelif fast.f_cost > entry.f_cost:fast = entryreturn fast

addAdjacentPositions 函數對應算法主函數循環介紹中的嘗試添加節點n的所有鄰節點n’。

# add available adjacent positionsdef addAdjacentPositions(map, location, dest, openlist, closedlist):poslist = getPositions(map, location)for pos in poslist:# if position is already in closedlist, do nothingif isInList(closedlist, pos) is None:findEntry = isInList(openlist, pos)h_cost = calHeuristic(pos, dest)g_cost = location.g_cost + getMoveCost(location, pos)if findEntry is None :# if position is not in openlist, add it to openlistopenlist[pos] = SearchEntry(pos[0], pos[1], g_cost, g_cost+h_cost, location)elif findEntry.g_cost > g_cost:# if position is in openlist and cost is larger than current one,# then update cost and previous positionfindEntry.g_cost = g_costfindEntry.f_cost = g_cost + h_costfindEntry.pre_entry = location

getPositions 函數獲取到所有能夠移動的節點,這里提供了2種移動的方式:

允許上,下,左,右 4鄰域的移動 允許上,下,左,右,左上,右上,左下,右下 8鄰域的移動

def getNewPosition(map, locatioin, offset):x,y = (location.x + offset[0], location.y + offset[1])if x < 0 or x >= map.width or y < 0 or y >= map.height or map.map[y][x] == 1:return Nonereturn (x, y)def getPositions(map, location):# use four ways or eight ways to moveoffsets = [(-1,0), (0, -1), (1, 0), (0, 1)]#offsets = [(-1,0), (0, -1), (1, 0), (0, 1), (-1,-1), (1, -1), (-1, 1), (1, 1)]poslist = []for offset in offsets:pos = getNewPosition(map, location, offset)if pos is not None:poslist.append(pos)return poslist

isInList 函數判斷節點是否在OPEN集 或CLOSED集中

# check if the position is in listdef isInList(list, pos):if pos in list:return list[pos]return None

calHeuristic 函數簡單得使用了曼哈頓距離,這個后續可以進行優化。getMoveCost 函數根據是否是斜向移動來計算消耗(斜向就是2的開根號,約等于1.4)

# imporve the heuristic distance more precisely in futuredef calHeuristic(pos, dest):return abs(dest.x - pos[0]) + abs(dest.y - pos[1])def getMoveCost(location, pos):if location.x != pos[0] and location.y != pos[1]:return 1.4else:return 1代碼的初始化

可以調整地圖的長度,寬度和不可移動節點的數目。可以調整開始節點和目標節點的取值范圍。

WIDTH = 10HEIGHT = 10BLOCK_NUM = 15map = Map(WIDTH, HEIGHT)map.createBlock(BLOCK_NUM)map.showMap()source = map.generatePos((0,WIDTH//3),(0,HEIGHT//3))dest = map.generatePos((WIDTH//2,WIDTH-1),(HEIGHT//2,HEIGHT-1))print('source:', source)print('dest:', dest)AStarSearch(map, source, dest)map.showMap()

執行的效果圖如下,第一個表示隨機生成的地圖,值為1的節點表示不能移動到該節點。第二個圖中值為2的節點表示找到的路徑。

python實現A*尋路算法

完整代碼

使用python3.7編譯

from random import randintclass SearchEntry():def __init__(self, x, y, g_cost, f_cost=0, pre_entry=None):self.x = xself.y = y# cost move form start entry to this entryself.g_cost = g_costself.f_cost = f_costself.pre_entry = pre_entrydef getPos(self):return (self.x, self.y)class Map():def __init__(self, width, height):self.width = widthself.height = heightself.map = [[0 for x in range(self.width)] for y in range(self.height)]def createBlock(self, block_num):for i in range(block_num):x, y = (randint(0, self.width-1), randint(0, self.height-1))self.map[y][x] = 1def generatePos(self, rangeX, rangeY):x, y = (randint(rangeX[0], rangeX[1]), randint(rangeY[0], rangeY[1]))while self.map[y][x] == 1:x, y = (randint(rangeX[0], rangeX[1]), randint(rangeY[0], rangeY[1]))return (x , y)def showMap(self):print('+' * (3 * self.width + 2))for row in self.map:s = ’+’for entry in row:s += ’ ’ + str(entry) + ’ ’s += ’+’print(s)print('+' * (3 * self.width + 2))def AStarSearch(map, source, dest):def getNewPosition(map, locatioin, offset):x,y = (location.x + offset[0], location.y + offset[1])if x < 0 or x >= map.width or y < 0 or y >= map.height or map.map[y][x] == 1:return Nonereturn (x, y)def getPositions(map, location):# use four ways or eight ways to moveoffsets = [(-1,0), (0, -1), (1, 0), (0, 1)]#offsets = [(-1,0), (0, -1), (1, 0), (0, 1), (-1,-1), (1, -1), (-1, 1), (1, 1)]poslist = []for offset in offsets:pos = getNewPosition(map, location, offset)if pos is not None:poslist.append(pos)return poslist# imporve the heuristic distance more precisely in futuredef calHeuristic(pos, dest):return abs(dest.x - pos[0]) + abs(dest.y - pos[1])def getMoveCost(location, pos):if location.x != pos[0] and location.y != pos[1]:return 1.4else:return 1# check if the position is in listdef isInList(list, pos):if pos in list:return list[pos]return None# add available adjacent positionsdef addAdjacentPositions(map, location, dest, openlist, closedlist):poslist = getPositions(map, location)for pos in poslist:# if position is already in closedlist, do nothingif isInList(closedlist, pos) is None:findEntry = isInList(openlist, pos)h_cost = calHeuristic(pos, dest)g_cost = location.g_cost + getMoveCost(location, pos)if findEntry is None :# if position is not in openlist, add it to openlistopenlist[pos] = SearchEntry(pos[0], pos[1], g_cost, g_cost+h_cost, location)elif findEntry.g_cost > g_cost:# if position is in openlist and cost is larger than current one,# then update cost and previous positionfindEntry.g_cost = g_costfindEntry.f_cost = g_cost + h_costfindEntry.pre_entry = location# find a least cost position in openlist, return None if openlist is emptydef getFastPosition(openlist):fast = Nonefor entry in openlist.values():if fast is None:fast = entryelif fast.f_cost > entry.f_cost:fast = entryreturn fastopenlist = {}closedlist = {}location = SearchEntry(source[0], source[1], 0.0)dest = SearchEntry(dest[0], dest[1], 0.0)openlist[source] = locationwhile True:location = getFastPosition(openlist)if location is None:# not found valid pathprint('can’t find valid path')break;if location.x == dest.x and location.y == dest.y:breakclosedlist[location.getPos()] = locationopenlist.pop(location.getPos())addAdjacentPositions(map, location, dest, openlist, closedlist)#mark the found path at the mapwhile location is not None:map.map[location.y][location.x] = 2location = location.pre_entryWIDTH = 10HEIGHT = 10BLOCK_NUM = 15map = Map(WIDTH, HEIGHT)map.createBlock(BLOCK_NUM)map.showMap()source = map.generatePos((0,WIDTH//3),(0,HEIGHT//3))dest = map.generatePos((WIDTH//2,WIDTH-1),(HEIGHT//2,HEIGHT-1))print('source:', source)print('dest:', dest)AStarSearch(map, source, dest)map.showMap()

到此這篇關于python實現A*尋路算法的文章就介紹到這了,更多相關python A*尋路算法內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产中文字幕一区二区三区 | 午夜精品在线观看 | 欧美日韩成人在线播放 | 国产区视频在线观看 | 久久99国产精品久久99大师 | 91.成人天堂一区 | 狠狠操狠狠操 | 久草在线资源福利站 | 久久9999| 91在线精品秘密一区二区 | 午夜看看 | 影音先锋中文字幕一区 | 欧美影院 | 在线观看毛片视频 | 久久成人免费视频 | 99久久视频 | 一区二区国产在线观看 | 精品久久久一区 | 黄av在线 | 人人射人人草 | 99视频免费观看 | 亚洲精品久久久久久久久久久久久 | 日日爱视频 | 国产91成人video | 精品一区二区久久久久久久网站 | 91高清视频在线观看 | 国产精品久久久久久久久久免费看 | 夜夜骑av | 午夜亚洲一区 | 国内av网站| 97国产精品| 成人性视频在线 | 亚洲国产成人精品女人久久久 | 久久之精品| 四虎884a| 日韩色在线 | 午夜精品一区二区三区在线播放 | 国精品一区 | 九色在线观看 | 国产妇女乱码一区二区三区 | 99精品久久久 | 欧美色综合 | 91一区二区在线 | 国产精品一区二区三区四区 | 免费国产黄网站在线观看视频 | 综合中文字幕 | 国产精品视频一区二区三区 | 天天人人精品 | www国产网站 | 精品久久久久久国产三级 | 日本在线不卡视频 | 伊人网站 | 自拍偷拍视频网站 | 日韩激情免费视频 | 黄视频免费在线 | 成人特区 | 天天操操 | 最近的中文字幕在线看视频 | 精品在线视频一区 | 一区二区三区四区久久 | 亚洲性人人天天夜夜摸 | 久久国产精品毛片 | 得得啪在线视频 | 国产精品视频久久久 | 免费看片91 | 国产精品久久久久免费 | 中国电影黄色一级片免费观看 | 色欧美片视频在线观看 | 操操操干干干 | 亚洲精品乱码久久久久久蜜桃图片 | 日本一区二区三区四区 | 天天干天天插天天 | 免费黄在线看 | 日韩精品一区二区三区在线播放 | 伊人国产精品 | 日本免费黄色 | 国产精品午夜电影 | 精品亚洲一区二区三区在线观看 | 欧美中文字幕在线观看 | 亚洲成人免费网站 | 欧美一区在线看 | 天天干天天添 | 欧美视频在线观看 | 国产成人自拍一区 | 羞羞视频网站在线看 | 九九久久久 | 在线日韩 | 国产免费av网站 | 国产一区二区视频在线 | 久久777| 我要看免费黄色片 | 国产一级片播放 | 五月婷婷丁香在线 | 在线免费日韩 | 欧美xxxx黑人又粗又长 | 91网站在线播放 | 国产精品毛片一区二区三区 | 日本免费三片免费观看 | 九色精品| 国产精品中文字幕在线观看 | 亚洲精品久久久久国产 | 国产免费一区二区 | 亚洲一区二区在线免费观看 | 国产精品毛片久久久久久久 | 国产精品69毛片高清亚洲 | 视频在线一区 | 欧美一区二区三区在线观看视频 | 久久se精品一区精品二区 | 91中文字幕在线观看 | 黄色毛片在线观看 | 婷婷丁香激情网 | 婷婷色5月| 亚洲视频免费在线观看 | 色吧综合网 | 蜜桃av一区二区三区 | www.啪啪| 欧美中文在线 | 亚洲免费人成在线视频观看 | 日本高清中文字幕 | 视频专区一区二区 | 99久热在线精品视频观看 | 久久精品国产一区二区三区不卡 | 午夜免费看片 | 国产美女www爽爽爽免费视频 | 国产伦精品一区二区三区四区视频_ | 欧美成人精品一区二区 | 精品国产18久久久久久二百 | av中文字幕在线观看 | 日韩欧美成人一区二区三区 | 亚洲精品久久久久久久久久久 | 成人夜晚看av | 日日操夜夜操免费视频 | 欧美日韩视频 | 精品欧美一区二区三区 | 欧美日韩激情四射 | 噜噜噜噜噜在线视频 | 成人片在线播放 | 黄色在线免费观看 | 中文在线一区二区 | 欧美二区在线 | 欧美成人黄激情免费视频 | hd国产人妖ts另类视频 | 亚洲精品久久久久久动漫 | 成人免费的视频 | 久久精品伊人 | 国产免费一区 | 小川阿佐美88av在线播放 | 成人超碰 | av动漫一区二区 | 欧美日韩高清不卡 | 欧美精品 在线观看 | 99久久婷婷国产精品综合 | 成人在线视频一区 | 精品国产一区二区三区久久久蜜 | 国产精品影院在线观看 | 一区二区三区在线观看视频 | 一区二区三区亚洲视频 | 国产精品免费视频观看 | 亚洲男人的天堂在线 | 亚洲看片网站 | 福利视频一区 | 欧美午夜一区二区三区免费大片 | 久久久久久一区 | 亚洲性生活免费视频 | 久久久网 | 欧美日韩在线免费观看 | 91社区在线高清 | 国产精品黄网站在线观看 | 一区二区三区视频 | 国产精品欧美久久久久一区二区 | 欧美一级片免费看 | 高清国产午夜精品久久久久久 | 91亚洲免费 | 成人综合在线观看 | 自拍小电影 | 操操操日日日 | 国产一区二区免费 | 操碰97 | 国产免费看 | 国产精品久久久一区二区 | 欧美亚洲另类丝袜综合网动图 | 成人欧美一区二区三区在线观看 | 特级黄一级播放 | 一区二区三区日韩 | 在线色网 | 国产91精品一区二区绿帽 | 天天澡天天狠天天天做 | 欧美一级在线 | 国产乱码精品一区二区三区忘忧草 | 成人h漫在线观看 | 亚洲 精品 综合 精品 自拍 | 国产中文字幕在线观看 | 国产美女视频网站 | 久久精品一区二区 | 日本视频网 | 国产激情网站 | 久久99精品国产.久久久久 | av网站久久 | 在线日韩视频 | 午夜婷婷色 | 成人午夜精品一区二区三区 | 色视频免费在线观看 | 成人免费观看49www在线观看 | 精品国产不卡一区二区三区 | 国产精品18hdxxxⅹ在线 | 色综合久久久久 | 国产伦精品一区二区 | 婷婷激情五月 | 亚洲欧美第一页 | 久久99精品久久久久久按摩秒播 | 欧美激情一区二区三区 | 亚洲天堂一区二区 | 伊人久久视频 | 亚洲成人高清在线 | 在线精品亚洲 | 岛国av免费观看 | 日本福利网站 | 国内精品久久久久国产 | 亚洲免费在线视频 | 国产久| 日日操操 | 国产成人在线免费观看视频 | 国产精品视频久久久 | 日韩国产一区二区三区 | 国产精品11 | 欧美视频精品 | 国产精品456在线影视 | 一区二区视频免费 | 国产精品污www在线观看 | 91精品国产综合久久婷婷香蕉 | 国产成人精品综合 | 欧美日韩国产精品 | 亚洲天堂黄色 | 国产成人一区二区三区 | 日本妇人成熟免费视频 | 欧洲精品久久久 | 天天草天天插 | 成人老司机 | 日韩午夜激情视频 | 国产黄色网址在线观看 | 91国内精品久久 | 精品视频成人 | 蜜桃αv| 美女操av | 亚洲免费片 | 成人男女激情免费视频 | 成人亚州| 亚洲一区二区三区四区在线观看 | 日韩极品在线 | 亚洲精品第一页 | 亚洲一区二区在线播放 | 一区二区三区国产 | 91综合视频在线观看 | 久久精品国产99国产精品 | 亚洲一区二区免费视频 | 成人欧美日韩一区二区三区 | 亚洲视频在线看 | 久久综合爱 | 成人精品一区二区三区 | 国产欧美一区二区三区国产幕精品 | 午夜影院免费 | 亚洲综合精品 | 久久久久久久 | 在线观看的av | 一区二区三区在线免费看 | 91视频三区 | 日韩中文视频 | 国产精品久久久久久久久 | 亚洲一区精品在线 | 久久91| 欧美日韩福利视频 | 最新黄色网址在线播放 | 黄色直接看 | 国产一区二区在线免费观看 | 成人免费毛片嘿嘿连载视频 | 成人在线片 | 中文字幕成人网 | 久久久久久99 | 高清成人 | 午夜视频91| 久久久精品一区二区 | 电影k8一区二区三区久久 | 一色桃子av一区二区免费 | 在线播放亚洲 | 亚洲色图综合 | 天天天综合网 | 看亚洲a级一级毛片 | 精品少妇一区二区三区在线播放 | 91国内精品久久 | 国产综合久久久久久鬼色 | 在线中文字幕av | 精品一区在线 | 日韩成人精品在线 | 日韩欧美h| 高清av在线 | 亚洲国产二区 | 国产成人免费在线 | 7777久久 | 久热久热| 国产日韩欧美一区 | 亚洲一区二区三区久久久 | 欧美视频在线播放 | 毛片网站大全 | 在线国产区 | 欧美日韩精品一区 | 亚洲欧美激情视频 | 亚洲精品在线播放视频 | 天堂资源最新在线 | 日韩亚洲欧美综合 | 日本三级欧美三级 | 黄色毛片观看 | 美女视频一区二区三区 | 精品成人在线 | 欧美高清dvd | 日韩欧美国产一区二区 | 青青草一区| 黄色网页在线观看 | 精品久久久久久 | 无码一区二区三区视频 | 亚洲一区二区在线播放 | 久久成人免费观看 | 日韩综合一区 | 欧美一区二区三区在线观看视频 | www.伊人 | 欧美福利视频 | 伊人www| 精品久久久久国产免费 | 国产精品一区av | 国产一区二区三区久久久久久久久 | 欧美激情精品久久久久久免费 | 天天爽天天干 | ririsao亚洲国产中文 | 亚洲在线播放 | 羞羞在线观看视频免费观看hd | 亚洲精品永久免费 | 毛片网站在线观看 | 亚洲国产精品久久久久 | 在线观看的av | 欧美精品在欧美一区二区少妇 | 久久99精品久久久 | 国产激情在线观看视频 | 欧美成人第一页 | 91精品国产91久久久久游泳池 | 亚洲精品午夜aaa久久久 | 日韩爱爱网址 | 日韩精品久久久 | 久久久www成人免费精品 | 国精品一区 | 91视频在线| 蜜桃视频在线观看www社区 | 欧美高清一区 | 超级乱淫片国语对白免费视频 | 久久国产精品久久久久久 | www.久久99| 日韩在线视频一区 | 欧美性18| 视频一区二区三区中文字幕 | 国产精品视频免费 | 成人影院一区二区三区 | 97久久精品人人做人人爽50路 | 一区二区国产精品 | 国产精品美女久久久久久不卡 | 久久精品久久久久电影 | www.久久久 | 亚洲欧洲综合av | 中文字幕三区 | 国内在线一区 | 国产一区二区三区在线 | 99看片| 在线免费看黄视频 | 国产高清精品一区 | 永久黄网站色视频免费 | 亚洲欧美精品一区二区三区 | 免费看的毛片 | 亚洲成人激情在线观看 | www.久久久 | 亚洲a网 | 亚洲精品在线视频 | 超碰av在线 | 午夜精品视频 | 国产一区二区三区在线免费观看 | 色爱av | 精品国产一区二区三区小蝌蚪 | 日韩欧美一区二区视频 | 污片在线免费看 | 国产精品一二三 | 天天精品 | 国产精品久久久久久久久久久久 | av激情在线 | 中文在线资源 | 国产视频福利一区 | 五月天婷婷激情视频 | 国产成人综合在线 | 黄毛片网站 | 夜夜av| 国产不卡免费视频 | 五月婷婷丁香 | 国产高清一级 | 在线观看亚洲免费 | 中文字幕视频在线 | 91久久久久久久 | 日韩欧美在线视频观看 | 久久久久久九九九 | 久草在线| 中文字字幕一区二区三区四区五区 | 日本一二三区在线 | 久久毛片 | 成人一区二区在线观看 | 狠狠干美女 | 日本视频在线 | 国产欧美日韩综合精品 | 国产一区二区三区在线看 | 国产日韩精品视频 | 四虎成人免费电影 | 久久久久久综合 | 久久高清国产 | 久久久精品高清 | 青青久草| 精品久久久久久久 | 在线观看精品自拍私拍 | 涩涩视频在线看 | 性色av网| 美日韩精品视频 | 成人国产精品久久久 | 五月香婷婷| 欧美精品三区 | 成av在线| 手机在线不卡av | 国变精品美女久久久久av爽 | 色吧欧美 | 在线不卡一区 | 欧美精品一级二级 | 国产乱码一区二区三区 | h视频免费观看 | 99亚洲 | 国产精品久久久久久久久免费桃花 | 婷五月综合 | 国产日产精品一区二区三区四区 | 亚洲免费观看视频 | ririsao久久精品一区 | 色综合久久久久 | 精品日韩一区 | 久久久久国产一区二区三区四区 | 欧美a级成人淫片免费看 | 亚洲国产精品一区二区www | 国产亚洲精品久久久久久豆腐 | 成人免费一区二区三区视频网站 | 老司机福利在线视频 | 亚洲精品视频在线 | 91麻豆产精品久久久久久 | 欧美一级网 | 亚洲一区二区在线播放 | 国产精品国产三级国产aⅴ中文 | 北条麻妃国产九九九精品小说 | 国产精品片aa在线观看 | 久久成人精品视频 | 毛片综合| 国产精品久久久久不卡 | 毛片一区二区 | 色吧一区 | 精品视频在线免费 | 国产一区二区三区 | 成人国产精品免费网站 | 国产综合精品一区二区三区 | 成人免费一区二区三区视频网站 | 亚洲欧美国产一区二区三区 | 欧美视频精品 | 成人av免费观看 | 亚洲精品视频在线观看网站 | 久久久99精品免费观看 | 性色av一区二区三区 | 91国内 | 亚洲男人天堂2023 | 久久综合色视频 | 日本精品在线 | 一区二区三区高清 | 亚洲免费视频在线观看 | 九九亚洲精品 | 亚洲一区二区三区中文字幕 | 亚洲天堂久久 | 中文字幕亚洲欧美日韩在线不卡 | 7799精品视频天天看 | 91精品国产综合久久精品 | 亚洲精品久久久久久一区二区 | 欧美激情视频一区二区三区在线播放 | 国产美女在线观看 | 国产视频三区 | 精品亚洲综合 | av天空| 欧美视频在线一区 | 精品国产一区二区三区性色av | 99免费在线播放99久久免费 | 91久久国产综合久久 | 亚洲女人天堂av | 成人看的羞羞视频免费观看 | 亚洲91在线 | 亚洲欧美日韩国产综合精品二区 | 亚洲一区中文字幕在线观看 | 亚洲一区中文字幕 | 99精品国产高清一区二区麻豆 | 欧美 日本 国产 | 成人国产在线观看 | 久久久av亚洲男天堂 | 国产日产精品一区二区三区四区 | 丝袜 亚洲 另类 欧美 综合 | 99视频免费播放 | 国产资源在线观看 | 91在线免费观看 | 一区二区中文字幕在线观看 | 成av在线 | 国产精品一区av | 91精品国产自产91精品 | 国产日韩一区二区 | 最新av中文字幕 | 亚洲综合视频一区 | 日韩一区二区三区在线观看 | 欧美激情a∨在线视频播放 成人免费共享视频 | 欧美一区永久视频免费观看 | 国产一级片在线 | 久久久久久久久国产 | 日韩免费一区 | 亚洲综合色网 | 日韩av网站在线 | 一级欧美在线 | 在线成人av | 午夜精品一区二区三区免费视频 | 色精品 | 99re国产| 99中文视频 | 日韩成人在线网 | 欧美激情一区二区三区在线视频 | 亚洲欧美一区二区三区不卡 | 国产精品极品美女在线观看免费 | 综合色久 | 欧洲亚洲精品久久久久 | 亚洲视频在线视频 | 91网站在线看 | 在线免费视频一区 | 91免费视频观看 | 成人欧美一区二区三区白人 | 全毛片| 色播开心网| 国产一级特黄aaa大片 | 成人精品一区二区 | av网站观看| 精品免费国产 | 夏同学福利网 | 电家庭影院午夜 | 中文字幕 亚洲一区 | 一区视频在线 | 一级片视频免费 | 日日想日日干 | 久久久久久国产精品高清 | 在线国产视频 | 日日干夜夜操 | 久久精品国产一区 | 精品亚洲一区二区 | 在线观看亚洲免费 | 久色视频在线观看 | 中文字幕在线精品 | 久久伊人青青草 | 高清一区二区 | 君岛美绪一区二区三区在线视频 | 一级大片免费观看 | 久久中文字幕一区 | 91久久国产综合久久蜜月精品 | 欧美精品一区二区在线观看 | 97国产精品视频人人做人人爱 | 国产影音先锋 | 久久精品综合 | 欧美第5页 | 男女免费在线观看视频 | 欧美不卡一区二区 | 国产网站在线 | 精品二区 | 日韩视频在线观看视频 | av网站网址 | 精品亚洲成a人在线观看 | 最新中文字幕 | 成人一区二区在线 | 久久久久国产 | 成年视频在线观看福利资源 | 精品国产一区探花在线观看 | 中文久久| 亚洲欧美一区二区三区视频 | 夜添久久精品亚洲国产精品 | 成 人 a v天堂 | 一级特黄色大片 | 天天干夜夜拍 | 中国特级黄色片 | 欧洲毛片 | 在线国产视频 | 久久久久无码国产精品一区 | 狠狠天天| 免费成人在线观看视频 | 国产成人精品一区一区一区 | 中文字幕在线观看一区二区三区 | 三级特黄特色视频 | 中文字幕日韩在线 | 久久99精品久久久久久琪琪 | 欧美天天 | 国产成人av一区二区三区 | 99pao成人国产永久免费视频 | 互换娇妻呻吟hd中文字幕 | 欧美视频区 | 玖玖玖影院| av一区二区三区在线观看 | av国产精品| 国产在线视频网 | 国产精品久久一区 | 风间由美一区二区三区在线观看 | 成人看的羞羞视频免费观看 | 国产毛片在线 | 涩涩视频网站在线观看 | 91精品久久 |