目录
人生苦短,我用Python!
一、文字
要说pygame文字有啥用,我可以告诉你,文字可以将如血量、得分、时间等一直在变的数据显示出来,还可以让文字移动。我总结了它的两大用法:
文字+数据=积分系统
文字+闪现=提示
接下来,让我们分段学习它。
1.1 基础
1.1.1 设置字体
想不到吧,第一步是设置字体。字体,是一种文字显示规范,文件格式为.ttf。
设置字体的方法为:
xx=pygame.font.SysFont(name,size,bold,Hashable,italic,constructor)
xx:某个变量
name:字体名称,多用Times New Roman和SimHei,格式为字符串,例:"SimHei"
bold,Hashable,italic,constructor:用不到……
1.1.2 制作文字
其方法为:
xx=font.render(self,text,antialias,color,backgroud)
xx:文字储存的变量
font:刚才设置的字体
text:文字
antialias:是否抗锯齿,布尔运算值,True和False
color:颜色,多提前设置
backgroud:用不到……
不过,这些只是制作了,但没有显示。
1.1.3 绘制&显示
绘制很简单:Surface.blit()方法。
显示更简单:pygame.display.update()。
1.2 应用
1.2.1 积分系统
积分,它是不固定的,要制成文字,难。那我们要怎么做呢?
积分不固定,文字同样不固定,不就完了吗?再不断显示,OK了。
具体怎么做,看我的。
首先,设置字体。
随后,设置循环。
接着,就是精髓了。文字最好做成一个变量。变量赋值,便是提示文字和用str()方法变为字符串的数据用“+”操作符将其连起来,就好了。
最后,填充surface,将其绘制显示即可。
精讲:str()方法可以将一个int类型或float类型的数字改为str字符串类型。参数就是这个数字。
精讲:“+”操作符在数字中可以是两个数相加,在字符串中是两个字符串相连,如"string"+"1",结果是"string1"。切忌,别让数字和字符串相加,否则会出错哦!
例子:
import pygame
pygame.init()
screen=pygame.display.set_mode([500,400])
#设置字体
font=pygame.font.SysFont("SimHei",48)
WHITE=(255,255,255)
BLACK=(0,0,0)
timer=pygame.time.Clock()
#积分初始化
mark=0
#循环
while True:
mark +=0.125 #积分增加
screen.fill(BLACK) #screen填充黑色
string="得分"+str(int(mark)) #设置文字内容,int()方法是怕变更太快
text=font.render(string,True,WHITE) #制作文字
screen.blit(text,(0,0)) #绘制
pygame.display.update() #显示
timer.tick(60)
1.2.2 提示
它的思路更为简单:
首先,设置好字体,制作好文字。
随后,设置循环。
接着,填充surface。
最后,这是精髓,在某种条件下绘制并显示,用if语句。
精讲:if语句是条件语句的一种,其在某种条件成立时,执行下面的主体部分,格式为:
if +条件语句:
代码
……
结构:首先第一行有if关键字,然后后面是一个条件语句,加一个冒号,换行写主体。主体部分需要有缩进,空4个格。往往我们用的IDE自带自动缩进功能,不过也要检查,防止出现逻辑异常。
例子:
import pygame
pygame.init()
screen=pygame.display.set_mode([500,400])
WHITE=(255,255,255)
BLACK=(0,0,0)
#设置文字
font=pygame.font.SysFont("SimHei",48)
text=font.render("超过10啦!",True,WHITE)
timer=pygame.time.Clock()
#mark初始化
mark=0
#循环
while True:
mark +=0.125 #改变mark值
screen.fill(BLACK) #screen填充黑色
#如果mark值大于十,显示该文字
if mark>10:
screen.blit(text,(0,0))
pygame.display.update() #显示
timer.tick(60)
二、声音
声音,也可以说是音乐,反正,游戏一加上它就高端大气上档次。那我们就来看看怎么加BGM吧。
2.1 加载声音
加载声音使用pygame.mixer.Sound()。参数很简单,就是加载声音的路径。我们往往将其储存在一个变量中。
2.2 播放声音
播放声音使用xx.play()。其中,xx代表加载的声音。还有一点,就是play()可以添加一个参数:-1。添加-1这个参数后,音乐就可以循环播放。
三、示例以及一些小知识
3.1 注释
注释不被程序运行,为阅读者阅读代码和编写者后期维护所用。“#”是单行注释符,后面内容会被忽略。“"""”是多行注释符,在开头放一个,在结尾放一个。
3.2 “+=”操作符&“-=”操作符
“+=”操作符可以让左边的变量加上右边的数。同理,“-=”操作符可以让左边的变量减去右边的数。
3.3 示例
import pygame
pygame.init()
screen=pygame.display.set_mode([1500,1000])
pygame.display.set_caption("绝处逢生")
#设置颜色
DODGERBLUE=(30,144,255)
DODGERBLUE2=(0,114,225)
SPRINGGREEN2=(0,255,140)
BLACK=(10,10,10)
RED=(255,0,0)
WHITE=(255,255,255)
me=pygame.image.load("Run 2.png")
#设置文字
font=pygame.font.SysFont("SimHei",48)
text=font.render("超过10秒啦!",True,WHITE)
timer=pygame.time.Clock()
picX = picY = 0
mark=0 #初始化mark值
while True:
picX+=1
mark +=0.125 #改变mark值
screen.fill(BLACK)
pygame.draw.line(screen, BLACK, (0, 700), (1500, 700), 20)
pygame.draw.rect(screen, SPRINGGREEN2, (0, 700, 1500, 300), 0)
pygame.draw.rect(screen, RED, (700, 0, 100, 50))
pygame.draw.rect(screen, DODGERBLUE2, (690, -10, 120, 70), 10)
#如果mark值大于十,显示该文字
if mark>10:
screen.blit(text,(0,0))
screen.blit(me,(picX,picY))
pygame.display.update()
timer.tick(60)
人生苦短,我用Python!