【Python实战】快看:”又中奖了,中大奖了“周围的小伙伴都惊呆了~你还不麻溜滴~(代码版彩票小游戏上线啦)

news2024/9/22 11:26:27

导语

哈喽!北鼻们,晚上好。

夕阳🌇的第一缕阳光送给小可爱们~每天都要加油鸭!

所有文章完整的素材+源码都在👇👇

粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。

 彩票是一个恒古不变的话题,现在的生活越来越好,大部分人开始关注福利彩票的事情,当然

也有很多人都想中将是真的啦~哈哈哈,但是大家还是要适当哦!

就话不多说,开始今天 主题吧,小编今天给大家做了一款简易的彩票小游戏,让我们看看谁能

中一等奖吧?谁又是二等奖、三等奖呢?

正文

一、游戏规则

 游戏里面有提前设置好的奖项,分为三个,一等奖,二等奖,三等奖,用户需要在14个随机数

中,连续猜6次,每次填写一个1~14的数字,填写完数字之后使用键盘和鼠标点击,揭示中奖

号码。如果猜中6个数字表示中一等奖,一等奖给用户加300积分。

5个数字表示中二等奖,二等奖给用户加200积分。4个数字表示中三等奖,三等奖给用户加100

积分。除此之外表示不中奖,不中奖就会扣除用户的50积分,每揭示中奖号码一次,会要求用

户输入是否继续。可以手动结束游戏,或者积分用完自动结束游戏。

二、环境准备

 1)运行环境 

 开发环境:Python3、Pycharm社区版、Pygame,部分自带的模块安装Python即可使用。 

 相对应的安装包/安装教程/激活码/使用教程/学习资料/工具插件 可以直接找我厚台获取 。 

 2)模块安装 

 第三方库的安装方式如下: 

 一般安装:pip install +模块名 

 镜像源安装:pip install -i https://pypi.douban.com/simple/+模块名 

 (还有很多国内镜像源,这里是豆瓣的用习惯了,其他镜像源可以去看下之前文章都有的)

 模块安装问题可以详细的找我给大家讲一下的哈,之前其实也有的文章写了几个点的。 

三、代码展示

1)导入库

import pygame
from pygame.locals import *
import sys,random,time,easygui

2)主程序

#pygame环境初始化
pygame.init()
#设置一个长为1250,宽为700的窗口
canvas = pygame.display.set_mode((600, 450))
canvas.fill([255,255,255])
# 设置窗口标题
pygame.display.set_caption("")
# 图片加载
bg1 = pygame.image.load('images/bg(1).jpg')
bg2 = pygame.image.load('images/bg(2).jpg')
ball  = pygame.image.load('images/ball.jpg')
h = pygame.image.load('images/h.jpg')
def handleEvent():
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            sys.exit()
#专门写字
def write(str,x,y):
    text=pygame.font.SysFont('simsunnsimsun',30)
    laohu=text.render(str,True,(255,0,0))
    canvas.blit(laohu,(x,y))
def write2(str,x,y):
    text=pygame.font.SysFont('微软雅黑',60)
    laohu=text.render(str,True,(0,255,0))
    canvas.blit(laohu,(x,y))            
            
#变换状态            
def changestate():
    for event in pygame.event.get():
        if event.type==MOUSEBUTTONDOWN and event.button==1:
            if game.state==game.states[0]:
                game.state=game.states[1]
        if event.type==KEYDOWN and event.key==K_SPACE:
            if game.state==game.states[2]:
                game.state=game.states[3]
        if event.type==pygame.QUIT:
            pygame.quit()
            sys.exit()
#用户类
class User():
    def __init__(self):
        self.socre=300
        self.numbers=[]
    def win(self,num):
        self.socre=self.socre+num
    def lose(self):
        self.socre=self.socre-50
user=User()

#创建ball类
class Ball():
    def __init__(self,x,y):
        self.img=ball
        self.x=x
        self.y=y
    def paint(self):
        canvas.blit(self.img,(self.x,self.y))
 
