导语
哈喽!北鼻们,晚上好。
夕阳🌇的第一缕阳光送给小可爱们~每天都要加油鸭!
所有文章完整的素材+源码都在👇👇
粉丝白嫖源码福利,请移步至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 |已有文章汇总 | 持续更新,直接看这篇就够了
(更多内容+源码都在✨文章汇总哦!!欢迎阅读喜欢的文章🎉~