目录

01-pygame编写小程序的模板

02-找不同

02-1:项目解释

02-2:项目代码

02-2-1:初始介绍:

02-2-2 完整版:

03-消灭单词

03-1:项目解释

03-2:项目代码

04-汤姆猫

02-1:项目解释

02-2:项目代码

02--2-1:一个点击图标动画

02--2-2:点击图标+点击区域动画

05-看图猜名

02-1:项目解释

02-2:项目代码


01-pygame编写小程序的模板

写项目直接复制下来,然后改掉不同的部分,比如屏幕大小,名称和背景颜色等。

import sys,pygameclass FindDifference:#1.初始化函数def __init__(self):#设置初始化屏幕大小self.screen=pygame.display.set_mode((800,600))#2.主架构函数def menu(self):# 2.1 设置窗口名称pygame.display.set_caption('找不同')# 2.2 死循环while True:# 2.3 设置屏幕背景颜色self.screen.fill((255,255,255))# 2.4 调用业务执行函数self.action()# 2.5 调用绘制函数self.paint()# 2.7 延迟刷新频率pygame.time.delay(10)# 2.6 设置屏幕刷新pygame.display.update()#3.业务执行函数def action(self):# 3.1 获取pygame中所有的监听事件for event in pygame.event.get():# 3.2 判断是否退出if event.type==pygame.QUIT:sys.exit()#4.绘制函数def paint(self):passif __name__=='__main__':fd=FindDifference()fd.menu()

02-找不同

02-1:项目解释

找到两张图片的不同之处:

其实就是点击左边的图(或者右边的图)的不同之处时,能够在两张图上分别绘制出一个矩形框。【这个找不同并不是高级的深度学习类似的匹配,也不能精确框出一个物体】

02-2:项目代码

02-2-1:初始介绍:

此时通过鼠标点击图片可以获取鼠标的坐标值,依此可以获得不同之处的左上角。

python利用左上角作为原点,对一个图片进行排放。

此时的代码:

'''
找不同游戏点击图片中不一样的区域 产生两个红色矩形框(红色)鼠标的监听事件if event.type == pygame.MOUSEBUTTONDOWN:# 获取鼠标的坐标值mx,my = pygame.mouse.get_pos()# 获取鼠标的左键是否点击leftFlag = pygame.mouse.get_pressed()[0]if leftFlag and 100<mx<200 and 100<my<200:print("恭喜您,答对了")
'''
import sys,pygameclass FindDifference:#1.初始化函数def __init__(self):# 设置初始化屏幕大小self.screen=pygame.display.set_mode((800,600))# 背景图片self.back=pygame.image.load('FindDifference.png')#2.主架构函数def menu(self):# 2.1 设置窗口名称pygame.display.set_caption('找不同')# 2.2 死循环while True:# 2.3 设置屏幕背景颜色self.screen.fill((255,255,255))# 2.4 调用业务执行函数self.action()# 2.5 调用绘制函数self.paint()# 2.7 延迟刷新频率pygame.time.delay(10)# 2.6 设置屏幕刷新pygame.display.update()#3.业务执行函数def action(self):# 3.1 获取pygame中所有的监听事件for event in pygame.event.get():# 3.2 判断是否退出if event.type==pygame.QUIT:sys.exit()# 3.3 判断是否点击该位置if event.type==pygame.MOUSEBUTTONDOWN:# 3.3.1 左键是否点击 0左键  1代表双击 2右击leftFlag=pygame.mouse.get_pressed()[0]#运行时点击图片获得点击位置mx,my=pygame.mouse.get_pos()print(f'mx:{mx},my:{my}')#4.绘制函数def paint(self):#设置背景图self.screen.blit(self.back,(0,0))if __name__=='__main__':fd=FindDifference()fd.menu()

02-2-2 完整版:

