猜的成語 通過游戲編程學(xué)Python(番外篇)— 亂序成語、猜單詞

雕龍文庫 分享 時(shí)間: 收藏本文

猜的成語 通過游戲編程學(xué)Python(番外篇)— 亂序成語、猜單詞

通過游戲編程學(xué)

通過游戲編程學(xué)(5)— 猜成語(下)

通過游戲編程學(xué)(4)— 猜成語(上)

通過游戲編程學(xué)(3)— 賭大小

文章目錄

前言

大家好,五一放假了,問哥決定更新勤快點(diǎn),另一方面,也是因?yàn)樯瞎?jié)課的猜成語小游戲引發(fā)了一些思考:我們怎么樣擴(kuò)展我們已開發(fā)的項(xiàng)目,添加更多的功能和樂趣。就比如猜數(shù)字、賭大小這樣簡單的入門小游戲,一樣可以放在一個(gè)大的項(xiàng)目里,作為某個(gè)小的環(huán)節(jié)。比如,有朝一日我們開發(fā)了一款RPG,就可以給玩家角色去賭大小、猜數(shù)字的機(jī)會(huì),獲取游戲中的金幣,進(jìn)而有更多的交互項(xiàng)目等等。而且,當(dāng)以后我們學(xué)了GUI圖形化編程后,這些不起眼的小游戲也都可以用另一種形式煥發(fā)新生。

說到GUI,迄今為止,我們一直在的終端下開發(fā)文字游戲,而且問哥計(jì)劃在介紹GUI編程之前還要繼續(xù)用文本介紹幾個(gè)經(jīng)典小游戲,于是問哥覺得還是有必要稍微介紹一下終端的運(yùn)行方法。

此外,為了下節(jié)課做準(zhǔn)備,今天也會(huì)簡單介紹一下文本文件的讀取方法,正好也用得到。

如此一來,雖然是一節(jié)“番外篇”,并沒有新的游戲,但它卻含有不少干貨,也希望大家都能有所得。

一、知識(shí)點(diǎn) 自帶的編程環(huán)境讀取txt文本文件r字符串與f字符串列表生成式.()方法 二、猜成語小游戲的擴(kuò)展 1. 玩法簡介

游戲的整體框架基于上節(jié)課的內(nèi)容,但是在成語的提示上由提示詞改為亂序顯示成語的每個(gè)字,由玩家輸入正確的成語;修改猜錯(cuò)單詞的機(jī)會(huì)為3次(6次實(shí)在太多了哈)。此外還加入了計(jì)分功能,在游戲結(jié)束后統(tǒng)計(jì)玩家一共猜對(duì)了多少個(gè)成語。

游戲截圖如下:

2. 游戲流程 3. 程序代碼

全部代碼:

附上我使用的200個(gè)成語的TXT文件下載鏈接,用于練習(xí)。

