基于Python实现的恋爱对话小程序详解
作者:顾木子吖 发布时间:2023-01-14 11:08:38
标签:Python,小程序
导语
哈喽!大家好~我是木木子啦!自从写了一些表白类型的一些小脚本、小程序之后,越发不可收拾了,哈哈哈。
常常会有小粉丝说:这......小程序不够啊!刚表白去了,但是被拉黑了。
那我不答应了,我得努努力:多多益善给大家开发一些更有趣的各种各样的适合表白的小程序!
让每个人都争取过年带着对象回家过年~嘿嘿嘿
今天,木木子推荐一个定制表白恋爱的项目:恋爱对话小程序
这个简单的项目,居然还蛮有趣的——如何操作?快来了解下。
一、小简介
turtle:绘图模块
PySimpleGUI:弹框制作模块(一个非常简单好用的Python图形界面库(PysimpleGUI))
1)环境安装
本文所用到的环境:Python3、Pycharm、PySimpleGUI、Turtle、time模块。
环境安装:pip install +模块名 或带豆瓣镜像源pip install -i
https://pypi.douban.com/simple/ +模块名
二、代码演示
1)导入模块
from turtle import *
import time
import PySimpleGUI as sg
2)倒计时
def draw_count_down(i): #倒数
bgcolor('black')
speed(0)
up()
goto(-50,-100)
color('white')
write(i, align="center",font=('Times New Roman', 200, 'bold'))
time.sleep(1)
3)画2份不同的礼物
def draw_people(): #画小人
up()
fillcolor()
begin_fill()
color('black','white')
goto(-300, 50) # 脖子坐标
down()
circle(75) # 半径为75的脑袋
end_fill()
right(90)
forward(175) # 身体的长度175像素
right(45)
forward(100) # 腿长100像素
up()
goto(-300, -120) # 画另一条腿
down()
left(90)
forward(100)
up()
goto(-300, -5) # 手臂坐标
down()
left(45)
forward(100) # 第一只手臂长度
left(45)
forward(67) # 手掌长度
up()
goto(-300, -40) # 第二只手臂坐标
down()
right(45)
forward(100) # 第二只手臂长度
right(45)
forward(67)
up()
goto(-330, 155) # 第一只眼睛起始坐标
down()
right(45)
forward(50) # 眼睛长度为50
up()
goto(-270, 155) # 第二只眼睛起始坐标
down()
forward(50)
up()
pencolor('#F39F79')
goto(-340,100) #红脸蛋第一只眼
seth(0)
down()
backward(40)
up()
goto(-260, 100) # 红脸蛋第二只眼
down()
forward(40)
time.sleep(1)
def draw_heart(size): # 画爱心
color('red', 'red')
down()
setheading(150)
begin_fill()
forward(size)
circle(size * -3.745, 45)
circle(size * -1.431, 165)
left(120)
circle(size * -1.431, 165)
circle(size * -3.745, 45)
forward(size)
end_fill()
def send_heart(): #发射爱心
up()
goto(-50, -22)
draw_heart(14)
up()
goto(120, -22)
draw_heart(25)
penup()
goto(305, -22)
draw_heart(43)
def wr_character():
up()
goto(-50,-200)
pencolor('black')
write('惊', font=('行楷', 60, 'bold'))
up()
goto(50,-200)
write('不', font=('行楷', 60, 'bold'))
up()
goto(150,-200)
write('惊', font=('行楷', 60, 'bold'))
up()
goto(250,-200)
write('喜', font=('行楷', 60, 'bold'))
def draw_pupu(): #画xxxx
up()
shapesize(10, 2)
speed(2)
fillcolor()
color('#805140','#805140')
begin_fill()
goto(-50, -20)
down()
circle(20)
end_fill()
begin_fill()
up()
goto(-50, -80)
down()
circle(40)
end_fill()
begin_fill()
up()
goto(10, -110)
seth(90)
down()
circle(60,180)
seth(0)
forward(120)
end_fill()
4)二种选择是不同的绘图倒计时之后就是绘制你回答的那个礼物。
def present_good(): #选择是送的礼物
setup(1000,700)
pensize(10)
hideturtle()
numbers=[5,4,3,2,1] #进行倒数
for i in numbers:
draw_count_down(i)
undo()
draw_moon()
draw_people()
send_heart()
wr_character()
done()
def present_bad(): #选择不是送的礼物
setup(1000, 700)
pensize(10)
hideturtle()
numbers=[5,4,3,2,1] #进行倒数
for i in numbers:
draw_count_down(i)
undo()
draw_moon()
draw_people()
draw_pupu()
wr_character()
done()
5)弹窗设计的文字(可修改)
layout=[ #弹框内容设计
[sg.Text('请输入你的名字:')],[sg.Input()],
[sg.Text('请回答下面这个问题哦!')],
[sg.Text('我是你喜欢的类型嘛?')],
[sg.Button('是的是的')],[sg.Button('不是')]
]
sg.popup('你好呀!我是你的好朋友为你定制的专属男朋友','请按OK键继续') #这是一个简易弹框
time.sleep(1)
window=sg.Window('小可爱',layout)
event,value=window.read()
window.close()
if event == '是的是的':
sg.popup(f'{value[0]}请按OK键接收男朋友的礼物!♥') #这是一个简易弹框 #这里的value[0],是因为value返回内容为字典
time.sleep(1)
present_good()
else:
sg.popup(f'{value[0]}竟然对我有意见,心碎了!!','但你的男友是个大度的人,送你一个小礼物吧','请按OK键接收我心碎的礼物!')
present_bad()
三、效果展示
1)视频展示
可能视频的话我录制的比较粗糙,感觉有点儿看不清楚!
Turtle系列: 恋爱对话小程序之我是你喜欢的类型嘛?
2)截图展示
2.1 弹窗界面
2.2 倒计时5秒
2.3这里选择的是“是的是的”的礼物——选择“不是”的礼物我就不截图了,你们自己拿源码试试 哈哈哈保留悬链。选择不是的话超惊喜滴
来源:https://blog.csdn.net/weixin_55822277/article/details/121265993


