Python戀愛小助手之必拿下
導語
害!現在是10月份瞭,國慶過完也降溫瞭——還有幾個月就過年瞭,哦吼~
這一年就快過去瞭,不知道小編帶給大傢這麼多的表白代碼都用瞭沒?用瞭沒吖?如果沒用的話小編會繼續助攻!
不知道各位單身人士,有沒有人從單身dog進化為秀恩愛dog撒~
Ps——小故事
在我大四的時候,就有一個計算機的朋友用自己做的代碼感動瞭一個數學系的女生。
就是下面這種。(這個愛心是詞雲圖制作而成的!)也不知道為什麼妹子放棄瞭全班40多位帥哥(沒錯,他們班就她一
個女生),而選擇瞭頭發日漸稀疏已經“六月懷胎”的我——朋友。
今天,我就來教大傢一下,如何用Python做二份特別的禮物送給自己的戀人。
當然瞭,如果還是單身的,也可以把這個作為表白神器,跟心愛的人表白。
懂編程的就看下面的吧!送上這份禮物之後,保證你明晚…..巫山雲雨後,天氣晚來秋啊!嘿嘿嘿嘿~
正文
你是不是喜歡我?好巧,我也是吖~
一、Part 1 表白篇—界面化表白小程序
1)環境安裝
本文是基於Tkinter的界面化小程序,準備好相應的安裝環境素材如下:
Python3、Pycharm、Pygame模塊以及一些自帶的就不說啦!
統一安裝模塊命令:pip install -i https://pypi.douban.com/simple/ +模塊名
2)素材自備
這邊小編準備的部分圖片如下:
一些背景音樂、字體當然也要準備好滴哈:
3)正式敲代碼
3.1 先介紹下代碼部分單詞的作用
Function: 按鈕類 Initial Args: --x, y: 按鈕左上角坐標 --width, height: 按鈕寬高 --text: 按鈕顯示的文字 --fontpath: 字體路徑 --fontsize: 字體大小 --fontcolor: 字體顏色 --bgcolors: 按鈕背景顏色 --is_want_to_be_selected: 按鈕是否想被玩傢選中 --screensize: 軟件屏幕大小 '''
3.2 配置一些界面窗口的小設置
# 窗口大小(width, height) SCREENSIZE = (500, 260) # 定義一些顏色 RED = (255, 0, 0) BLACK = (0, 0, 0) AZURE = (240, 255, 255) WHITE = (255, 255, 255) MISTYROSE = (255, 228, 225) PALETURQUOISE = (175, 238, 238) PAPAYAWHIP = (255, 239, 213) LIGHTGRAY = (211, 211, 211) GAINSBORO = (230, 230, 230) WHITESMOKE = (245, 245, 245) DARKGRAY = (169, 169, 169) BLUE = (0, 0, 255) DEEPSKYBLUE = (0, 191, 255) SKYBLUE = (135, 206, 235) LIGHTSKYBLUE = (135, 206, 250) # 背景音樂路徑 BGM_PATH = os.path.join(os.getcwd(), 'resources/music/bgm.mp3') # 字體路徑 FONT_PATH = os.path.join(os.getcwd(), 'resources/font/STXINGKA.TTF') # 背景圖片路徑 BG_IMAGE_PATH = os.path.join(os.getcwd(), 'resources/images/01.jpg') # ICON路徑 ICON_IMAGE_PATH = os.path.join(os.getcwd(), 'resources/images/icon.png')
3.3 主函數
def main(): # 初始化 pygame.init() screen = pygame.display.set_mode(cfg.SCREENSIZE, 0, 32) pygame.display.set_icon(pygame.image.load(cfg.ICON_IMAGE_PATH)) pygame.display.set_caption('你知道嘛?') # 背景音樂 pygame.mixer.music.load(cfg.BGM_PATH) pygame.mixer.music.play(-1, 30.0) # biu愛心那個背景圖片 bg_image = pygame.image.load(cfg.BG_IMAGE_PATH) bg_image = pygame.transform.smoothscale(bg_image, (150, 150)) # 實例化兩個按鈕 button_yes = Button(x=20, y=cfg.SCREENSIZE[1]-70, width=120, height=35, text='願意', fontpath=cfg.FONT_PATH, fontsize=15, fontcolor=cfg.BLACK, edgecolor=cfg.SKYBLUE, edgesize=2, bgcolors=[cfg.DARKGRAY, cfg.GAINSBORO], is_want_to_be_selected=True, screensize=cfg.SCREENSIZE) button_no = Button(x=cfg.SCREENSIZE[0]-140, y=cfg.SCREENSIZE[1]-70, width=120, height=35, text='不願意', fontpath=cfg.FONT_PATH, fontsize=15, fontcolor=cfg.BLACK, edgecolor=cfg.DARKGRAY, edgesize=1, bgcolors=[cfg.DARKGRAY, cfg.GAINSBORO], is_want_to_be_selected=False, screensize=cfg.SCREENSIZE) # 是否點擊瞭好呀按鈕 is_agree = False # 主循環 clock = pygame.time.Clock() while True: # --背景圖片 screen.fill(cfg.WHITE) screen.blit(bg_image, (cfg.SCREENSIZE[0]-bg_image.get_height(), 0)) # --鼠標事件捕獲 for event in pygame.event.get(): if event.type == pygame.QUIT: # ----沒有點擊好呀按鈕之前不許退出程序 if is_agree: pygame.quit() sys.exit() elif event.type == pygame.MOUSEBUTTONDOWN and event.button: if button_yes.rect.collidepoint(pygame.mouse.get_pos()): button_yes.is_selected = True root = Tk() root.withdraw() messagebox.showinfo('', '永遠愛你') root.destroy() is_agree = True # --顯示文字 showText(screen=screen, text='自從我們相遇的那一刻,', position=(40, 50), fontpath=cfg.FONT_PATH, fontsize=25, fontcolor=cfg.BLACK, is_bold=False) showText(screen=screen, text='你是我白天黑夜不落的星!', position=(40, 100), fontpath=cfg.FONT_PATH, fontsize=25, fontcolor=cfg.BLACK, is_bold=True) # --顯示按鈕 button_yes.draw(screen, pygame.mouse.get_pos()) button_no.draw(screen, pygame.mouse.get_pos()) # --刷新 pygame.display.update() clock.tick(60)
4)效果圖
運行代碼之後——背景音樂一上來就有那個味兒瞭~嘿嘿 超浪漫,界面也很好看的吖——想要什麼字體、界面可以自己設置修改優化的!
4.1 自從我們相遇的那一刻,你是我白天黑夜不落的星。 ——萊蒙托夫《烏黑的眼睛》
4.2 我會不愛你嗎?不愛你?不會,愛你就像愛生命。——王小波
4.3 情侶超甜——甜度爆表啊!哈哈哈啊
二、Part 2 表白篇—字符畫表白小程序
1)環境安裝
相應的安裝環境素材如下:
Python3、Pycharm、Pillow模塊以及一些自帶的就不說啦!
統一安裝模塊命令:pip install -i https://pypi.douban.com/simple/ +模塊名
2)素材自備
這邊小編準備的部分圖片如下:
3) 正式敲代碼
3.1主要代碼
#-*- coding=utf-8 -*- from PIL import Image IMG = '02.jpg' #設置圖片文件 WIDTH = 150 #設置字符畫的寬 HEIGHT = 80 #設置字符畫的高 OUTPUT = 'ym.txt' #設置存放字符畫的文本文件 ascii_char = list("我喜歡你") #設置顯示的字符集 #將256灰度映射到70個字符上 def get_char(r,g,b,alpha = 256): #alpha為透明度 # 判斷 alpha 值,為0表示全透明 if alpha == 0: return ' ' # 獲取字符集的長度,這裡為 70 length = len(ascii_char) # 將 RGB 值轉為灰度值 gray,灰度值范圍為 0-255 gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b) # 灰度值范圍為 0-255,而字符集隻有 70 # 需要進行如下處理才能將灰度值映射到指定的字符上 #防止當灰度值為255時,輸出的第70個字符超出列表索引,所以需要將(255+1) unit = (255.0 + 1)/length # 返回灰度值對應的字符 return ascii_char[int(gray/unit)] if __name__ == '__main__': # 打開並調整圖片的寬和高 im = Image.open(IMG) im = im.resize((WIDTH,HEIGHT), Image.NEAREST) # 初始化輸出的字符串 txt = "" # 遍歷圖片中的每一行 for i in range(HEIGHT): # 遍歷該行中的每一列 for j in range(WIDTH): # 將 (j,i) 坐標的 RGB 像素轉為字符後添加到 txt 字符串 txt += get_char(*im.getpixel((j,i))) # 遍歷完一行後需要增加換行符 txt += '\n' # 輸出到屏幕 print(txt) with open(OUTPUT,'w') as f: f.write(txt)
4)效果圖
4.1 圖跟文字選的不好,所以效果有點兒社會性死亡瞭!哈哈哈~尷尬的笑笑緩解一下,不要是去表白的結果變成分手瞭哈!
4.2 這張圖選擇我估計看不出來是個人瞭!所以說——選擇圖片跟文字是有技巧的,隻是我比較懶!
總結
“餘生很長,想和你沒完沒瞭”——所以看到這裡的小夥伴兒記得收藏哦!哈哈哈
好啦 !這二款表白的代碼就寫到這裡瞭哈,是不是今天又學到瞭一招會撩妹紙撩漢子的小技巧。趕快自己去試試吧~
你們的支持是我最大的動力!!mua 歡迎大傢閱讀往期的文章哦~
到此這篇關於Python戀愛小助手之必拿下的文章就介紹到這瞭,更多相關Python 戀愛小程序內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!