'''
找不同游戏点击图片中不一样的区域 产生两个红色矩形框(红色)鼠标的监听事件if event.type == pygame.MOUSEBUTTONDOWN:# 获取鼠标的坐标值mx,my = pygame.mouse.get_pos()# 获取鼠标的左键是否点击leftFlag = pygame.mouse.get_pressed()[0]if leftFlag and 100<mx<200 and 100<my<200:print("恭喜您,答对了")
'''
import sys,pygameclass FindDifference:#1.初始化函数def __init__(self):# 设置初始化屏幕大小self.screen=pygame.display.set_mode((800,600))# 背景图片self.back=pygame.image.load('FindDifference.png')# 不同区域列表self.dif=[#[左上角横坐标,左上角纵坐标,框选区域横长,框选区域纵长][51,114,50,50],[0,230,90,90],[360,450,35,50]]self.rec=[]#2.主架构函数def menu(self):# 2.1 设置窗口名称pygame.display.set_caption('找不同')# 2.2 死循环while True:# 2.3 设置屏幕背景颜色self.screen.fill((255,255,255))# 2.4 调用业务执行函数self.action()# 2.5 调用绘制函数self.paint()# 2.7 延迟刷新频率pygame.time.delay(10)# 2.6 设置屏幕刷新pygame.display.update()#3.业务执行函数def action(self):# 3.1 获取pygame中所有的监听事件for event in pygame.event.get():# 3.2 判断是否退出if event.type==pygame.QUIT:sys.exit()# 3.3 判断是否点击该位置if event.type==pygame.MOUSEBUTTONDOWN:# 3.3.1 左键是否点击 0左键  1代表双击 2右击leftFlag=pygame.mouse.get_pressed()[0]#运行时点击图片获得点击位置mx,my=pygame.mouse.get_pos()print(f'mx:{mx},my:{my}')for df in self.dif:if leftFlag\and df[0]<=mx<=df[0]+df[2]\and df[1]<=my<=df[1]+df[2]:self.rec.append(df)#4.绘制函数def paint(self):#设置背景图self.screen.blit(self.back,(0,0))#绘制选中框for df in self.rec:#左边pygame.draw.rect(self.screen,(255,0,0),(df[0],df[1],df[2],df[3]),8)#右边pygame.draw.rect(self.screen, (255, 0, 0), (df[0]+400,df[1],df[2], df[3]), 8)if __name__=='__main__':fd=FindDifference()fd.menu()

03-消灭单词

03-1:项目解释

01-MyWord
1.搭建项目架构
2.初始化函数
3.主架构函数
4.业务执行函数
5.绘制函数
6.main函数业务需求:1.创建10个字母 从上往下落1.1 init函数设置self.x ===>随机的坐标值self.y ===>随机的坐标值self.word ====>存储的是10个随机字母====>ASCCII码值1.2 paint函数使用绘制字符串1.3 action函数中循环修改y的坐标值使用key与我们的系统产生的words进行比较课堂练习1.绘制背景图片2.字体颜色  固定每次字体下落的颜色 单击成功后修改颜色self.colors = []3.设置分数self.score = 0绘制到界面上字母击中  +5分字母落下  超过下边界 -10分4. 根据分数修改速度self.speed = 10分数越高  下落的速度越快

03-2:项目代码

