PyGame实现情人节表白利器
前提:写不出那么那个的话哇,随便写写,随便看看,重在代码(文章末尾有免费完整源代码)
实验环境:
pygame 1.9.4
pycharm
python3.6
实现思路:
pygame.display实现基本框架,然后screen接收text和button内容,pygame.mouse.get_pos()获取鼠标位置,然后判断鼠标所在位置,改变B选项位置即可(后面button函数在循环中改变,给关闭选项添加事件,然后pygame.mixer.music加载背景音乐,基本就是这些知识点了)
实验帮助:
参考手册:Pygame帮助手册 https://blog.csdn.net/fengf2017/article/details/79300801
实现效果:


实验过程:
1.构建基本框架:
和之前计算器差不多,先添加标题,text,button,什么的,然后控制好背景图片和框架的大小,别留下空白即可
构建基本框架语句
#基本框架
WIDTH, HEIGHT = 640,640
#不全屏
screen = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32) pygame.init()
添加标题:
pygame.display.set_caption('2019-2-14情人节快乐')
2.添加背景音乐和text,button,首先应该规定好大小和位置,这点很重要,不然后面完全不知道放在哪里,怎么改变也不知道
由于本人图片是640*640,所以基本规定好了。
添加背景音乐
# 添加背景音乐
pygame.mixer.music.load('love.mp3')
pygame.mixer.music.play(-1, 20)
pygame.mixer.music.set_volume(0.5)
添加text和button相关信息:
#信息内容
def title(text, screen, scale, color=(, , )):
font = pygame.font.SysFont('SimHei', )
textRender = font.render(text, True, color)
screen.blit(textRender, (WIDTH / scale[], HEIGHT / scale[])) # 按钮
def button(text, x, y, w, h, color, screen):
pygame.draw.rect(screen, color, (x, y, w, h))
font = pygame.font.SysFont('SimHei', )
textRender = font.render(text, True, (, , ))
textRect = textRender.get_rect()
textRect.center = ((x+w/), (y+h/))
screen.blit(textRender, textRect)
3.随机改变B选项位置和点击确定后的刷新,和绑定关闭事件
只需要将获取鼠标位置判断一下,然后在循环中随机改变位置,赋值给B选项即可
点击后的刷新:首先添加语句,然后执行如下语句即可
pygame.display.update()
给关闭键绑定事件,实现关闭
# 设置关闭选项属性
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
上述关闭语句在点击A选项前后都要写,因为页面刷新,需要能够关闭本软件(良心啊!!!)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/2/14 10:27
# @Author : Empirefree
# @File : 19-情人节.py
# @Software: PyCharm Community Edition import pygame
import random
import sys #基本框架
WIDTH, HEIGHT = 640,640
#不全屏
screen = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32)
#标题
pygame.display.set_caption('2019-2-14情人节快乐') #信息内容
def title(text, screen, scale, color=(0, 0, 0)):
font = pygame.font.SysFont('SimHei', 27)
textRender = font.render(text, True, color)
screen.blit(textRender, (WIDTH / scale[0], HEIGHT / scale[1])) # 按钮
def button(text, x, y, w, h, color, screen):
pygame.draw.rect(screen, color, (x, y, w, h))
font = pygame.font.SysFont('SimHei', 20)
textRender = font.render(text, True, (255, 255, 255))
textRect = textRender.get_rect()
textRect.center = ((x+w/2), (y+h/2))
screen.blit(textRender, textRect) # 生成随机的位置坐标
def get_random_pos():
x, y = random.randint(10, 500), random.randint(20, 500)
return x, y
def heart(text, x, y, w, h, color, screen):
pygame.draw.rect(screen, color, (x, y, w, h))
font = pygame.font.SysFont('SimHei', 20)
textRender = font.render(text, True, (255, 255, 255))
textRect = textRender.get_rect()
textRect.center = ((x + w / 2), (y + h / 2))
screen.blit(textRender, textRect)
#点击同意后的按钮
def show_like_interface(screen):
screen.fill((255, 255, 255))
background1 = pygame.image.load('heart.jpg').convert()
screen.blit(background1, (0, 0))
heart('I like you too', 200, 300, 250, 50, (255, 0,0), screen) pygame.display.update()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit() def main():
pygame.init()
clock = pygame.time.Clock()
# 添加背景音乐
pygame.mixer.music.load('love.mp3')
pygame.mixer.music.play(-1, 20)
pygame.mixer.music.set_volume(0.5)
# 设置不同意按钮属性
unlike_pos_x = 130
unlike_pos_y = 375
unlike_pos_width = 450
unlike_pos_height = 55
unlike_color = (115, 76, 243)
# 设置同意按钮属性
like_pos_x = 130
like_pos_y = 280
like_pos_width = 450
like_pos_height = 55
like_color = (115, 76, 243) running = True
while running:
# 填充窗口
screen.fill((255, 255, 255))
# 添加背景图
background = pygame.image.load('avatar.jpg').convert()
screen.blit(background, (0, 0)) # 获取鼠标坐标
pos = pygame.mouse.get_pos()
# 判断鼠标位置,不同意时,按钮不断变化
if pos[0] < unlike_pos_x + unlike_pos_width + 5 and pos[0] > unlike_pos_x - 5 and pos[1] < unlike_pos_y + unlike_pos_height + 5 and pos[1] > unlike_pos_y - 5:
while True:
unlike_pos_x, unlike_pos_y = get_random_pos()
if pos[0] < unlike_pos_x + unlike_pos_width + 5 and pos[0] > unlike_pos_x - 5 and pos[1] < unlike_pos_y + unlike_pos_height + 5 and pos[1] > unlike_pos_y - 5:
continue
break # 设置标题及按钮文本信息
title('1.今天情人节,我想向你表白~~~', screen, scale=[8, 3])
button('A.My love is endless', like_pos_x, like_pos_y, like_pos_width, like_pos_height, like_color, screen)
button('B.渣男:不主动,不拒绝,不负责!', unlike_pos_x, unlike_pos_y, unlike_pos_width, unlike_pos_height, unlike_color, screen)
# 设置关闭选项属性
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# 当鼠标点击同意按钮后,跳转结束页面
if pos[0] < like_pos_x + like_pos_width + 5 and pos[0] > like_pos_x - 5 and pos[1] < like_pos_y + like_pos_height + 5 and pos[1] > like_pos_y - 5:
if event.type == pygame.MOUSEBUTTONDOWN:
show_like_interface(screen) pygame.display.flip()
pygame.display.update()
clock.tick(60) if __name__ == '__main__':
main()
后话:祝大家情人节快乐,Happy New Year,给大家拜年啦,猪年2019年快乐,2019-2-14胡宇乔Empirefree立。
链接: https://pan.baidu.com/s/1MT17OWOAtRT2-J6Sv_Vg2w 提取码: h15d 复制这段内容后打开百度网盘手机App,操作更方便哦
PyGame实现情人节表白利器的更多相关文章
- JQ实现情人节表白程序
JQ实现情人节表白页面 效果图: 表白利页,你值得拥有哦! 代码如下,复制即可使用: <!doctype html> <html> <head> <meta ...
- 七夕情人节表白-纯JS实现3D心形+图片旋转
七夕情人节就快到了,这里献上纯js表白神器-心里都是你,预览: 技术点:css-3d.js-随机色.js-transform 1.html: <div class="heart&quo ...
- 利用canvas实现刮刮乐效果
最近做了个情人节表白的项目,表白内容时被遮盖的,刮开后才能显示,并且刮开一定比例后清空所有遮罩. function guaguale(obj,w,h){//obj时canvas元素 var canva ...
- 【情人节来一发】网站添加QQ客服功能
今年的元宵节遇到情人节,挺不自量力的,呵呵,开篇给各位讲个段子,早上一美女同学在空间发说说道:“开工大吉 起床啦,卖元宵,卖玫瑰,卖避孕套啦-有木有一起去发财的小伙伴?Let’s go…”,对于此种长 ...
- [51Testing情人节活动]情人节,爱要有“礼”才完美!
2.14情人节,你还在纠结送TA什么礼物么? 你还苦于不敢表白么? 在微信里勇敢说出你的爱 51Testing帮你给TA特别的惊喜! Ps.用这个做借口表个白也不错哦! 本期51官方微信特别选出三种精 ...
- 教你用 Python 实现抖音热门表白软件
之前在群里看到有人发了一个抖音上很火的小视频,就是一个不正经的软件,运行后问你是不是愿意做我的朋友,但你没法点击到「不同意」!并且没办法直接关闭窗口! 很不正经,很流氓,有点适合我. 效果大概是这样的 ...
- 用 Python 写个七夕表白神器
今天是七夕节,相比于现代人自创的 502,不对是 520,七夕才是中国传统意义上的情人节,本文分享几个 Python 表白程序,情侣可以现学现用,单身的话也可以先收藏一下,说不定下次就用上了. 爱心树 ...
- 利用 Python 写个七夕表白神器
今天是七夕节,相比于现代人自创的 502,不对是 520,七夕才是中国传统意义上的情人节,本文分享几个 Python 表白程序,情侣可以现学现用,单身的话也可以先收藏一下,说不定下次就用上了. 很多人 ...
- 关于我用python表白成功这件事【表白成功】
520,并非情人所属, 我们可以表白万物, 不管什么时候, 这都是一个特别的日子, 今天,我要表白所有, 心里有我的人! 在这个充满幸福的日子里, 我要把最美好的祝福, 送给心里有我的每一个人: 祝愿 ...
随机推荐
- zhuan: WAN simulating tool - Netem : command tc qdisc
Last weekly meeting we talked about a WAN simulating tool in order to test WPG, I find a great tool ...
- Linux系统中存储设备的两种表示方法
转:https://blog.csdn.net/holybin/article/details/38637381 一.对于IDE接口的硬盘的两种表示方法: 1.IDE接口硬盘,对于整块硬盘的两种表示方 ...
- js把页面的table标签导出为csv
// 使用该保存方法,table必须外嵌一个div且不能有任何其他元素 否则ie下载会出现其他数据 //tableid , title 为文件保存的文件名 function saveCode(tabl ...
- C#开启异步 线程的四种方式
一.异步委托开启线程public static void Main(string[] args){ Action<int,int> a=add; a.BeginInvoke(3,4,nul ...
- AWS的EC2实例搭建服务器使用stackoverflow教程
作为一个技术开发工程师, 一个给力的问题解决方案搜索引擎是十分必要的, stackoverflow作为一个码农必备神器, 存在访问不稳定,有时候打不开的问题,下面介绍如何在亚马逊云服务器上搭建属于自己 ...
- input type = file 在部分安卓手机上无法调起摄像头和相册
移动端H5web 用input type = file 在部分安卓手机上无法调起摄像头拍照,有的也无法访问相册而是直接访问了文档,解决办法是: 加上 accept = "image/*&qu ...
- BDD中数据的类型及处理方法(python)
BDD中提供了两种数据类型,table和text,以下是数据的文档介绍,最后有我的两个小例子. 1.class behave.model.Table(headings, line=None, rows ...
- log4j2配置ThresholdFilter,让info文件记录error日志
日志级别: 是按严重(重要)程度来分的(如下6种): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < ...
- 1#认识Java
Java是一种面对对象的编程语言. Java共分为三个体系:JavaEE.JavaSE.JavaMS Java SE 1: Java Platform Standard Edition,Java平台标 ...
- Python语言——Python语言概述
Python语言概述 计算机语言概述 语言:交流工具,沟通媒介 计算机语言:人和计算机交流的工具,翻译官 Python语言简述 Python是计算机语言的一种 Python编程语言: 代码:人类语言, ...