Python实现仿抖音表白小软件:Pygame交互逻辑详解
本文介绍如何使用Python和Pygame库开发一个仿抖音风格的表白互动小软件。通过设置游戏窗口、动态按钮坐标及鼠标悬停事件监听,实现点击或悬停不同按钮触发不同界面反馈的交互逻辑。文章包含完整代码示例与流程解析,适合Python初学者学习GUI交互与事件驱动编程。
Python应用与项目背景
Python能够干嘛?
它可以用于处理日常任务,例如自动备份MP3文件;也可以用于开发网站,许多知名平台如知乎、YouTube均基于Python构建;此外,它还广泛应用于网络游戏后台开发,大量在线游戏的后端均由Python编写。
上述应用场景本人尚未亲自实现过;
但我了解Python可用于开发一些有趣的项目,例如仿制抖音风格的表白小软件;

本人目前也是Python初学者,该脚本源自网络搜索,随后本人重新编写了一遍以加深理解,核心在于理清整体思路;
软件交互流程设计
开发流程如下:
1、创建游戏主屏幕; 2、加载标题文字; 3、加载按钮元素; 4、当鼠标悬停在‘算了吧’按钮上方时,重新加载桌面并随机生成‘算了吧’按钮的新坐标; 5、当鼠标悬停在‘好呀’按钮上方时,显示不同的标题内容。
以下是Python实现脚本:
Pygame核心代码实现
import pygame
import random
# 设置游戏屏幕大小 这是一个常量
WIDTH, HEIGHT = 640, 480
screen = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32)
pygame.display.set_caption('FROM一个喜欢你很久的小哥哥')
# 标题
def title(text, screen, scale, color=(255, 0, 0)):
font = pygame.font.SysFont('SimHei', 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)
# 初始化文字的坐标
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, (0, 0, 0))
textRect = textRender.get_rect()
textRect.center = ((x+w/2), (y+h/2))
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((255, 255, 255))
font = pygame.font.SysFont('SimHei', 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()
def main():
pygame.init()
clock = pygame.time.Clock()
unlike_pos_x = 330
unlike_pos_y = 250
unlike_pos_width = 80
unlike_pos_height = 40
unlike_color = (0, 191, 255)
like_pos_x = 180
like_pos_y = 250
like_pos_width = 80
like_pos_height = 40
like_color = (0, 191, 255)
running = True
while running:
# 填充窗口
screen.fill((255, 255, 255))
img = pygame.image.load('d:/love2.png')
imgRect = img.get_rect()
imgRect.midtop = int(WIDTH / 1.3), HEIGHT // 7
screen.blit(img, imgRect)
# 获取坐标
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('小姐姐,我观察你很久了', screen, scale=[5, 8])
title('做我女朋友好不好呀', screen, scale=[5, 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)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
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:
show_like_interface('我就知道小姐姐你也喜欢我~', screen, color=(255, 0, 0))
pygame.display.flip()
pygame.display.update()
clock.tick(60)
main()
如果大家有更好的创意,欢迎一起交流探讨;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









