Python 集五福 (pygame、pyautogui)

哈喽大家好,过年期间,支付宝就推出了“集五福”这个活动,用户需要通过扫描“福”字等方式来集五福。

过年这期间,我用pygame和pyautogui简单还原了一下支付宝集五福,也做了一些改变。

pygame的安装就不用多说了吧,网上都有,pyautogui呢,和pygame的安装思路都是差不多的,网上一查也能查到,我们就直接进入正题。

目录

一、程序框架

二、导入库

三、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

  • 80
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值