哈喽大家好呀,这里是滑稽研究所。本期给大家带来的是弹窗表白神器。大家可能在各大视频网站上都看到过,对就是那个死皮赖脸,你不答应我怎么都关不掉的玩意。没错,本次就教大家制作同款表白神器。我研究了一下之前某音比较火的弹窗表白神器。我们这次用pygame来实现。
  先给大家看一下预览效果,这里是gif截图所以看起来比较模糊。(超可爱有没有!)


  首先,如果女孩子如果不按照我们设计好的流程走,表白神器弹窗右上角的X号就关不掉、当我们询问对方是否喜欢我们时,无法点击‘不喜欢’ 选项,或者点击没有反应,来使你‘心甘情愿’的选择喜欢选项。那么以上两个主要功能如何实现?

  1.我们在没有达到目的之前不设置窗口的关闭功能。即右上角的X号是存在的,但它就是个摆设因为我们没有赋予他实际的功能。
  2.无法选择不喜欢选项有两种方法,一种是设置一个空按钮,不设置任何关联功能,说白了就是让你看着玩的,没有任何交互功能,第二种方法更调皮一些,就是当你的鼠标靠近时,选项直接‘逃跑’了。也就是从当前位置消失,跑到另一个位置。我们往期文章讲述过关于pygame捕捉鼠标位置的方法,因此我们选择第二种方法,节目效果也更佳。
  3.我们希望有浪漫的背景音乐。

  那么设计思路清晰,上代码!
  源代码:

