本站AI自動判斷提供您所需要的app下載:點我下載安裝,你懂的APP
溯源君,一切來路皆可追。
進入臘月,鼠年走向尾聲,2021年十二生肖輪到了牛年,每到這個時候,溯源君都會疑惑,為什么貓咪進不了十二生肖?今天咱們就來嘮嘮嗑,聊聊貓與十二生肖的故事。
在民間傳說中,玉皇大帝要選十二生肖,貓擔心自己睡懶覺,叮囑老鼠叫自己早起,但是貓被老鼠欺騙了,最終耽誤了點卯的時間,不能榜上有名,從此貓和老鼠也成了一對冤家。當然這只是傳說,并非真正的原因。還有人說是因為生肖里面有了老虎,老虎和貓都是貓科,不必要重復,這也是人們的揣測。
明 孫克弘 耋耄圖
探究真相,不如換個思路,即十二生肖怎么來的?為什么只有這十二種“動物”登上了舞臺。
01
十二生肖的起源
在沒有考古發現之前,關于十二生肖最早的文獻記載是東漢王充的《論衡》,在書中完整記錄了十二生肖,與后世記載一致。
隋 佚名 十二生肖鏡
但在1975年,湖北云夢睡虎地出土的秦簡《日書》,將生肖的起源時間大大提前。提到“十二生肖”的《日書·盜者》篇很有可能來自楚人,因此,十二生肖的說法大約在戰國時就已存在。
《日出·盜者》中十二地支與禽的關系是:
子丑 寅 卯 辰 巳 午 未 申 酉 戌 亥
鼠牛 虎 兔 ? 蟲 鹿 馬 環 水 老羊 豕
說明在先秦時期,就已經出現了地支與動物之間的對應。
南宋 佚名 富貴花貍圖
而漢代以前文物中沒有貓的痕跡,我們熟悉的家貓并不是本土馴化的生物。根據資料記載,貓最早是由埃及人馴化的,早在7000多年前,貓就和古埃及人一起生活,在他們的觀念里貓是豐產和康復女神巴斯特的化身,因而非常崇敬貓,甚至連法老墓里都有貓的木乃伊。
我們對貓的理解是從東漢開始的,等它被我們祖先熟知的時候,十二生肖早都排滿了。
雖然虎、蛇等動物也沒有被馴化,甚至龍根本不存在,但是它們為先人所熟知,在遠古時期的動物崇拜和圖騰崇拜氛圍中,影響著人們的思維和文字記錄。于是在用動物指代序數符號與地支相配時,被放上了臺面。
清 高其佩 指畫系列-指畫·龍
此外,還可以從語言學的角度來分析。
生肖的產生與地支、紀年密切相關,現在的十二生肖代替十二支,也是語音、字形的影響。
比如“子鼠”,“鼠”在秦簡中多與“予”相通,兩字讀音也相同,而“予”與“子”字形相似,數術家可能因此有所附會。而“丑?!?,在《說文解字》中“丑,紐也?!薄芭!迸c“紐”古音相近。“寅虎”中的“寅”字,其金文寫法象虎形,且“寅”也有虎紋的含義……
來楚生刻十二生肖印
這也不失為一種解讀,而貓字與十二地支的音形并無多大關系。
其實十二生肖并非中國獨有,在其他國家也有自己的生肖。
可以看到,在埃及、越南、巴比倫等國家的生肖記錄中,貓也有自己的一席之地。
02
不評生肖,受寵就夠了
雖然貓沒有進中國的十二生肖,但是從古到今俘獲了很多人的芳心。
在唐宋時期,可能是因為家貓的傳入,貓的身份開始接近寵物。唐詩關于貓記載較少,比較出名的是元稹和寒山的詩歌。
但在宋以后,貓大大受寵,我們熟悉的文人幾乎都寫過與貓相關的文字,尤其是大詩人陸游,作為南宋擼貓人,寫下許多詩歌。如《贈貓》中用鹽換貓(宋代人養貓非常講究,得到貓之前會下聘禮,關于聘禮北方流行魚干,南方則為鹽。),得到貓后給它起個名字,在《贈貓》中喚作“小老虎”,類似的名字還有“雪兒、粉鼻”等,《十一月四日風雨大作》其一更是其暖心佳作:
風卷江湖雨暗村,四山聲作海濤翻。
溪柴火軟蠻氈暖,我與貍奴不出門。
——《十一月四日風雨大作》其一
南宋 梁楷 貍奴閑趣圖卷。宋代畫貓圖中經常出現貓與蝴蝶同在的現象,因為古人取“貓”為“?!?,“蝶”為“耋”,“貓蝶”即為“耋耄”之意,取其長壽含義。
屋外狂風大作,風雨交加,家里面卻有溫暖的柴火和軟軟的墊子,我要和我的貓貓膩歪在一起?!妒辉滤娜诊L雨大作》共有兩首,相對于這首詩,我們對它的第二首可能更加熟悉,“夜闌臥聽風吹雨,鐵馬冰河入夢來?!辈恢涝诠录虐嘀?,我們的陸游床邊是否還有小貓相伴,緩解憂思呢?
此外,根據文獻記載,在宋代,集市上就有專門的寵物店,來賣貓食、貓窩?!段淞峙f事·小經紀》就羅列了當時杭州與貓相關的各種小商品,如“貓窩、貓魚、賣貓兒、改貓犬”?!案呢埲币辉~還涉及到給貓“做美容”。
到了明朝,皇帝們也很喜歡貓。
明宣帝朱瞻基就親自為貓畫了一幅畫——《花下貍奴圖》,在這幅畫中,兩只灰白相間的小貓(虎斑貓),散發著宮貓特有的慵散與高貴,相對而屈,雙眼明亮有色澤,極其生動。
明 朱瞻基 花下貍奴圖
明 朱瞻基(傳) 唐苑嬉春圖
嘉靖皇帝也是擼貓好手,還在宮廷中設立養貓機構——《貓兒房》:
貓兒房,近侍三四人,專飼御前有名分之貓。凡圣心所鐘愛者,亦加升管事職銜?!?/p>
——《酌中志·內府衙門職掌》
在《貓兒房》還專門分配太監加以管理,如果養的貓被嘉靖帝看中,就能升官連連。
萬歷時期,貓不僅會得到很好的照顧,甚至開始有了職位。其中,皇帝或者后妃養的貓,公貓叫“什么小廝”,母貓叫“什么丫頭”,有的貓甚至被稱為管事。
南宋 毛益(傳) 蜀葵游貓圖
到現代,也有無數人加入了吸貓大營,甘當鏟屎官。
真是流水的貓奴,鐵打的貓?。?/p>
回到最開始的問題,十二生肖有沒有貓都不重要,受寵就夠了。更何況怎么沒見有人問為什么十二生肖沒有豹子、孔雀、鴨呢?
參考文獻:
[1]謝成俠.中國養貓史略;
[2]劉信芳.生肖的起源及文化屬性;
[3] 曲彥斌.生肖文化考(上)、(下);
[4] 王貴元.十二生肖來源新考;
[5] 網易浪潮工作室.十二生肖為什么沒有貓。
光明日報“文化溯源”融媒體工作室
來源: 中華文化溯源
本文將以4399小游戲《寵物連連看經典版2》作為測試案例,通過識別小圖標,模擬鼠標點擊,快速完成配對完成游戲腳本。
瀏覽器打開游戲窗口(單個一個窗口),游戲主要界面截圖需要兩個坐標(左上角坐標和右下角坐標)來確定,原點一般是屏幕左上角,不確定坐標點值的同學,可以全屏截圖,用編輯圖片軟件查看坐標值。
獲取窗口句柄,這里就是瀏覽器標題欄的標題了(右鍵-查看源代碼-title,加上軟件名)比如:“寵物連連看經典2,寵物連連看經典版2小游戲,4399小游戲 www.4399.com - Google Chrome“。獲取窗口句柄就可以開始了。
總體開發思路:截取游戲主圖 ---> 分割成小圖 ---> 對比每個小圖,對比圖片相識度,編號存入矩陣 ---> 對矩陣進行可連計算 ---> 模擬點擊。
獲取窗口句柄,把窗口置頂
python可以使用win32gui模塊調用Windows API實現對窗口的操作,使用FindWindow()方法可以獲取窗口的句柄(handle),需要傳入兩個參數,第一個為父窗口句柄(這里填0即可),第二個參數是窗口的名稱(標簽title - Google Chrome)。獲取句柄之后然后通過SetForegroundWindows() 設置窗口在前面,這里傳入游戲窗口的舉報即可,代碼如下:
截取游戲界面,分割圖標,圖片比較
這里需要花費一些時間來校驗程序,如果截取的圖片不好,則會影響后續操作,所以比較主要的是確認游戲左上角和右下角這兩個坐標值,以及每個小圖標的寬高。如下圖所示,先截取整個游戲界面圖,然后分割小圖標,接著對每個圖標進行比較,然后以編號代替圖標存入矩陣(這里的編號矩陣和游戲圖不一致,原理一樣)。
根據初始化設定的左上角和右下角兩個坐標,使用ImageGrab.grab()方法進行截圖,傳入一個元組即可,然后對這個大圖進行分割,切割成一個個小圖標存入到images_list數組中?!?/p>
通過上面代碼切割的小圖標,轉成數字矩陣,如果圖標已經存入image_type_list則返回這個索引,如果不存在,則在追加進去,然后當前長度就是這個新加入圖標的編號,代碼如下所示:
上面的getIndex就是對比圖片,判斷圖標是否出現過(是否已存在image_type_list中,沒出現則追加進去),這里使用漢明距離判斷兩個圖片的相識度,設置閥值10,當小于閥值則認為是同一個圖片,具體代碼如下:
程序核心-圖標連接算法(路徑尋找)
這里僅對算法代碼進行簡單分析,如果對程序不好理解,可以留言,后續可以圖文分析。
通過上面的開發流程,基本獲取如下這樣的矩陣,只要比較兩個編號相同的值進行可連路徑尋找,如果找到即進行模擬點擊操作。這里簡單介紹下游戲規則:8行乘12列游戲圖標區域,外圍的0其實表示尋找路徑的時候可以通過,例如坐標(1, 1)可以與(1,10)進行連接、(7, 1)和(7,2)進行連接。
法的思路:路徑的尋找首先是尋找一個坐標的橫向豎向可以直接相連的坐標集合,比如坐標p1(1,1)這樣的集合有[ (0,1), (1,0) ],另外一個坐標p2(1,10)的可連集合為[ (0,10) ],然后再對p1和p2的可連坐標集合進行比較,如果集合中坐標也有可連,則表示p1和p2可連,很明顯,(0,1)和(0,10)為同一行且可連,這樣就表示p1和p2兩點存在可連路徑了,代碼如下所示:
簡單分析下代碼實現過程:在isReachable()傳入兩個需要比較的坐標值,然后分別獲取兩個點橫豎向(isRowConnect()、isColConnect())可以連接的坐標集合,最后再對集合進行遍歷比較是否存在可連的,如果存在則表示傳入的兩個坐標是可以連接的。
學習這樣一個游戲輔助腳本,對于個人培養編程興趣也是有很多幫助的,在工作之余不失為一個好的消遣方式,以后會多向這些方向研究學習。
以上就是python怎么制作游戲腳本的詳細內容,更多請關注其它相關文章!