python实现跨年表白神器--你值得拥有


Posted in Python onJanuary 04, 2021

hello,大家好,我是Dream。马上就跨年了,为了广大的单身男性成员,我就慈悲一下,把我的存货?表白神器拿出来了,百试百灵(虽然我一次也没试过),今天分享给大家,别忘了给我点赞哟~
话不多说,先看效果图:

python实现跨年表白神器--你值得拥有

从图上看,很明显这是一个选择题,但代码的神奇之处就在这里,当她把鼠标拖到‘不行'的地方时,奇迹发生了,当当当~

python实现跨年表白神器--你值得拥有
python实现跨年表白神器--你值得拥有
python实现跨年表白神器--你值得拥有

屏幕上会轮番展示出你的优点,这是我的优点(我只是实话实说的哟)
最最最重要的是她关不掉窗口,重要的事说三遍:关不掉 关不掉 关不掉 就是关不掉!!!气死她哈哈哈。。。(你好贱,我好爱)
她只能选择好的,然后…(你懂得嘿嘿嘿)

python实现跨年表白神器--你值得拥有

说了折磨多,你们是不是非常期待我的代码呀,看代码之前,别忘了先点个关注哟~
接下来,代码展示:

# sys是python的标准库
# 提供了python运行时环境变量的操控
# sys.exit()用于结束游戏退出
import sys
import pygame
import random

# 游戏的高宽
WIDTH, HEIGHT = 640, 360
# 把颜色值(230, 230, 230)赋值给 bg_color 变量
# 三个整数依次是三原色中红色、绿色和蓝色的浓度值。浓度值是一个整数,最大为255,最小为0。
bg_color = (255, 255, 255)
button_text_list = ['徐以鹏比易烊千玺帅亿点', '徐以鹏脾气好', '徐以鹏会洗衣服', '徐以鹏体贴']


