基于Python如何实现彩票小游戏
本篇内容主要讲解“基于Python如何实现彩票小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于Python如何实现彩票小游戏”吧!
一、游戏规则
游戏里面有提前设置好的奖项,分为三个,一等奖,二等奖,三等奖,用户需要在14个随机数中,连续猜6次,每次填写一个1~14的数字,填写完数字之后使用键盘和鼠标点击,揭示中奖号码。如果猜中6个数字表示中一等奖,一等奖给用户加300积分。
5个数字表示中二等奖,二等奖给用户加200积分。4个数字表示中三等奖,三等奖给用户加100积分。除此之外表示不中奖,不中奖就会扣除用户的50积分,每揭示中奖号码一次,会要求用户输入是否继续。可以手动结束游戏,或者积分用完自动结束游戏。
二、环境准备
1)运行环境
开发环境:Python3、Pycharm社区版、Pygame,部分自带的模块安装Python即可使用。
2)模块安装
第三方库的安装方式如下:
一般安装:pip install +模块名
镜像源安装:pip install -i pypi.douban.com/simple/+模块名…
三、代码展示
1)导入库
import pygamefrom 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-50user=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()
到此,相信大家对“基于Python如何实现彩票小游戏”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341