'''
01-MyWord
1.搭建项目架构
2.初始化函数
3.主架构函数
4.业务执行函数
5.绘制函数
6.main函数业务需求:1.创建10个字母 从上往下落1.1 init函数设置self.x ===>随机的坐标值self.y ===>随机的坐标值self.word ====>存储的是10个随机字母====>ASCCII码值1.2 paint函数使用绘制字符串1.3 action函数中循环修改y的坐标值使用key与我们的系统产生的words进行比较课堂练习1.绘制背景图片2.字体颜色  固定每次字体下落的颜色 单击成功后修改颜色self.colors = []3.设置分数self.score = 0绘制到界面上字母击中  +5分字母落下  超过下边界 -10分4. 根据分数修改速度self.speed = 10分数越高  下落的速度越快
'''
import pygame,sys,randomclass MyWord:# 1.初始化函数def __init__(self):# 1.1 窗口对象self.screen=pygame.display.set_mode((800,600))# 1.2 设置随机坐标值self.x=[random.randint(0,800) for i in range(10)]self.y=[random.randint(0,600) for i in range(10)]# 1.3 设置随机产生的字母# A===>65 a===>97 产生大写字母的ASCCII值self.word=[random.randint(65,90) for i in range(10)]# 1.4 背景图片self.back=pygame.image.load('myword.png')# 1.5 字体颜色 getColor函数返回  列表 [R,G,B]self.colors = [self.getColor() for i in range(10)]# 1.6 分数self.score=0# 1.7 速度self.speed = 10# 2.窗口的架构def menu(self):# 2.1 设置窗口的标题pygame.display.set_caption('MyWord')# 2.2 设置死循环while True:# 2.3 设置背景颜色self.screen.fill((255,255,255))# 2.4 调用业务执行函数self.action()# 2.5 调用绘制函数self.paint()# 2.6 延迟刷新pygame.time.delay(self.speed)# 2.7 刷新屏幕pygame.display.update()# 3.业务执行函数def action(self):# 3.1 循环遍历所有的监听事件for event in pygame.event.get():# 3.2 判断是否退出if event.type==pygame.QUIT:sys.exit()# 3.3 键盘监听事件if event.type==pygame.KEYDOWN:# 循环遍历进行判断# 键盘与words比较如下for i in range(10):# key中的所有值  比较小写的字母  97 a  65 A# if event.key==self.words[i]+32:if event.key==self.word[i]+32\and self.y[i]>0:# 字母显示在窗口中# 修改分数self.score+=5# 修改颜色值,让单词消失,也就是将原本的单词替换成新的单词self.colors[i]=self.getColor()self.x[i]=random.randint(0,800)self.y[i]=random.randint(0,600)self.word[i]=random.randint(65,90)break# 3.4 循环遍历坐标值for i in range(10):self.y[i]+=1if self.y[i]>600:# 修改分数self.score-=10self.y[i]=0# 3.5 根据分数修改速度if 0<=self.score<50:self.speed=8elif 50<=self.score<70:self.score=5elif 70<=self.score<90:self.score=3elif 90<=self.score:self.speed=1# 4.绘制图形图案函数def paint(self):'''绘制背景图'''self.screen.blit(pygame.transform.scale(self.back,(800,600)),(0,0))# 4.1 初始化字体pygame.font.init()# 4.2 设置字体样式ft=pygame.font.Font('msyhbd.ttc',28)# 4.3 绘制内容for i in range(0,10):strName = chr(self.word[i])ftRender= ft.render(strName,True,(255,255,255))self.screen.blit(ftRender,(self.x[i],self.y[i]))# 4.4 绘制分数ftScore=ft.render('score:%d'%self.score,True,(255,0,0))self.screen.blit(ftScore,(100,100))# 5.获取颜色列表def getColor(self):R=random.randint(0,255)G = random.randint(0, 255)B = random.randint(0, 255)return [R,G,B]if __name__=='__main__':mWord=MyWord()mWord.menu()

04-汤姆猫

02-1:项目解释

点击6个图标和5个区域汤姆猫做出反应,即动画

02-2:项目代码

02--2-1:一个点击图标动画

'''
01-MyTom 帧动画1.搭建项目架构2.绘制背景图2.1  init函数 self.back变量2.2  paint函数 绘制背景图3.帧动画效果3.1 init函数  设置列表 self.eatList3.2 init函数  设置变量 self.ix3.3 action函数中  调整back的使用4.点击动画效果4.1 init函数 设置吃鸟动作 self.eatImg4.2 paint函数 绘制吃鸟图片4.3 action函数中 添加鼠标监听事件5.动画的停止5.1 init函数中  设置总帧数  self.counts5.2 action函数中 设置  self.counts =40的值
'''
import pygame,sysclass MyTom:# 1.初始化函数def __init__(self):# 1.1 设置窗口对象self.screen=pygame.display.set_mode((320,512))# 1.2 设置背景图片self.back = pygame.image.load('Animations/Eat/eat_00.jpg')# 1.3 设置吃鸟的动作列表# day08/Animations/Eat/eat_00.jpg# day08/Animations/Eat/eat_01.jpgself.eatList=['Animations/Eat/eat_%02d.jpg'%i for i in range(40)]# 1.4 设置背景图片下标self.ix=0# 1.5 设置吃鸟动作图片self.eatImg=pygame.image.load('Buttons/eat.png')# 1.6 设置动画的总帧数self.count=-1# 2.设置主结构def menu(self):# 2.1 设置标题pygame.display.set_caption("MyTom")# 2.2 死循环while True:self.screen.fill((255,255,255))# 2.3 调用业务执行函数self.action()# 2.4 调用绘制函数self.paint()# 2.5 延迟操作pygame.time.delay(5)# 2.6 刷新屏幕pygame.display.update()# 3.设置actiondef action(self):# 3.1 循环遍历for event in pygame.event.get():# 3.2 判断是否退出if event.type==pygame.QUIT:sys.exit()'''动画效果开始 鼠标单击事件'''if event.type==pygame.MOUSEBUTTONDOWN:# 获取是否点击  0代表单击  1代表双击  2代表右击leftFlag=pygame.mouse.get_pressed()[0]# 获取鼠标的坐标值mx,my=pygame.mouse.get_pos()if leftFlag\and 30<mx<30+60 and 350<my<350+60:# 修改总帧数self.count=40'''核心代码- 修改图片内容'''# 3.3 修改计数值  每运行一次 ix更改  0-39self.ix+=1# 3.4 根据ix的值修改背景图片# 根据ix值得到eatList中的图片路径 根据路径获取图片 根据图片修改back值# ix = 0 <  counts -1 False 不会修改图片# ix = 0 <  counts 40 True  会修改图片# ix = 40 < counts 40 False 停止动画效果   ix = 0 counts = -1if self.ix<self.count:self.back=pygame.image.load(self.eatList[self.ix])else:self.ix=0self.count=-1# 只展现一张图片# if self.ix<len(self.eatList):#     self.back=pygame.image.load(self.eatList[self.ix])# else:#     self.ix=0# 4.设置绘制函数def paint(self):# 4.1 绘制背景图self.screen.blit(pygame.transform.scale(self.back,(320,512)),(0,0))# 4.2 绘制吃鸟动作图片self.screen.blit(self.eatImg,(30,350))#pygame.draw.rect(self.screen,(255,0,0),(100,100,100,100),2)
if __name__=='__main__':mTom=MyTom()mTom.menu()