import random# 從TXT文本文件中讀取成語組成詞庫# f = open(r'C:\Coding\word.txt', 'r', encoding="utf-8")# WORD = f.readlines()# f.close()with open(r'C:\Coding\word.txt', 'r', encoding = 'utf-8') as f: WORD = f.readlines()# 列表生成式WORD = [i.strip() for i in WORD]def 猜成語(猜過啥, 詞長): # 確保玩家輸入正確字?jǐn)?shù),且不會(huì)重復(fù)輸入錯(cuò)誤的詞,然后返回玩家猜的漢字 while True: print('猜猜看,這是什么成語呢?') print()= input() if len() != 詞長: print(f'請輸入{詞長}個(gè)字的成語') print() elifin 猜過啥: print('這個(gè)詞你已經(jīng)猜過了,換一個(gè)試試吧') print() else: returndef 再玩一次(): # 如果玩家輸入yes或y,則游戲從頭再來,否則游戲結(jié)束 print('還要繼續(xù)玩嗎?(yes-是,no-否)') return input().lower().startswith('y')def 亂序(原詞): # 把原有的詞序打亂,組成新的詞序 亂序 = list(原詞) random.shuffle(亂序) # 檢查亂序后的成語是否湊巧和原詞相同,如果相同則再次打亂 while ''.join(亂序) == 原詞: random.shuffle(亂序) # 返回亂序后的字組成的列表 return 亂序# 游戲從這里開始print('《 開 心 猜 成 語 2》\n')錯(cuò)詞表 = []游戲結(jié)束 = False電腦選詞 = random.choice(WORD)亂序選詞 = 亂序(電腦選詞)# 定義一個(gè)新的變量用于記錄猜對(duì)的次數(shù)correct = 0while True: # 亂序顯示要猜的成語 for i in 亂序選詞: print(i, end=' ') print() # 請玩家猜一個(gè)四字成語= 猜成語(錯(cuò)詞表, len(電腦選詞)) if== 電腦選詞: # 如果猜對(duì)了游戲結(jié)束 print('沒錯(cuò)!就是“' + 電腦選詞 + '”!你贏了!') correct += 1 游戲結(jié)束 = True else: print('不對(duì)哦~\n') 錯(cuò)詞表.append() # 檢查玩家是否猜錯(cuò)太多次 if len(錯(cuò)詞表) == 3: # 顯示狀態(tài)(提示字, 電腦選詞) print('很遺憾,你已經(jīng)猜錯(cuò)' + str(len(錯(cuò)詞表)) + '次,游戲結(jié)束。' + '正確的成語是“' + 電腦選詞 + '”。') 游戲結(jié)束 = True # 詢問玩家是否再玩一次 if 游戲結(jié)束: if 再玩一次(): 錯(cuò)詞表 = [] 游戲結(jié)束 = False 電腦選詞 = random.choice(WORD) 亂序選詞 = 亂序(電腦選詞) else: breakprint(f'您本輪一共猜對(duì)了{correct}個(gè)成語,再接再厲!')

3. 代碼簡析

相比較上節(jié)課的程序而言,有以下主要變化:

使用open方法從txt文件里讀取成語建立詞庫(200個(gè)成語),而不用在里輸入;增加了一個(gè)新的自定義函數(shù)亂序(),接收一個(gè)參數(shù),返回一個(gè)把成語打散漢字后的列表;原有的自定義函數(shù)猜成語() 增加了一個(gè)形參詞長,用來告訴函數(shù)比較玩家輸入的字符長度是否等于系統(tǒng)選中的詞(因?yàn)橛锌赡苁侨帧⑽遄殖烧Z或更長),如果不等則要求玩家重新輸入;增加了一個(gè)變量,每當(dāng)玩家猜對(duì)成語后它的值增加1,當(dāng)游戲結(jié)束后在屏幕上顯示出玩家總共猜對(duì)多少成語。相當(dāng)于一個(gè)簡單的計(jì)分系統(tǒng);將玩家猜錯(cuò)的機(jī)會(huì)從6減成3——豐儉由君,當(dāng)然你也可以改成任何數(shù);刪掉不需要的自定義函數(shù)和變量。 三、知識(shí)點(diǎn) 1. 自帶的IDLE

如果不是經(jīng)常需要編程,使用自帶的編譯器就完全足夠了。以問哥電腦系統(tǒng)安裝的.10.4版本為例,從官網(wǎng)下載好安裝包以后,在開始菜單就可以找到類似下圖的軟件:

打開它,就是自帶的命令行窗口了。(我們在或Unix/系統(tǒng)的命令行下敲擊回車,也可以進(jìn)入控制臺(tái)環(huán)境。)

是解釋型語言,逐條運(yùn)行語句,所以我們可以在控制臺(tái)里像一問一答一樣和交互,如:

同樣,我們也可以把所有語句都寫到文本文件里,后綴改成py猜的成語,也就是程序文件,交給編譯器運(yùn)行。打開左上角的File菜單,新建New File,或打開Open已有的py文件都可以。

然后在新跳出的窗口里輸入代碼(或已有代碼),點(diǎn)擊菜單欄的Run運(yùn)行程序,或者F5快捷鍵,就可以運(yùn)行程序了。