猜你喜欢
- 假设要实现一个存放多种类型数据结构的对象,比如一个存放算术操作数和操作符的树结点,需要存放包含一元操作符、二元操作符和数字类型的结点clas
- 二次移动平均法逻辑二次移动平均法是一种重要的数学工具,用于处理时间序列数据,它的主要目的是通过平滑序列中的噪音数据来更好地捕捉趋势。具体实现
- 均方损失函数:这里 loss, x, y 的维度是一样的,可以是向量或者矩阵,i 是下标。很多的 loss 函数都有 size_averag
- 本文实例讲述了python面向对象之类属性和类方法。分享给大家供大家参考,具体如下:目标类的结构类属性和实例属性类方法和静态方法01. 类的
- python是免费的么?python是免费的,也就是开源的。编程软件的盈利方式就是你使用它, 用的人越多越值钱。注:Python 是一个高层
- 断言声明是一种方便的程序调试方式。1、可将断言视为debug工具,Python的实现也符合这种设计理念。assert语句的执行依赖于__de
- 最近一段时间一直在研究yolo物体检测,基于网络上很少有yolo的分类预训练和yolo9000的联合数据的训练方法,经过本人的真实实验,对这
- 前言本文主要给大家介绍的是关于Python中表达式x += y和x = x+y 区别的相关内容,分享出来供大家参考学习,下面来看看详细的介绍
- 前言本文是在GitHub上看到一个大牛总结的前端常见面试题,很多问题问的都很好,很经典、很有代表性。上面没有答案,我就整理了一下,从网上找了
- 前言:Unittest又名单元测试,主要用于测试自己写的代码的正确性和完备性,也方便自己和他人对代码的维护。在软件开发过程中,测试驱动开发的
- 目前两个客户端扩展库连接超时可以设置选项来操作,比如mysqli: <?php //创建对象 $mysqli = mysqli_ini
- 在目前的工作中需要解决复制整个SqlServer数据库的问题,复制的内容包括数据库大纲、数据库中的存储过程、函数、表结构、主外键关系以及表中
- 上文:成为一个顶级设计师的第二准则英文原文成为一个顶级设计师的第三准则:对比,对比,对比在设计里面,好的对比和你对颜色选择是密切相关的。对比
- 本文实例为大家分享了vue iview动态新增和删除的具体代码,供大家参考,具体内容如下<Form ref="capsule
- asp中使用addnew方法添加一条记录后,我们经常使用取得自递增的ID,而使用bookmark很容易实现这样的功能。rs.open&nbs
- 字符串在 Python 中创建字符串对象非常容易。只要将所需的文本放入一对引号中,就完成了一个新字符串的创建(参见清单 1)。如果稍加思考的
- 前言:Matplotlib 通常与 NumPy、Pandas 一起使用,是数据分析中不可或缺的重要工具之一。Matplotlib 是 Pyt
- 一、安装redis:1.下载:wget http://download.redis.io/releases/redis-3.2.8.tar.
- 对于日期的操作可以说是比较常见的case了,日期与格式化字符串互转,日期与时间戳互转,日期的加减操作等,下面主要介绍下常见的需求场景如何实现
- 这篇文章主要介绍了JavaScript对象属性操作实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要