02--2-2:点击图标+点击区域动画

'''
01-MyTom 帧动画1.搭建项目架构2.绘制背景图2.1  init函数 self.back变量2.2  paint函数 绘制背景图3.帧动画效果3.1 init函数  设置列表 self.eatList3.2 init函数  设置变量 self.ix3.3 action函数中  调整back的使用4.点击动画效果4.1 init函数 设置吃鸟动作 self.eatImg4.2 paint函数 绘制吃鸟图片4.3 action函数中 添加鼠标监听事件5.动画的停止5.1 init函数中  设置总帧数  self.counts5.2 action函数中 设置  self.counts =40的值
'''
import pygame,sysclass MyTom:# 1.初始化函数def __init__(self):# 1.1 设置窗口对象self.screen=pygame.display.set_mode((320,512))# 1.2 设置背景图片self.back = pygame.image.load('Animations/Eat/eat_00.jpg')# 1.3 设置吃鸟的动作列表# day08/Animations/Eat/eat_00.jpg# day08/Animations/Eat/eat_01.jpgself.eatList=['Animations/Eat/eat_%02d.jpg'%i for i in range(40)]# 1.4 设置背景图片下标self.ix=0# 1.5 设置动作图片# 吃鸟self.eatImg=pygame.image.load('Buttons/eat.png')# 喝牛奶self.drink = pygame.image.load("Buttons/drink.png")# 敲钹self.cymbal = pygame.image.load("Buttons/cymbal.png")# 放屁self.fart = pygame.image.load("Buttons/fart.png")# 派self.pie = pygame.image.load("Buttons/pie.png")# 抓self.scratch = pygame.image.load("Buttons/scratch.png")# 1.6 设置动画的总帧数self.count=-1# 1.7 图标动画列表self.image = [[40, 'eat', 30, 350],[81, 'drink', 30, 420],[13, 'cymbal', 30, 280],[28, 'fart', 240, 280],[24, 'pie', 240, 350],[56, 'scratch', 240, 420]]# 脸self.btList = [[60, 85, 190, 165],[166, 313, 100, 34],[114, 458, 40, 20],[163, 464, 40, 20],[211, 378, 26, 80]]# 1.8 绘制列表self.rectList = []# 1.9 图片路径存储列表self.pathList = []# 2.设置主结构def menu(self):# 2.1 设置标题pygame.display.set_caption("MyTom")# 2.2 死循环while True:self.screen.fill((255,255,255))# 2.3 调用业务执行函数self.action()# 2.4 调用绘制函数self.paint()# 2.5 延迟操作pygame.time.delay(5)# 2.6 刷新屏幕pygame.display.update()# 3.设置actiondef action(self):# 3.1 循环遍历for event in pygame.event.get():# 3.2 判断是否退出if event.type==pygame.QUIT:sys.exit()'''动画效果开始 鼠标单击事件'''if event.type==pygame.MOUSEBUTTONDOWN:# 获取是否点击  0代表单击  1代表双击  2代表右击leftFlag=pygame.mouse.get_pressed()[0]# 获取鼠标的坐标值mx,my=pygame.mouse.get_pos()#图标动画if leftFlag:for bt in self.image:# 1.吃鸟if bt[2] < mx < bt[2] + 60 and bt[3] < my < bt[3] + 60:# 1.1 修改总数self.counts = bt[0]# 1.2 修改列表的值self.updateImage("%s" % bt[1])# if leftFlag:#     if self.btList[0][0]<=mx<=self.btList[0][0]+self.btList[0][2]\#             and self.btList[0][1]<=my<=self.btList[0][1]+self.btList[0][3]:#             self.counts=26#             self.updateImage("angry")#     elif self.btList[1][0]<=mx<=self.btList[1][0]+self.btList[1][2]\#             and self.btList[1][1]<=my<=self.btList[1][1]+self.btList[1][3]:#             self.counts = 34#             self.updateImage("stomach")#     elif# for bt in self.btList:#     if leftFlag \#             and bt[0] <= mx <= bt[0] + bt[2] \#             and bt[1] <= my <= bt[1] + bt[3]:#         # 将选中的不同点击添加到列表中#         self.rectList.append(bt)#         print(f'bt:{bt}')# for rt in self.rectList:#     if int(rt[0][0])==:#         self.counts=26#         self.updateImage("angry")#     elif self.rectList[rt]==self.btList[1]:#         self.counts=34#         self.updateImage("stomach")#     elif self.rectList[rt]==self.btList[2]:#         self.counts=30#         self.updateImage("footright")#     elif self.rectList[rt]==self.btList[3]:#         self.counts=30#         self.updateImage("footleft")#     elif self.rectList[rt]==self.btList[4]:#         self.counts=81#         self.updateImage("knockout")#     else:#         break# 7.循环遍历 0x   1y  2w  3h#身体区域动画if leftFlag:for i in range(5):if self.btList[i][0] <= mx <= self.btList[i][0] + self.btList[i][2] \and self.btList[i][1] <= my <= self.btList[i][1] + self.btList[i][3]:if i == 0:self.counts = 26self.updateImage("angry")elif i == 1:self.counts = 34self.updateImage("stomach")elif i == 2:self.counts = 30self.updateImage("footright")elif i == 3:self.counts = 30self.updateImage("footleft")elif i == 4:self.counts = 81self.updateImage("knockout")else:break'''核心代码- 修改图片内容'''# 3.3 修改计数值  每运行一次 ix更改  0-39self.ix+=1# 3.4 根据ix的值修改背景图片# 根据ix值得到eatList中的图片路径 根据路径获取图片 根据图片修改back值# ix = 0 <  counts -1 False 不会修改图片# ix = 0 <  counts 40 True  会修改图片# ix = 40 < counts 40 False 停止动画效果   ix = 0 counts = -1# 减少动画频率值index = int(self.ix / 10 % self.counts + 1)if index < self.counts:self.back = pygame.image.load(self.pathList[index])else:self.ix=0self.count=-1# 如果动画停止  列表进行清空 self.pathList = []del self.pathList[:]# 只展现一张图片# if self.ix<len(self.eatList):#     self.back=pygame.image.load(self.eatList[self.ix])# else:#     self.ix=0# 4.设置绘制函数def paint(self):# 4.1 绘制背景图self.screen.blit(pygame.transform.scale(self.back,(320,512)),(0,0))# 4.2 绘制吃鸟动作图片self.screen.blit(self.eatImg,(30,350))# 4.3 绘制喝牛奶self.screen.blit(self.drink,(30,420))# 4.4 绘制钹self.screen.blit(self.cymbal,(30,280))# 4.5 绘制放屁self.screen.blit(self.fart, (240, 280))# 4.6 绘制派self.screen.blit(self.pie, (240, 350))# 4.7 绘制抓self.screen.blit(self.scratch, (240, 420))# 5.修改列表的图片值def updateImage(self,name):# 要先设置self.counts的值for i in range(0,self.counts):# Animations/%s/%s_%02d.jpgself.pathList.append("Animations/%s/%s_%02d.jpg"%(name,name,i))if __name__=='__main__':mTom=MyTom()mTom.menu()