程序運(yùn)行過程中生成的所有的文本輸入輸出信息(如() / ())都會(huì)在控制臺(tái)輸出。

2. txt文本文件的讀取

在里常用的讀取txt文件的方法是open()方法,接收的必選參數(shù)有文件所在路徑,以及打開方式(本例中是’r’,read-only只讀)等,都是字符串格式。可選的參數(shù)有編碼方式,這里使用’utf-8’的編碼方式讀取txt文件。編碼方式就像一把鑰匙,如果鑰匙不對(duì),程序可能會(huì)報(bào)錯(cuò)或者讀取出一串亂碼。

open()方法返回一個(gè)文件類型的對(duì)象,我們將它賦值給變量f,然后在后面的程序里就可以操作它了。

f = open(r'C:\Coding\word.txt', 'r', encoding="utf-8")WORD = f.readlines()f.close()

注意:操作完該文件后,必須使用文件對(duì)象的()方法將其關(guān)閉,不然它一直會(huì)存在內(nèi)存里。如果沒有正常關(guān)閉的話,文件將無法被修改。

()方法

文本文件類型的對(duì)象也有很多方法猜的成語,今天我們先認(rèn)識(shí)和學(xué)習(xí)一下()方法,該方法就是逐段讀取txt文件的全部內(nèi)容,以換行符為界,然后將每個(gè)段落的字符串作為元素保存在一個(gè)列表里返回。

觀察一下txt文件里的內(nèi)容:

再比較一下常量WORD接收的()方法返回的列表的內(nèi)容,會(huì)發(fā)現(xiàn)txt里每一段(這里就是每個(gè)成語)都是列表里的一個(gè)元素字符串,而且換行符\n也作為字符串的一部分讀取了進(jìn)來。

with open() as …

問哥在示例中先給出了直接調(diào)用open()方法打開文件的語句,然后又將其注釋掉,是因?yàn)槲腋油扑]使用with open…as的語句來調(diào)用。在這條語句里open()的使用方法和實(shí)現(xiàn)的效果與直接調(diào)用相同,但是with open…as卻有個(gè)很重要的優(yōu)點(diǎn),就是它會(huì)生成一個(gè)局部作用域,接收txt文件對(duì)象的f變量變成了一個(gè)局部變量。它像語句,if語句,for語句一樣,后面跟上冒號(hào)“:”,然后代碼塊里的語句縮進(jìn)。

with open(r'C:\Coding\word.txt', 'r', encoding = 'utf-8') as f: WORD = f.readlines()

當(dāng)代碼塊結(jié)束的時(shí)候,局部變量f自動(dòng)消失,文件也自動(dòng)關(guān)閉了,省去了前面使用f.()關(guān)閉文件的步驟。這樣,我們再也不用擔(dān)心忘記寫f.()而把文件留在內(nèi)存里了。甚至有時(shí)候讀取文件出錯(cuò),程序意外中斷,with open…as也會(huì)自動(dòng)把文件關(guān)閉,省去了不少煩惱。

3. r字符串與f字符串

不知道大家有沒有在程序里注意到,我在使用open()語句的時(shí)候,文件路徑的字符串前面有個(gè)小寫的“r”,而在后面的()語句里,我在字符串的前面又有個(gè)小寫的“f”。

print(f'您本輪一共猜對(duì)了{correct}個(gè)成語,再接再厲!')

下面我們來簡單聊一下這兩種字符串的作用。

r字符串

r字符串的“r”是英文單詞raw的意思,代表了后面跟著的引號(hào)里的字符串是以原始文本輸入,不作轉(zhuǎn)義。問哥在程序里使用r字符串也是因?yàn)椋琽pen()方法里需要用字符串提供文件的路徑,但是操作系統(tǒng)的路徑符為“\”,而我們之前說過會(huì)把“\”字符轉(zhuǎn)義,所以不能正常識(shí)別。于是我在字符串的前面寫上一個(gè)r,就表示不要轉(zhuǎn)義“\”,于是程序就可以正常識(shí)別路徑字符串了。