#表白神器,滑稽研究所出品。
import sys
import random
import pygame
from pygame.locals import *WIDTH, HEIGHT = 640, 480
BACKGROUND = (255, 255, 255)# 按钮
def button(text, x, y, w, h, color, screen):pygame.draw.rect(screen, color, (x, y, w, h))font = pygame.font.Font('SIMYOU.ttf', 20)textRender = font.render(text, True, (0, 0, 0))textRect = textRender.get_rect()textRect.center = ((x+w/2), (y+h/2))        screen.blit(textRender, textRect)# 窗口内文字
def title(text, screen, scale, color=(255, 0, 0)):font = pygame.font.Font('SIMYOU.ttf', WIDTH//(len(text)*2))textRender = font.render(text, True, color)textRect = textRender.get_rect()textRect.midtop = (WIDTH/scale[0], HEIGHT/scale[1])screen.blit(textRender, textRect)# 生成随机坐标
def get_random_pos():x, y = random.randint(20, 620), random.randint(20, 460)return x, y# 点击喜欢按钮后显示的页面
def show_like_interface(text, screen, color=(255, 0, 0)):screen.fill(BACKGROUND)pygame.mouse.set_visible(True)font = pygame.font.Font('SIMYOU.ttf', WIDTH//(len(text)))textRender = font.render(text, True, color)textRect = textRender.get_rect()textRect.midtop = (WIDTH/2, HEIGHT/2)screen.blit(textRender, textRect)pygame.display.update()while True:for event in pygame.event.get():if event.type == QUIT:pygame.quit()sys.exit()# 主函数
def main():pygame.init()screen = pygame.display.set_mode((WIDTH, HEIGHT))pygame.display.set_caption('FROM一个喜欢你很久的小哥哥')clock = pygame.time.Clock()unlike_pos_x = 330unlike_pos_y = 250unlike_pos_width = 100unlike_pos_height = 50unlike_color = (0, 191, 255)like_pos_x = 180like_pos_y = 250like_pos_width = 100like_pos_height = 50like_color = (0, 191, 255)p_4 = pygame.image.load('play_4.png').convert_alpha ()p_4 = pygame.transform.scale(p_4, (100,100))#pygame.mixer.init()wavFileName = 'bad_guy.mp3'sndTrack = pygame.mixer.music.load(wavFileName)pygame.mixer.music.set_volume(0.8)pygame.mixer.music.play(-1)mrunning = Truewhile mrunning:screen.fill(BACKGROUND)img = pygame.image.load( 'bixin.jfif')img = pygame.transform.scale(img, (300,170))imgRect = img.get_rect()imgRect.midtop = int(WIDTH/1.3), HEIGHT//7screen.blit(img, imgRect)for event in pygame.event.get():if event.type == pygame.MOUSEBUTTONDOWN:mouse_pos = pygame.mouse.get_pos()if mouse_pos[0] < like_pos_x+like_pos_width+5 and mouse_pos[0] > like_pos_x-5 and\mouse_pos[1] < like_pos_y+like_pos_height+5 and mouse_pos[1] > like_pos_y-5:mrunning = Falseh,v = mouse_pos = pygame.mouse.get_pos()if mouse_pos[0] < unlike_pos_x+unlike_pos_width+5 and mouse_pos[0] > unlike_pos_x-5 and\mouse_pos[1] < unlike_pos_y+unlike_pos_height+5 and mouse_pos[1] > unlike_pos_y-5:while True:unlike_pos_x, unlike_pos_y = get_random_pos()if mouse_pos[0] < unlike_pos_x+unlike_pos_width+5 and mouse_pos[0] > unlike_pos_x-5 and\mouse_pos[1] < unlike_pos_y+unlike_pos_height+5 and mouse_pos[1] > unlike_pos_y-5:continuebreakpygame.mouse.set_visible(False)h -= p_4.get_width() / 2v -= p_4.get_height() / 2#用其他图形代替鼠标screen.blit(p_4, (h, v))title('小姐姐,我喜欢你很久了', screen, scale=[3, 8])title('做我女朋友好不好呀', screen, scale=[3, 4])button('好呀', like_pos_x, like_pos_y, like_pos_width, like_pos_height, like_color, screen)button('算了吧', unlike_pos_x, unlike_pos_y, unlike_pos_width, unlike_pos_height, unlike_color, screen)pygame.display.flip()pygame.display.update()clock.tick(60)show_like_interface('单身狗进化~恋爱狗!!!', screen, color=(255, 0, 0))
main()

  那么聪明的你肯定发现了,当鼠标在窗口内时会变成一颗红色的小心心。这个功能对我们的图片素材有要求,需要透明背景。不然就会有难看的背景色边框。你可以直接百度透明背景的图片素材,也可以使用PS抓取素材主体然后删去background图层。相比之下还是直接在网上找免抠素材方便一点。

  最后大家注意字体的问题,一定要把字体文件添加到我们代码运行的目录下,不然会报错说找不到字体文件哦。
  效果图:因为是GIF图片,所以没有办法听到背景音乐,实际使用搭配浪漫的背景音乐效果更佳呦。GIF素材上传会变模糊,电脑上运行时画质是很好的。
  学会了吗?快拿去逗小姐姐开心吧~

  需要图片素材的可以在后台私信我,等你来呦。
  转载自:滑稽研究所
  相关文章,请关注我们吧!

女神说我直男?Python制作表白神器!相关推荐

  1. python制作表白神器_程序员的七夕用30行代码让Python化身表白神器

    转眼又到了咱们中国传统的情人节七夕了,今天笔者就带大家来领略一下用Python表白的方式.让程序员的恋人们感受一下IT人的浪漫. 一.词云制作 首先咱们可以用之前介绍过的wordcould包制作词云. ...

  2. python制作表白神器_用Python个女神做一个表白神器

    用Python给女神表白 情人节刚刚过去,但男同胞们对女神的暗恋愈加热烈,想尽一切办法表白,今天,咱们就用Python制作一个表白神器. 程序介绍 运用pygame制作一个小游戏,当女神用鼠标点击&q ...

  3. python制作表白神器_关于python:用-Python-写个七夕表白神器

    明天是七夕节,相比于现代人借鉴的 502,不对是 520,七夕才是中国传统意义上的情人节,本文分享几个 Python 表白程序,情侣能够现学现用,独身的话也能够先珍藏一下,说不定下次就用上了. 爱心树 ...

  4. 圣诞节这么浪漫的日子,教你用Python制作表白神器—照片墙,操作起来哦

    哈喽.大家好,我是恰恰~今天教大家用Python来制作一个表白神器-照片墙,属于我们程序员的小浪漫,虽然来的晚,但是收藏学会了,以后都用的到哦~ 看一下效果图: 要什么样的,图案都可以自定义的 在这里 ...

  5. python制作表白神器_用Python做一个520表白神器,值得收藏

    本文最后给出了打包好的软件,无需安装Python环境和各种依赖,直接下载软件,解压后,双击exe文件即可使用. 先来看一下具体的效果. 运行程序. 点击「选择图片」 选择JPG/JPGE/PNG三种中 ...

  6. python制作表白神器_python3实现表白神器

    本文实例为大家分享了使用python3制作的表白神器,供大家参考,具体内容如下 使用python3制作的小玩意,哪里需要改造的,望各位评论一下! #coding=utf-8 #第一个小项目/love ...

  7. python制作表白神器_用Python做一个情人节表白神器

    思路来自于「Python 编程时光」,我在其之上改进了一下,主要是通过tkinter编写一个界面方便使用,大家可以关注「Python 编程时光」这一良心公众号. 本文最后给出了打包好的软件,无需安装P ...

  8. ❤️七夕佳节,用Python制作表白神器,程序员也应该拥有爱情!【附源码,建议收藏】❤️

    程序员表白 开发工具 Python版本: 3.6.4 相关模块: requests模块: argparse模块: pyquery模块: jieba模块: pyecharts模块: wordcloud模 ...

  9. python制作表白神器_python制作exe可执行表白神器-Go语言中文社区

    1.效果图 2.程序源码 import turtle import time #writing txt turtle.hideturtle() turtle.penup() turtle.goto(1 ...

最新文章

  1. 2014东师计算机应用基础离线作业,2014秋东师 计算机应用基础 离线作业及答案...
  2. Javascript 装饰器极速指南
  3. Codeforces Round #133 (Div. 2) C. Hiring Staff 想法题目
  4. vmware centos7 扩展容量
  5. mac电脑php中安装swoole扩展件
  6. Spring Boot 中使⽤ Cache 缓存的使⽤
  7. 数据库SQL Server循环游标读取例子
  8. 掘金后端 mysql优化_vue服务端渲染项目(ssr)仿掘金、后台页面是react spa、服务层nodejs、koa、mysql编写的一套多权限内容管理系统...
  9. 广商14级软件工程分数:第一回合
  10. Xcode学习C++(一项目的建立)
  11. JS与Jquery学习笔记(二)
  12. stm32串口c语言程序,STM32串口通信-代码实现
  13. AdminLTE的介绍与使用(详细流程)-----前端框架
  14. python掷骰子小游戏编程入门_MicroPython实战:开发一款掷骰子小游戏
  15. 怎么用爬虫筛选简历_筛选数据分析师简历全流程
  16. 智能创新引导工具软件——工作量分配和里程碑安排
  17. 金融行业认同的七本书
  18. Java实现 LeetCode 321 拼接最大数
  19. 【互联网及其应用】第7章计算机网络安全及管理技术
  20. 前端css——css三大布局模型

热门文章

  1. 2023工业4.0晴雨表显示,德国、奥地利和瑞士在生产数字化方面与中国、英国和美国差距越来越大 | 美通社头条...
  2. matlab里pascal是什么意思_股票里什么叫爆仓:股票中的爆仓什么意思啊 | 磐石财经(磐石量化)...
  3. Codeforces 1634 B. Fortune Telling —— 简单思维,奇偶性
  4. 文件的切分split和结合工具cat介绍
  5. 关于我的第一篇公号付费文章谈谈自己的想法
  6. 【React学习】React更新渲染原理
  7. 人本主义流派,罗杰斯人本主义理论,马斯洛的人本主义人格理论
  8. android eclipse 错误提示,Android Eclipse无法启动.发生了错误.看日志文...
  9. 儿童学python的平台-干货:孩子免费学习编程的十大网站&App
  10. 用Matlab和SPM批量处理被试的经验总结