#创建游戏类       
class game():
    #0-5个状态
    states=['欢迎','投注','随机','依次停止','计算','是否']
    state=states[0]
    numbers=[]
    index=0
    
#创建ball对象
def creatball():
    game.balls=[Ball(30,350),
           Ball(130,350),
           Ball(230,350),
           Ball(330,350),
           Ball(430,350),
           Ball(530,350)]
    
#揭示号码
def removeball():
    for event in pygame.event.get():
        if event.type==MOUSEBUTTONDOWN and event.button==1:
            game.balls.pop(0)
            game.index+=1
#揭示数字:
def shownumber():
    write2(str(game.numbers[0]),30,350)
    write2(str(game.numbers[1]),130,350)
    write2(str(game.numbers[2]),230,350)
    write2(str(game.numbers[3]),330,350)
    write2(str(game.numbers[4]),430,350)
    write2(str(game.numbers[5]),530,350)
    
#产生6个不重复的随机数,添加到列表里,算法
def creatnumber():
    if not len(game.numbers)==0:
        game.numbers=[]       
    while True:
        num=random.randint(1,13)
        if not num in game.numbers:
            game.numbers.append(num)
        if len(game.numbers)==6:
            break

#清除用户数据
def clean_user():
    if len(user.numbers)==0:
        return 0
    else :
        for i in range(len(user.numbers)):
            user.numbers.pop() 
#固定的几个页面封装起来
def paint():
    canvas.blit(bg1,(0,0))
    canvas.blit(bg2,(300,0))
    n=random.randint(0,14)
    write(str(n),110,90)
    write(str(n),410,90)
    for i in game.balls:
        i.paint()
    
#猜对了几个?
def jisuan():
    n=0
    t=True
    for i in user.numbers:
        for j in game.numbers:
            if i==j:
                n+=1
    if n==6:
        user.win(300)
    elif n==5:
        user.win(200)
    elif n==4:
        user.win(100)
    else :
        user.lose()
        t=False
    return t  
   
#用来在界面表达文字,数字等。
def conpaint():
    canvas.blit(h,(0,0))
    if game.state == game.states[0]:
        write('欢迎来到偷偷乐',200,100)
        write('请点击鼠标进入下一个环节!',70,300)
    elif game.state == game.states[1]:
        creatnumber()
        creatball()
        clean_user()
        game.index=0
        easygui.msgbox('您的积分为'+str(user.socre)+'\n'+'祝您游戏愉快!!')
        for i in range(6):
            n=int(easygui.enterbox('请输入1-14中的一个数字'))
            user.numbers.append(n) 
        game.state=game.states[2]
    elif game.state == game.states[2]: 
        paint()
        write('请按下空格进入show环节',150,130)
    elif game.state == game.states[3]:
        shownumber()
        removeball()
        paint() 
        write('请点击鼠标揭示中奖号码!',150,130)
        if game.index==6:
            game.state=game.states[4]
    elif game.state==game.states[4]:
        shownumber()
        paint()
        if jisuan():
            easygui.msgbox('恭喜你中奖了,您的积分为'+str(user.socre))
        q=easygui.enterbox('是否继续?y/n')
        if q=='y':
            game.state=game.states[1]
        elif q=='n':
            easygui.msgbox('您最终积分为'+str(user.socre))
            game.state=game.states[5]
    elif game.state==game.states[5]:
        write('欢迎下次再来!!',200,100)

#总控制程序           
def control():
    if user.socre>0:
        conpaint()
        changestate()
    else :
        canvas.blit(h,(0,0))
        easygui.msgbox('您的积分已经用完')
        write('欢迎下次再来!!',200,100)
        time.sleep(2)

    
while True:
    control() 
    pygame.display.update()
    handleEvent()

四、效果展示

1)游戏界面

​2)初始积分

3)确定环节

4)中奖啦

中将之前自己输入数字之前没截图的哈,这里就只展示部分截图的。其他的需要大家自己探索

哟~

总结