當(dāng)然也可以識(shí)別“/”的路徑符,把“\”改成“/”就可以,或者再加一個(gè)“\”將反斜杠再轉(zhuǎn)義回來,問哥這里為了介紹r字符串就沒這樣做了。而且問哥覺得r字符串最省事,所以強(qiáng)烈推薦。

f字符串

f字符串是在.6版本才開始引入的。“f”是英文單詞的簡寫,它的出現(xiàn)幫助我們簡化了字符串拼接變量的操作。比如在程序里有這么一句:

print('很遺憾,你已經(jīng)猜錯(cuò)' + str(len(錯(cuò)詞表)) + '次,游戲結(jié)束。' + '正確的成語是“' + 電腦選詞 + '”。')

這里要打印一句話,里面有固定的字符串(引號(hào)里的內(nèi)容),也有變量(電腦選詞),還有語句(str(len(錯(cuò)詞表))),要把這三種不同形式的內(nèi)容拼接成字符串,我們有以下幾種辦法:

使用“+”將它們連接起來,就想例子里的那樣。但是這樣會(huì)顯得整個(gè)語句十分臃腫,而且還需要將非字符串的變量,比如數(shù)字,先轉(zhuǎn)換成字符串。當(dāng)變量和語句過多的時(shí)候,很容易輸錯(cuò)。很多C語言過來的同學(xué)會(huì)使用一種字符串插值的表示方法。使用%加一個(gè)英文字母占位,比如%s代表字符串,%d代表數(shù)字等等,然后在字符串的后面跟上%( ),并在括號(hào)里按順序放進(jìn)變量名。比如上面這個(gè)例子可以寫成下面這樣:

print('很遺憾,你已經(jīng)猜錯(cuò)%d次,游戲結(jié)束。正確的成語是“%s”。'%(len(錯(cuò)詞表),電腦選詞))

為字符串的對(duì)象提供了一種()方法。在字符串里變量出現(xiàn)的位置用大括號(hào){ }代替,括號(hào)里可以放入變量名,也可以放入編號(hào),也可以不填,只要后面跟上()方法,小括號(hào)里再按順序放入變量名。這種方式其實(shí)就是函數(shù)的傳參,大家多看幾遍就能明白。

print('很遺憾,你已經(jīng)猜錯(cuò){}次,游戲結(jié)束。正確的成語是“{}”。'.format(len(錯(cuò)詞表),電腦選詞))

最后一種方法就是.6版本以后為我們提供的 f 字符串,它的使用方法和()方法類似,只不過是直接把變量放入了大括號(hào){ }里,使得字符串變得更加可讀,也是問哥極力推薦的一種方法。比如本例可以寫成下面這樣:

print(f'很遺憾,你已經(jīng)猜錯(cuò){len(錯(cuò)詞表)}次,游戲結(jié)束。正確的成語是“{電腦選詞}”。')

這樣一來,其他位置的 f字符串就很容易看懂了。

4. 列表生成式

先出一道思考題,如果有一個(gè)列表a = [1, 2, 3, 4, 5],我們想把列表里的每個(gè)元素按順序拿出來計(jì)算平方,然后將平方值放在一起組成一個(gè)新列表,就像[1, 4, 9, 16, 25]。使用,我們要怎么做呢?

一般情況下,無外乎以下三步:

創(chuàng)建一個(gè)空列表b;for i in (a) 循環(huán)遍歷列表a;使用列表b的()方法將 i 的平方加到列表b里。

寫成語句就像下面這樣:

b = []for i in a: b.append(i**2)

覺得這樣可能不夠簡潔,于是給我們提供了一種根據(jù)已有列表(或()來決定列表長度)來創(chuàng)建新列表的方法,叫做列表生成式。上面三行語句使用下面一條語句就可以解決:

b = [ i**2 for i in a ]