# 点击喜欢按钮后显示的页面
def show_like_interface(text, screen, color=(255, 0, 0)):
  screen.fill(bg_color)
  font = pygame.font.Font('./font/simkai.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 == pygame.QUIT:
        pygame.quit()
        sys.exit()


# 按钮
def button(text, x, y, w, h, color, screen):
  pygame.draw.rect(screen, color, (x, y, w, h))
  font = pygame.font.Font('./font/simkai.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=(0, 0, 0)):
  # pygame.font.Font("字体","字号",*)
  font = pygame.font.Font('./font/simkai.ttf', WIDTH // (len(text) * 2))
  # 使用已有的文本创建一个位图image,返回值为一个image;对于位图可用get_height(),get_width()的方法获得高与宽;True表示是否抗锯齿,第三个为字体颜色,还可以有第四个为背景色,没有时就为默认的透明;
  textRender = font.render(text, True, color)
  # Rect对象有一些重要的属性,如:top,botton,letf、right表示上下左右
  # width,height表示宽高  我有这些值之后,对于我们编写程序十分方便
  textRect = textRender.get_rect()
  # 中央x坐标整数值 顶部y坐标的整数值
  textRect.midtop = (WIDTH / scale[0], HEIGHT / scale[1])
  # 将位图绘制到屏幕上,screen为建立的主屏;
  screen.blit(textRender, textRect)

  # 生成随机的位置坐标


def get_random_pos():
  x, y = random.randint(20, WIDTH - 20), random.randint(20, HEIGHT - 20)
  return x, y


def main():
  text = "不行"
  # 在我们要动手用它完成我们的想法之前,电脑这个强迫症需要我们检查一遍,这个工具包是否完整,能否正常给我们提供帮助。而这个检查的动作, pygame.init()  检查,电脑上一些需要的硬件调用接口、基础功能是否有问题。如果有,他会在程序运行之前就反馈给你,方便你进行排查和规避。

  # 对pygame内部各种功能进行初始化创建及变量设置,比如pygmae里面的窗体,键盘的使用的事件队列,等等都需要我们pygame.init()初始化
  pygame.init()
  # 调用 display 模块的 set_mode 函数,作用是初始化屏幕对象(也即窗口对象)。此处传入一个参数,即(640, 360)元组,这使得窗口的分辨率是640*360
  screen = pygame.display.set_mode((WIDTH, HEIGHT))
  # 窗口标题
  pygame.display.set_caption("小徐的表白")
  # 不喜欢按钮的初始位置和大小
  unlike_pos_x = 330
  unlike_pos_y = 250
  unlike_pos_width = 100
  unlike_pos_height = 50

  # 喜欢按钮的初始位置和大小
  like_pos_x = 180
  like_pos_y = 250
  like_pos_width = 100
  like_pos_height = 50
  # 标识位,作为小姐姐之后点击了同意后退出的标准
  running = True
  # 按钮颜色
  like_color = (216, 191, 216)
  while running:

    # 填充屏幕背景色
    # 显示窗口背景填充bg_color眼神
    screen.fill(bg_color)
    # 加载图片,从文件加载新图片
    img = pygame.image.load("./imgs/3.jpg")
    # Surface对象与图像时一一对应关系
    # 简单理解在pygame里导入的任何图片都是Surface对象
    # pygame使用内部定义的Surface对象表示所有载入的图像,其中get_rect()反法返回一个覆盖图像的矩形Rect对象
    # Rect对象有一些重要的属性,如:top,botton,letf、right表示上下左右
    # width,height表示宽高  我有这些值之后,对于我们编写程序十分方便
    imgRect = img.get_rect()
    # 图片位置
    # 中央x坐标整数值 顶部y坐标的整数值
    imgRect.midtop = 80, 10
    # 将一个图像绘制在一个图像上,及将img绘制在imgRect位置上。通过Rect对象上引导对图片的绘制
    screen.blit(img, imgRect)
    # 监听事件
    # pygame.event.get() 的作用是获取事件列表。事件列表内包含0个或多个事件对象 (点击 鼠标移动 关闭窗口)
    # 依次赋值给 event 变量
    for event in pygame.event.get():
      # 检测到鼠标
      if event.type == pygame.MOUSEBUTTONDOWN:
        # 获取鼠标位置
        mouse_pos = pygame.mouse.get_pos()
        # 若点击了喜欢按钮,停止 while 循环
        if mouse_pos[0] < like_pos_x + like_pos_width and mouse_pos[0] > like_pos_x and mouse_pos[
          1] < like_pos_y + like_pos_height and mouse_pos[1] > like_pos_y:
          like_color = bg_color
        running = False
      # 获取鼠标位置
      # 若鼠标位置位于按钮区域内
      # 则随机生成按钮位置进行显示
    mouse_pos = pygame.mouse.get_pos()
    if mouse_pos[0] < unlike_pos_x + unlike_pos_width and mouse_pos[0] > unlike_pos_x and \
        mouse_pos[1] < unlike_pos_y + unlike_pos_height and mouse_pos[1] > unlike_pos_y:
      while True:
        unlike_pos_x, unlike_pos_y = get_random_pos()
        text = button_text_list[random.randint(0, len(button_text_list) - 1)]
        if mouse_pos[0] < unlike_pos_x + unlike_pos_width and mouse_pos[0] > unlike_pos_x and \
            mouse_pos[1] < unlike_pos_y + unlike_pos_height and mouse_pos[1] > unlike_pos_y:
          continue
        break
    title('宝贝,我观察你很久了', screen, scale=[1.8, 10])
    title('做我女朋友好不好呀', screen, scale=[1.8, 3])
    button('好的', like_pos_x, like_pos_y, like_pos_width,
        like_pos_height, like_color, screen)
    button(text, unlike_pos_x, unlike_pos_y, unlike_pos_width,
        unlike_pos_height, (216, 191, 216), screen)
    # 显示游戏
    # 刷新屏幕,以使最近的绘制操作生效。
    pygame.display.flip()
    # 对窗口进行更新
    pygame.display.update()
  # 创建Clock对象,用于操作时间
  # tick(60)控制帧速度,即窗口刷新速度,每秒钟60次帧刷新,视频中每次展示的静态图像称为帧
  pygame.time.Clock().tick(60)
  show_like_interface('我就知道小姐姐你也喜欢我~', screen, color=(0, 0, 0))


# 表示程序的主入口。所以以后为了避免该文件被外部文件调用,一般建议加上
if __name__ == '__main__':
  main()

当然在运行这个代码之前,你还需要在同一路径下装上这个楷体语言包

python实现跨年表白神器--你值得拥有

还有这张图片哟~

python实现跨年表白神器--你值得拥有

祝你表白成功,在新的一年里可以和自己喜欢的人在一起!

到此这篇关于python实现跨年表白神器--你值得拥有的文章就介绍到这了,更多相关python跨年表白神器内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用Python设置tmpfs来加速项目的教程
Apr 17 Python
Python中的推导式使用详解
Jun 03 Python
python保存网页图片到本地的方法
Jul 24 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
Python批量删除只保留最近几天table的代码实例
Apr 01 Python
为什么你还不懂得怎么使用Python协程
May 13 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
Jun 05 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 Python
django API 中接口的互相调用实例
Apr 01 Python
Tensorflow与Keras自适应使用显存方式
Jun 22 Python
python Scrapy框架原理解析
Jan 04 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 Python
Python列表元素删除和remove()方法详解
Jan 04 #Python
python3列表删除大量重复元素remove()方法的问题详解
Jan 04 #Python
关于python中remove的一些坑小结
Jan 04 #Python
python中remove函数的踩坑记录
Jan 04 #Python
python 日志模块logging的使用场景及示例
Jan 04 #Python
python 邮件检测工具mmpi的使用
Jan 04 #Python
Python3中的tuple函数知识点讲解
Jan 03 #Python
You might like
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
PHP设计模式之命令模式的深入解析
2013/06/13 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
2014/05/09 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
2019/04/17 PHP
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
20个非常棒的 jQuery 幻灯片插件和教程分享
2011/08/23 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
javascript 闭包详解
2015/07/02 Javascript
js实现简单的验证码
2015/12/25 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
BootstrapValidator不触发校验的实现代码
2016/09/28 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
angularjs性能优化的方法
2018/09/05 Javascript
小程序自定义导航栏兼容适配所有机型(附完整案例)
2020/04/26 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
python爬虫常用的模块分析
2014/08/29 Python
Python实现简单登录验证
2016/04/13 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
Python实现点云投影到平面显示
2020/01/18 Python
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
便利店投资的创业计划书
2014/01/12 职场文书
最新个人职业生涯规划书
2014/01/22 职场文书
个人自荐材料
2014/05/23 职场文书
单位委托书怎么写
2014/08/02 职场文书
个人年终总结怎么写
2015/03/09 职场文书
感恩教育观后感
2015/06/17 职场文书
婚礼双方父亲致辞
2015/07/27 职场文书