05-看图猜名

02-1:项目解释

1.完成超级猜图的游戏代码编写1.1 答案 选项 都是列表形式1.2 init函数中就需要读取文件并解析内容存储到各种列表中

02-2:项目代码

'''
1.完成超级猜图的游戏代码编写1.1 答案 选项 都是列表形式1.2 init函数中就需要读取文件并解析内容存储到各种列表中
'''
import  pygame,os,sysclass Guess:# 1.初始化函数def __init__(self):# 1.1 窗口对象self.screen = pygame.display.set_mode((1000, 600))# 1.2 设置答案的列表self.answerList = []# 1.3 设置标题列表self.titleList = []# 1.4 设置图片列表self.iconList = []# 1.5 设置选项列表self.optionsList = []# 1.6 读取文件内容 函数self.getList()# 1.7 设置图片关卡 当前第几张图self.numbers = 0# 1.8 设置用户的答案选项self.userAnswer = []# 2.主架构def menu(self):# 2.1 设置标题内容pygame.display.set_caption("超级猜图")# 2.2 死循环while True:# 2.3 设置背景颜色self.screen.fill((0, 0, 0))# 2.4 调用业务执行函数self.action()# 2.5 调用绘制函数self.paint()# 2.6 设置刷新屏幕pygame.display.update()# 3.业务函数def action(self):# 3.1获取所有的监听事件for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()'''鼠标监听事件'''if event.type == pygame.MOUSEBUTTONDOWN:# 3.2获取鼠标的点击leftFlag = pygame.mouse.get_pressed()[0]# 3.3获取鼠标的坐标值mx, my = pygame.mouse.get_pos()# 3.4判断是否在选项区域self.judgeOptionRect(leftFlag, mx, my)# 3.5判断是否在答案区域self.judgeAnswerRect(leftFlag, mx, my)# 3.6 判断是否胜利self.judgeWin()# 3.4 判断是否在选项区域def judgeOptionRect(self, leftFlag, mx, my):# 3.4.1 判断顶级是否在选项区域if leftFlag and 100 < mx < 100 + 10 * 80 and 450 < my < 590:# 判断点击哪一行那一列的框col = int((mx - 100) / 80)row = int((my - 450) / 50)# 设置变量twoCol 二维列表0-9第一行的数据 10-19第二行的数据# col 第二行需要+10再去取列表中的值twoCol = 10 + col if row > 0 else colif len(self.userAnswer)<len(self.answerList[self.numbers]):self.userAnswer.append(self.optionsList[self.numbers][twoCol])# 3.5 判断是否在答案区域def judgeAnswerRect(self,leftFlag,mx,my):rtx = 320 / len(self.answerList[self.numbers])if leftFlag and \320 < mx<320+rtx*len(self.answerList[self.numbers]) \and 390<my<440:col = int ((mx -320)/rtx)if len(self.userAnswer)!=0:del self.userAnswer[col]# 3.6 判断是否胜利def judgeWin(self):# 将用户的答案组成字符串userMsg = ""for ms in self.userAnswer:userMsg += ms# 判断是否一致if userMsg == self.answerList[self.numbers]:print("组件的字符串:", userMsg)del self.userAnswer[:]self.numbers += 1# 4.绘制函数def paint(self):# 4.1 绘制标题以及关卡pygame.font.init()ft = pygame.font.Font("msyhbd.ttc", 28)ftReader = ft.render("第%d图" % (self.numbers + 1), True, (255, 255, 0))self.screen.blit(ftReader, (300, 20))ft = pygame.font.Font("msyhbd.ttc", 30)ftReader = ft.render(self.titleList[self.numbers], True, (255, 0, 0))self.screen.blit(ftReader, (400, 20))# 4.2 绘制海报self.paintIcon()# 4.3 绘制填空选项(答案区域)self.paintAnswerRect()# 4.4 绘制选项框以及选项self.paintOptionRect()# 4.2 绘制海报def paintIcon(self):# 4.2.1 获取海报图片名称并加载iconImg = pygame.image.load("Image/%s.png" % self.iconList[self.numbers])# 4.2.2 绘制海报图片self.screen.blit(pygame.transform.scale(iconImg, (320, 300)), (300, 70))# 4.3 绘制填空选项def paintAnswerRect(self):# 4.3.1 设置绘制字体样式pygame.font.init()ft = pygame.font.Font("msyhbd.ttc", 35)# 4.3.2 循环遍历当前关卡的答案长度进行绘制填空框for i in range(0, len(self.answerList[self.numbers])):# 4.3.3 设置x值  rx是以左侧320的尺寸为起点rectW = 320 / len(self.answerList[self.numbers])# 320 400 480 560rx = 320 + rectW * i# rx是x坐标  450是y坐标  50,50 宽度和高度pygame.draw.rect(self.screen, (255, 255, 255), (int(rx), 390, 50, 50))'''4.3.4 绘制用户添加的答案'''for i in range(0, len(self.userAnswer)):ax = int(320 + rectW * i)ftRender = ft.render(self.userAnswer[i], True, (255, 0, 0))self.screen.blit(ftRender, (ax + 5, 390))# 4.4 绘制选线框以及选项def paintOptionRect(self):pass# 4.4.1 设置字体样式pygame.font.init()ft = pygame.font.Font("msyhbd.ttc",35)for i in range(0,20):# 第一行if i  < 10:rx = 100 + i * 80# 选项框pygame.draw.rect(self.screen,(255,255,255),(rx,450,50,50))ftRender = ft.render(self.optionsList[self.numbers][i],True,(255,0,0))self.screen.blit(ftRender,(rx+5,450))# 第二行else:rx = 100 + (i-10) * 80pygame.draw.rect(self.screen,(255,255,255),(rx,540,50,50))ftRender = ft.render(self.optionsList[self.numbers][i],True,(255,0,0))self.screen.blit(ftRender,(rx+5,540))# 5.获取文本的数据def getList(self):# 5.1 打开文件file = open("guess.txt", 'r')# 5.2 获取文件所有的内容lines = file.readlines()# 5.3 关闭文件file.close()# 5.4 循环遍历每一行文件内容for line in lines:# 5.5 调用解析函数进行数据分割self.clearData(line)# 6.数据解析分割函数def clearData(self,line):'''0 answer 0   越光宝盒 11 icon:movie_ygbh2 title:恶搞风格的喜剧大片3 options:线,话,飞,人,笑,越,黄,工,大,超,传,特,宝,鸿,队,赤,光,人,壁,盒,王'''# 6.1 进行分割dataList = line.split("#")# 6.2 答案数据分割添加  <越光宝盒>self.answerList.append(dataList[0].split(":")[1])print("self.answerList:",self.answerList)# 6.3 图片数据分割添加 <movie_ygbh>self.iconList.append(dataList[1].split(":")[1])# 6.4 标题数据分割添加 <恶搞风格的喜剧大片>self.titleList.append(dataList[2].split(":")[1])# 6.5 选项数据的添加 <线,话,飞,人,笑,越,黄,工,大,超,传,特,宝,鸿,队,赤,光,人,壁,盒,王>option = dataList[3].split(":")[1].replace("\n","")# 二维选项列表self.optionsList.append(option.split(","))if __name__=='__main__':guess=Guess()guess.menu()