注意看生成式里的位置,第一部分i**2是原來三行語句里的()里的內(nèi)容,第二部分for i in a就是照搬原來三行語句里的第二行,然后生成式兩邊用中括號(hào)[ ]括起來。如此便是生成式的格式了。別急,強(qiáng)大的列表生成式還支持if判斷語句,只要把它作為第三部分放在后面就可以了。

比如我想得到列表a里所有奇數(shù)的平方組成的列表,也就是[1, 9, 25],用生成式就可以這樣寫:

b = [ i**2 for i in a if i%2 == 1]

注意:生成式里不能出現(xiàn)逗號(hào)“,”和賦值等號(hào)“=”

列表生成式還可以配合()生成固定長度的列表,比如下例就生成了一個(gè)由5個(gè)字符0組成的列表:

大家多觀察,多用心體會(huì)一下列表生成式的規(guī)則,其實(shí)并不復(fù)雜。以后我們再寫列表的時(shí)候,可以先用()方法寫一遍,然后再試著把它變成生成式的寫法,用不了幾次就沒問題了。而且這種寫法確實(shí)更省事,熟練了以后,你會(huì)愛上它的(笑)。

此外,列表生成式也支持嵌套判斷,從外向內(nèi)依次并排放入判斷語句即可,比如下面這個(gè)例子,先寫外循環(huán)i,再寫內(nèi)循環(huán)j:

但是因?yàn)榍短着袛嗟纳墒绞褂玫囊脖容^少,初學(xué)者并不用太著急掌握。列表生成式甚至自己也可以嵌套,這里就不詳細(xì)展開了。我們只要掌握最實(shí)用的,其它的只要見到能認(rèn)識(shí)就夠了。

字符串的()方法

另外,如前面展示的,本例中從txt文件里直接讀出的詞庫里每個(gè)元素都帶有一個(gè)“\n”換行符,這里我們就可以使用字符串的()方法,將其左右的空格、換行符等統(tǒng)統(tǒng)刪除掉,然后得到一個(gè)新的列表,方便我們后面對(duì)這些成語做進(jìn)一步的字符串處理。

5. .()方法

我們已經(jīng)學(xué)習(xí)了模塊里不少方法,今天再加一種,()方法。

英文就是“洗牌”的意思。顧名思義,該方法將一個(gè)列表中的所有元素就地隨機(jī)打散重新排列。一定要注意“就地”兩個(gè)字,因?yàn)樵摲椒ú环祷厝魏沃担侵苯有薷脑斜怼?/p>

本例為了實(shí)現(xiàn)將成語的漢字打亂的效果,自定義了函數(shù)亂序(),其中便使用了.()方法。而為了使用該方法,首先要把原本成語的一個(gè)字符串拆成由它的字組成的列表。于是我們使用list()函數(shù)直接就可以將字符串轉(zhuǎn)變成列表。

def 亂序(原詞): # 把原有的詞序打亂,組成新的詞序 亂序 = list(原詞) random.shuffle(亂序) # 檢查亂序后的成語是否湊巧和原詞相同,如果相同則再次打亂 while ''.join(亂序) == 原詞: random.shuffle(亂序) # 返回亂序后的字組成的列表 return 亂序

當(dāng)然,由于()方法是隨機(jī)打亂列表元素,所以是有概率打亂后的列表看起來并沒有變化(尤其是只有四個(gè)元素的時(shí)候,大概1/24的機(jī)會(huì)沒有變化),于是我們需要檢查一下打亂后的列表中字的順序是否與原詞相同。而為了將列表與字符串比較,我們需要先統(tǒng)一格式。我們既可以使用list()函數(shù)將字符串變成列表,也可以將列表轉(zhuǎn)換為字符串。注意,可不是使用str()函數(shù)哦。

字符串的join()方法

本例中使用了字符串的join()方法將一個(gè)列表轉(zhuǎn)換為字符串。join()方法的小括號(hào)里放入一個(gè)全字符串元素的列表,意思就是“使用該字符串將列表中的所有字符串元素連起來”。比如:

