哈喽大家好,过年期间,支付宝就推出了“集五福”这个活动,用户需要通过扫描“福”字等方式来集五福。
过年这期间,我用pygame和pyautogui简单还原了一下支付宝集五福,也做了一些改变。
pygame的安装就不用多说了吧,网上都有,pyautogui呢,和pygame的安装思路都是差不多的,网上一查也能查到,我们就直接进入正题。
目录
一、程序框架
先来盘点一下支付宝集五福的套路,一种福字特别好集,还有一种怎么也集不到,这个时候我们就需要外援了,比如让好友送你这个福字。我们就按照这个思路来编。
准备工作就是制作背景,福字的图片,按钮。
开始编程,首先肯定就是导入各种各样的库了。
然后是pygame的初始化设置,比如标题啊,页面大小啊等等。
接下来是pygame内部一些图片的导入以及后面随机数使用的列表和统计数据的字典。
然后开始编写主程序,就是检测按下按钮,随机抽取五福中的一个,然后提示用户,显示出来。
一但集齐五福,那么就要进入奖励环节,设置列表,随机抽取一个,最后发给用户。
二、导入库
第一步就是导入各种各样的库,我使用了 随机数(random),时间(time),pygame,pyautogui。
import random as r
import time
import pygame as p
import pyautogui as pp
三、pygame初始化设置
然后初始化设置pygame
p.init()
screen = p.display.set_mode((800,600))
p.display.set_caption("集五福")
icon = p.image.load("ys.png")
p.display.set_icon(icon)
bgImg = p.image.load("back.png")
bgImg = p.transform.scale(bgImg, (800, 600))
四、设置角色等
看这端程序的最后,就是将一个福创建特别多,有一个只有一个,这样就能实现稀有程度不同了。
font_name = p.font.match_font('fangsong')
actp = p.image.load("act.png")
actp = p.transform.scale(actp, (150, 50))
actX = 320
actY = 450
jyp = p.image.load("jy.png")
jyp = p.transform.scale(jyp, (150, 150))
jyX = 10
jyY = 250
fqp = p.image.load("fq.png")
fqp = p.transform.scale(fqp, (150, 150))
fqX = 165
fqY = 250
agp = p.image.load("ag.png")
agp = p.transform.scale(agp, (150, 150))
agX = 320
agY = 250
ysp = p.image.load("ys.png")
ysp = p.transform.scale(ysp, (150,150))
ysX = 475
ysY = 250
hxp = p.image.load("hx.png")
hxp = p.transform.scale(hxp, (150, 150))
hxX = 630
hxY = 250
list_num = ["敬业福","友善福","和谐福","富强福","爱国福"]
dist_nser = {"敬业福":0,"友善福":0,"和谐福":0,"富强福":0,"爱国福":0}
fag = p.font.Font(font_name,16)
def show_ag():
texta = '爱国福'
numa = f"{ag}"
sag = fag.render(texta,True,(0,0,0))
saga = fag.render(numa,True,(0,0,0))
screen.blit(sag,(370, 400))
screen.blit(saga,(390, 415))
def show_jy():
textj = '敬业福'
numj = f"{jy}"
sjy = fag.render(textj,True,(0,0,0))
sjya = fag.render(numj,True,(0,0,0))
screen.blit(sjy,(60, 400))
screen.blit(sjya,(80, 415))
def show_fq():
textf = '富强福'
numf = f"{fq}"
sfq = fag.render(textf,True,(0,0,0))
sfqa = fag.render(numf,True,(0,0,0))
screen.blit(sfq,(215, 400))
screen.blit(sfqa,(235, 415))
def show_ys():
texty = '友善福'
numy = f"{ys}"
sys = fag.render(texty,True,(0,0,0))
sysa = fag.render(numy,True,(0,0,0))
screen.blit(sys,(525, 400))
screen.blit(sysa,(545, 415))
def show_hx():
texth = '和谐福'
numh = f"{hx}"
shx = fag.render(texth,True,(0,0,0))
shxa = fag.render(numh,True,(0,0,0))
screen.blit(shx,(680, 400))
screen.blit(shxa,(700, 415))
a = list_num[r.randint(0,4)]
for i in range(20):
list_num.append(a)
list_num.remove(a)
b = list_num[r.randint(0,3)]
for asd in range(15):
list_num.append(b)
list_num.remove(b)
c = list_num[r.randint(0,2)]
for ssvf in range(7):
list_num.append(c)
list_num.remove(c)
d = list_num[r.randint(0,1)]
for dhb in range(2):
list_num.append(d)
list_num.remove(d)
五、进入集五福主程序
接下来就是集五福的主程序了,这里检测是否按下按钮是使用了pygame 的MOUSEBUTTONDO