【python】day07 pygame的几款游戏练习(简单版)找不同、消灭单词、汤姆猫、看图猜名相关推荐

  1. Python——利用pygame模块制作RPG游戏(一)

    利用pygame模块制作RPG游戏(一) 需要用到的第三方库:pygame 一.构造游戏的基本框架 1.首先准备好相应的游戏素材:背景,人物动作图片,音乐,音效等. 图片均用png格式,音乐音效均用o ...

  2. #用python的pygame写一个大富翁游戏(单机版)# 一 : 初步架构

    用python写一个简易大富翁小游戏 | 一 : 初步架构 系列文章: #用python的pygame写一个大富翁游戏(单机版)# 二:地图初始化 如题,俗话说得好,人生苦短,我用python,在大二 ...

  3. #用python的pygame写一个大富翁游戏(单机版)# 二:地图初始化

    用python的pygame写一个大富翁游戏(单机版) 二 :地图初始化 往期: #用python的pygame写一个大富翁游戏(单机版)# 一 : 初步架构 上次的博客,我们说到了准备好所有程序所需 ...

  4. 找茬小程序源码、看图找不同小程序,前端+后端+教程,微信小程序游戏一起来找茬,全网首发一款可以完美运营的找茬小程序源码

    演示小程序搜[最强脑洞I全民烧脑] 一共有2510关, 达到高级后会随机出现关卡: 一共7个能量, 每闯关一次扣除一个能量值, 看激励视频可以获得一个能量值: 金币获取: 段位升级 或者 观看激励视频 ...

  5. 日活四千万的汤姆猫游戏家族,用AWS云服务打造“无感”用户体验

    2020年7月,"会说话的汤姆猫"首款赛车类游戏<汤姆猫飞车>上线公测.它保持了汤姆猫游戏家族一贯的Q萌风格,赛道上一路都有萌宠陪伴,引领玩家进入奇妙的赛车世界.&qu ...

  6. python看图猜成语_看图猜成语200个图答案 看图猜成语图片答案大全

    看图猜成语2游戏v1.40苹果版 类型:ios休闲益智大小:100M语言:中文 评分:10.0 标签: 立即下载 看图猜成语200个图答案 看图猜成语图片答案大全.看图猜成语是一款很受欢迎的休闲猜谜类 ...

  7. Python GUI案例之看图猜成语开发(第三篇)

    Python GUI案例之看图猜成语(第三篇) 前言 看图猜成语小程序开发(第三篇) 游戏闯关模式页面 Python GUI案例之看图猜成语开发(第一篇) Python GUI案例之看图猜成语开发(第 ...

  8. python微信小程序看图猜成语源码flask

    wx供重浩:创享日记 对话框发送:python成语 获取完整源码源文件+说明文档+配置教程等 启动Idiom/flask下的venv虚拟环境,运行python manage.py runserver命 ...

  9. Python GUI案例之看图猜成语开发(第二篇)

    Python GUI案例之看图猜成语(第二篇) 前言 看图猜成语小程序开发(第二篇) 游戏选择模式页面 游戏训练模式页面 Python GUI案例之看图猜成语开发(第一篇) Python GUI案例之 ...

  10. html枪战游戏代码大全,3D枪战射击游戏cs简单版源代码

    [实例简介] 3D枪战射击游戏cs简单版源代码,本代码用opengl开发,使用vc6.0适用于初学者 [实例截图] [核心代码] vccs └── vccs ├── CDSound.cpp ├── C ...

最新文章

  1. 正则表达式一些关键字使用
  2. java的HttpClient如何去支持无证书访问https
  3. python中类方法与实例方法的区别-Python中的对象,方法,类,实例,函数用法分析...
  4. canvas之一:绘制直线
  5. 数据包如何正确的发到目的地_江苏工业交换机厂家浅谈交换机如何应用
  6. 苹果Iphone/Ipad--L2T虚拟教程
  7. spring的事件机制实战
  8. [转载][QT][SQL]sql学习记录3_sqlite之update delete like
  9. Knative 驾驭篇:带你 '纵横驰骋' Knative 自动扩缩容实现
  10. 终极人机大战要来了?AI打星际2即将直播,DeepMind暴雪发出神秘预告
  11. IPD与项目管理、CMM的关系
  12. python爬虫从入门到放弃-python爬虫从入门到放弃(二)- 爬虫的深层原理
  13. 你真的了解UIButton、UILabel 吗?
  14. Django学习-22-Form
  15. java性能优化文章
  16. java xml 空节点_java:利用xpath删除xml中的空节点
  17. c语言定义数组变量初始化为0,C语言数组初始化
  18. 关于SVN状态图标不显示的解决办法
  19. java hevc和heif_什么是HEVC和HEIF?有什么优缺点?
  20. 计算机一个小键盘按不出来怎么办,巧妙解决电脑键盘右边的数字键失灵问题

热门文章

  1. java自动拼图_java 拼图游戏完整源码,图片剪切,包含拼图自动还原功能
  2. 空间想象力差学计算机,空间思维想象力差怎么办
  3. 六(1) Python之列表
  4. FTP服务器 虚拟用户 530 Login incorrect. Login failed 解决办法
  5. 小菜openstack nova 源码学习之 evacuate
  6. Unity Cull 背面剔除
  7. 十年之后的人工智能会是什么样
  8. Solidity节省GAS的方法
  9. [京喜]卡红包实现真正0.01买东西
  10. Linux动态频率调节系统CPUFreq之三:governor