而如果使用空字符串,比如本例,就相當(dāng)于把列表中的所有元素“無縫”連接起來了。于是,我們就可以用它來和原詞進(jìn)行比較,看看是否改變了順序。

四、進(jìn)一步擴(kuò)展:猜單詞

這樣我們就完成了一個(gè)新版本的猜成語游戲,雖然它看起來好像更簡單一些,但借著這個(gè)版本,我們又學(xué)習(xí)到不少新的方法。尤其是我們還可以將其進(jìn)一步擴(kuò)展,比如,猜單詞:

沒有用到任何新的知識(shí),只是把詞庫換成英文單詞猜的成語,然后把顯示的“成語”兩個(gè)字換成“單詞”,就可以變成一個(gè)新游戲——猜單詞。但是由于語言習(xí)慣的不同,亂序猜英文單詞,要比猜成語難得多,所以也可以增加更多試錯(cuò)的機(jī)會(huì)。

因?yàn)榇a高度雷同,問哥就不貼出來了,大家可以做一個(gè)課后練習(xí)題,動(dòng)手改改看。

我們甚至還可以再進(jìn)一步,比如為了避免同樣的字母可以組成多個(gè)單詞,也是為了降低難度,我們可以固定單詞的首尾字母不變,只是亂序中間的其他字母,如果這樣的話,程序要怎樣改呢?也請大家開動(dòng)腦筋,思考一下吧。

總結(jié)與思考

問哥拋磚引玉,希望大家能夠發(fā)掘出更多有趣的點(diǎn)子,不管是玩法上,還是形式上,比如字體排版等等,都可以把老游戲改成自己喜歡的樣子。在這個(gè)過程中,大家也能更加熟練掌握的知識(shí)。

另外,問哥想指出一點(diǎn),有時(shí)候?yàn)榱藢?shí)現(xiàn)某個(gè)功能,我們可以通過不同的代碼來實(shí)現(xiàn)。這其實(shí)沒有多少差別,尤其在我們這樣的小游戲上,差別可謂不值一提。但是在比較大的程序里,不同的代碼所實(shí)現(xiàn)功能的速度,可能就天差地別了。這里和算法與數(shù)據(jù)結(jié)構(gòu)相關(guān),并不是問哥這個(gè)《通過游戲編程學(xué)》系列的范疇。

但是,如果看到別人提供的不同實(shí)現(xiàn)方法,我們應(yīng)該持積極開放態(tài)度,因?yàn)樗赡軙?huì)為我們帶來新的啟示,甚至讓我們學(xué)到新的知識(shí)。

比如,本例中亂序成語/單詞的方法,問哥為了偷懶,使用了的函數(shù)(),但是還有另一種字符串切片的方法實(shí)現(xiàn)亂序的效果,如下:

while 原詞: 位置 = random.choice(range(len(原詞))) 亂序詞 += 原詞[位置] 原詞= 原詞[:位置] + 原詞[(位置+ 1):]print('亂序后的詞語:', 亂序詞)

這里就不展開討論了,大家感興趣的話也可以學(xué)習(xí)一下。

好了,問哥要接著準(zhǔn)備的新知識(shí)點(diǎn)——字典了,畢竟上節(jié)課說好的。今天內(nèi)容也不少,就先到這里啦,大家別忘記練習(xí)哦。下節(jié)課我們會(huì)做個(gè)實(shí)用一點(diǎn)的小程序,因?yàn)槲覀冋娴臅?huì)做一個(gè)字典(笑)。

免責(zé)聲明:本文系轉(zhuǎn)載,版權(quán)歸原作者所有;旨在傳遞信息,不代表本站的觀點(diǎn)和立場和對(duì)其真實(shí)性負(fù)責(zé)。如需轉(zhuǎn)載,請聯(lián)系原作者。如果來源標(biāo)注有誤或侵犯了您的合法權(quán)益或者其他問題不想在本站發(fā)布,來信即刪。