嘿嘿,小编刚刚才三等奖呢!4个数字表示中三等奖,三等奖给用户加100积分。大家能摇一摇到

一等奖嘛?评论区见~这要是能中,那运气不得了哈。

🎯完整的免费源码领取处:找我吖!文末公众hao可自行领取,滴滴我也可!

🔨推荐往期文章——

项目1.0  超级玛丽

程序员自制游戏:超级玛丽100%真实版,能把你玩哭了~【附源码】

项目1.1   扫雷

 Pygame实战:据说这是史上最难扫雷游戏,没有之一,你们感受下......

项目8.2  疯狂吃水果游戏

【Pygame实战】你说神奇不神奇?吃豆人+切水果结合出一款你没玩过的新游戏!(附源码)

 项目8.3 泡泡机游戏

【Pygame实战】超有趣的泡泡游戏来袭——愿你童心不泯,永远快乐简单哦~

项目9.6   黑客代码雨

 【神级Python代码】作为技术xiao白如何制作一款超炫酷的黑客主题代码雨?牛逼就完了。(源码分享学习)

🎄文章汇总——

汇总合集 Python—2022 |已有文章汇总 | 持续更新,直接看这篇就够了

(更多内容+源码都在✨文章汇总哦!!欢迎阅读喜欢的文章🎉~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

206页16万字城市运行“一网统管”体系建设项目需求报告

本资料来源网络,知识分享,仅供个人学习,请勿商用。完整资料领取见文末,部分资料内容: 第 一 章 应用场景示例 一.1 一卡通人员管理针对企业厂区、办公楼等场所人员出入频繁、安保问题多样化、管理环节复杂等现状&#…

文科生比不过理科生,转码IT互联网将成趋势?

今天看到“文科生转码或成趋势”的话题,觉得还是非常有意思哈,所以来聊聊看~ 值得一提的是,虽然现在高中考试改制后,已不再区分文理科生(理化生史地政6选3),但是大学本科及研究生以上&#xff…

最小基因变化

基因序列可以表示为一条由 8 个字符组成的字符串,其中每个字符都是 A、C、G 和 T 之一。 假设我们需要调查从基因序列 start 变为 end 所发生的基因变化。一次基因变化就意味着这个基因序列中的一个字符发生了变化。 例如,"AACCGGTT" -->…

设计模式-工作线程 创建多少线程池合适

1、定义 让有限的工作线程(Worker Thread)来轮流异步处理无限多的任务。也可以将其归类为分工模式,它的典型实现就是线程池,也体现了经典设计模式中的享元模式(重用对象)。 例如,海底捞的服务员(线程),轮流…

“数字档案室测评”相关参考依据梳理

数字档案室建设无疑比数字档案馆建设应用范围更为广泛,涉及的单位类型和专业领域也更多。这一点从国家档案局的机构设置上也可以看出端倪: 国家档案局两个内设业务指导司中,档案馆(室)业务指导司主要针对档案馆和机关档案室,而经济…

【Linux】磁盘结构、文件系统、软硬链接、动静态库链接

文章目录1、磁盘结构1.1 磁盘的物理结构1.2 磁盘的存储结构1.3 磁盘的逻辑结构2、文件系统2.1 4KB加载到内存2.2 文件系统结构3、软硬链接3.1 软链接3.2 硬链接4、动静态库4.1 什么是库?4.2 静态库和静态库链接4.3 动态库和动态库链接4.4 动静态库的加载下面了解到&…

python GUI图形化编程-----wxpython

一、python gui(图形化)模块介绍: Tkinter :是python最简单的图形化模块,总共只有14种组建 Pyqt :是python最复杂也是使用最广泛的图形化 Wx :是python当中居中的一个图形化,学习结构很清晰 Pywin :是pyth…

Qt界面美化之自定义qss样式表

原生的QT界面不好看,有时候需要根据美工的设计图修改样式。如果使用QML的话搞界面是快,但是QML有点儿吃内存,有时简单的功能还是用传统c的widget方便些。好在有qss,传统界面也可以美化的。QSS称为Qt Style Sheets也就是Qt样式表&a…

项目设计模式和规范

1、责任链模式 自己的理解:避免发生方与接收方解耦 优点:①降低发送方与接收方的耦合 ②简化他们对象 ③方便扩展新增 处理者 缺点:①不方便排错 ②性能问题,且使用不当容易搞出死循环 应用场景:拦截器 Interceptor和过滤器 filter:符合模式的进行拦截或者过滤到,然…

华为云服务器安全注意事项

使用华为云服务器搭建集群的时候不能像我们平时使用虚拟机克隆那样随意(我指的是后期使用),要留意安全问题,防止被病毒攻击 注意事项: 1.root用户和创建的普通用户密码要设置复杂一些,不能123456或者00000…

腾讯云服务器租用报价表新鲜出炉(轻量和CVM价格)

腾讯云服务器分为轻量应用服务器和云服务器CVM,CVM为专业级云服务器,适用于企业级如科学计算、集群应用、高容灾等使用场景;轻量应用服务器适用于个人博客简单的Web应用或测试环境使用。 腾讯云服务器租用价格表2023新版报价出炉&#xff0c…

页面状态码的含义

使用互联网产品或服务的过程中,会遇到网页报错的情况, 比如404、505等,具体这些数字有什么含义呢?本文基本涵盖了99%的报错情况,可供大家查询使用。 状态码的定义 状态码一般是由3位数字和原因短语组成的&#xff08…

10 种顶流聚类算法 Python 实现(附完整代码)

聚类或聚类分析是无监督学习问题。它通常被用作数据分析技术,用于发现数据中的有趣模式,例如基于其行为的客户群。 有许多聚类算法可供选择,对于所有情况,没有单一的最佳聚类算法。相反,最好探索一系列聚类算法以及每…

MWC 2023 | 美格智能合资公司联懂格智重磅发布多款5G+AIoT系列通信产品

2月27日下午,美格智能与联想懂的通信携手设立的合资公司——广州联懂格智技术有限公司亮相西班牙巴塞罗那世界移动通信MWC大会,并发布多款5GAIoT系列通信产品。▲联想集团副总裁、联想懂的通信CEO王帅博士(右三)美格智能CEO杜国彬…

【C++】C++11 新特性

目录 1.列表初始化 1.1. C98中使用{}初始化的问题 1.2. 内置类型的列表初始化 1.3. 自定义类型的列表初始化 2. 变量类型推导 2.1. 为什么需要类型推导 2.2. decltype类型推导 2.2.1 为什么需要decltype 2.2.2. decltype 3. 对默认成员的控制(default、delete) 3.1. …

第四阶段15-关于权限,处理解析JWT时的异常,跨域请求,关于Spring Security的认证流程

处理解析JWT时的异常 由于解析JWT是在过滤器中执行的,而过滤器是整个服务器端中最早接收到所有请求的组件,此时,控制器等其它组件尚未运行,则不可以使用此前的“全局异常处理器”来处理解析JWT时的异常(全局异常处理器…

华为机试题:HJ97 记负均正(python)

文章目录(1)题目描述(2)Python3实现(3)知识点详解1、input():获取控制台(任意形式)的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…

MySQL表的增删查改(进阶)

所有操作:主要讲了数据库的约束,表之间的关系,新增,聚合查询,联合查询等内容。是一篇博客所有操作的记录。 844d186 风夏/mysql_learning - Gitee.com数据库约束1.1 约束条件not null -指定某个列不能储存null值。un…

17、二维图形绘制

目录 (一)plot绘图指令 (1)plot(x,y) (2)plot(y)。 (3)plot(z)。 (4)plot(A)。 (5)plot(x,A)。 (6)plo…

【C++】纯虚函数、纯虚析构

纯虚函数语法:virtual 返回值类型 函数名(参数列表) 0纯虚函数的作用:不用定义!在多态中,通常父类中虚函数的实现是无意义的(因为主要用子类重写的,父类只是为了派生子类当做一个类族的顶层出现&#xff0…