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

Posted 顾木子吖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python实战快看:”又中奖了,中大奖了“周围的小伙伴都惊呆了~你还不麻溜滴~(代码版彩票小游戏上线啦)相关的知识,希望对你有一定的参考价值。

导语

哈喽!北鼻们,晚上好。

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

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

粉丝白嫖源码福利,请移步至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 |已有文章汇总 | 持续更新,直接看这篇就够了

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

Python中那些有意思的经典示例!快看!

在这里插入图片描述

墙裂建议收藏,Python练手实例题目!


一、斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。

在数学上,费波那契数列是以递归的方法来定义:

#!/usr/bin/python3
 
def fib(n):
    if n == 1:
        return [1]
    if n == 2:
        return [1, 1]
    fibs = [1, 1]
    for i in range(2, n):
        fibs.append(fibs[-1] + fibs[-2])
    return fibs
 
# 输出前 10 个斐波那契数列
print (fib(10))

以上实例输出结果为:

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

二、水仙花数

打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

利用for循环控制100-999个数,每个数分解出个位,十位,百位。

#!/usr/bin/python3

for n in range(100,1000):
    i = n // 100
    j = n // 10 % 10
    k = n % 10
    if n == i*i*i + j*j*j + k*k*k: 
        print(n)

以上实例输出结果为:

153
370
371
407

三、九九乘法表

输出 9*9 乘法口诀表。

分行与列考虑,共9行9列,i控制行,j控制列。

#!/usr/bin/python3
 
for i in range(1, 10):
    print() 
    for j in range(1, i+1):
        print ("%d*%d=%d" % (i, j, i*j), end=" " )

以上实例输出结果为:

1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81

四、猴子吃桃

猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

采取逆向思维的方法,从后往前推断。

#!/usr/bin/python3

x2 = 1
for day in range(9,0,-1):
    x1 = (x2 + 1) * 2
    x2 = x1
print (x1)

以上实例输出结果为:

1534

五、回文数

一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

#!/usr/bin/python3
 
a = int(input("请输入一个数字:\\n"))
x = str(a)
flag = True
 
for i in range(len(x)//2):
    if x[i] != x[-i - 1]:
        flag = False
        break
if flag:
    print ("%d 是一个回文数!" % a)
else:
    print ("%d 不是一个回文数!" % a)

以上实例输出结果为:

请输入一个数字:
12321
12321 是一个回文数!

六、生兔子

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

兔子的规律为数列1,1,2,3,5,8,13,21…

#!/usr/bin/python3
 
f1 = 1
f2 = 1
for i in range(1,22):
    print ('%12ld %12ld' % (f1,f2), end=" ")
    if (i % 3) == 0:
        print ('')
    f1 = f1 + f2
    f2 = f1 + f2

以上实例输出结果为:

       1           1            2           3            5           8 
      13          21           34          55           89         144 
     233         377          610         987         1597        2584 
    4181        6765        10946       17711        28657       46368 
   75025      121393       196418      317811       514229      832040 
 1346269     2178309      3524578     5702887      9227465    14930352 
24157817    39088169     63245986   102334155    165580141   267914296

相信有很多人都在努力地自学着Python,但自学过程中总是看懂了却不会做。这就像学生时期老师讲过了,觉得听懂了,但一看题就懵了。所以还是要多练练经典实例哦~~~
祝大家Python学习顺利!没有 B U G~
在这里插入图片描述

以上是关于Python实战快看:”又中奖了,中大奖了“周围的小伙伴都惊呆了~你还不麻溜滴~(代码版彩票小游戏上线啦)的主要内容,如果未能解决你的问题,请参考以下文章

Python中那些有意思的经典示例!快看!

Python中那些有意思的经典示例!快看!

快看,好神奇!把Python脚本变成漂亮的机器学习工具

快看那个运维妹子在学算法二分查找

快看漫画下载|快看漫画app下载

快看漫画下载|快看漫画app下载