信息流廣告 競價(jià)托管 招生通 周易 易經(jīng) 代理招生 二手車 劇本網(wǎng) 網(wǎng)絡(luò)推廣 自學(xué)教程 招生代理 旅游攻略 非物質(zhì)文化遺產(chǎn) 河北信息網(wǎng) 石家莊人才網(wǎng) 買車咨詢 河北人才網(wǎng) 精雕圖 戲曲下載 河北生活網(wǎng) 好書推薦 工作計(jì)劃 游戲攻略 心理測試 石家莊網(wǎng)絡(luò)推廣 石家莊招聘 石家莊網(wǎng)絡(luò)營銷 培訓(xùn)網(wǎng) 好做題 游戲攻略 考研真題 代理招生 心理咨詢 游戲攻略 興趣愛好 網(wǎng)絡(luò)知識(shí) 品牌營銷 商標(biāo)交易 游戲攻略 短視頻代運(yùn)營 張家口人才網(wǎng) 秦皇島人才網(wǎng) PS修圖 寶寶起名 零基礎(chǔ)學(xué)習(xí)電腦 電商設(shè)計(jì) 職業(yè)培訓(xùn) 免費(fèi)發(fā)布信息 服裝服飾 律師咨詢 搜救犬 Chat GPT中文版 語料庫 范文網(wǎng) 工作總結(jié) 二手車估價(jià) 短視頻剪輯 情侶網(wǎng)名 愛采購代運(yùn)營 保定招聘 情感文案 吊車 古詩詞 邯鄲人才網(wǎng) 鐵皮房 衡水人才網(wǎng) 石家莊點(diǎn)痣 微信運(yùn)營 養(yǎng)花 名酒回收 石家莊代理記賬 女士發(fā)型 搜搜作文 石家莊人才網(wǎng) 銅雕 關(guān)鍵詞優(yōu)化 圍棋 chatGPT 讀后感 玄機(jī)派 企業(yè)服務(wù) 法律咨詢 chatGPT國內(nèi)版 chatGPT官網(wǎng) 勵(lì)志名言 兒童文學(xué) 河北代理記賬公司 狗狗百科 教育培訓(xùn) 游戲推薦 抖音代運(yùn)營 朋友圈文案 男士發(fā)型 培訓(xùn)招生 文玩 大可如意 保定人才網(wǎng) 滄州人才網(wǎng) 黃金回收 承德人才網(wǎng) 石家莊人才網(wǎng) 模型機(jī) 高度酒 沐盛有禮 公司注冊 十畝地 造紙術(shù) 唐山人才網(wǎng) 沐盛傳媒
主站蜘蛛池模板: 奶交性视频欧美| 水蜜桃视频在线观看免费| 国产精品国产三级在线专区| 中文日韩亚洲欧美制服| 欧美色欧美亚洲另类二区| 国产av熟女一区二区三区| 91福利在线视频| 成人午夜视频网站| 亚洲AV无码乱码在线观看代蜜桃 | 里番肉片h排行榜| 国产麻豆剧传媒精品国产AV| 中文字幕成人在线| 未发育孩交videossex| 人妻少妇精品专区性色AV | 久久精品亚洲日本波多野结衣| 男人扒开女人的腿做爽爽视频 | 日本老师和同学xxxx| 亚洲欧美高清在线| 美女视频一区二区| 国产欧美精品一区二区| 99久久综合精品国产| 成人片黄网站a毛片免费| 久久综合亚洲色hezyo国产| 欧美黄色一级在线| 另类ts人妖一区二区三区| 麻豆回家视频区一区二| 国产精品视频yy9099| tube欧美69xxxx| 无码少妇一区二区浪潮AV| 亚洲一区二区三区偷拍女厕| 澳门永久av免费网站| 又硬又大又湿又紧a视频| 香蕉精品高清在线观看视频| 国产精品无码专区在线观看| www.kkbokk.com| 成人网站在线进入爽爽爽| 久久精品国产精品亚洲毛片| 欧美激情一区二区三区四区| 先锋影音男人资源| 美国十次啦导航网| 国产亚洲欧美日韩俺去了|