Pygame第五课:文字+声音

目录

一、文字

1.1 基础

1.1.1 设置字体

1.1.2 制作文字

1.1.3 绘制&显示

1.2 应用

1.2.1 积分系统

1.2.2 提示

二、声音

2.1 加载声音

2.2 播放声音

三、示例以及一些小知识

3.1 注释

3.2 “+=”操作符&“-=”操作符

3.3 示例


人生苦短,我用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!

猜你喜欢

转载自blog.csdn.net/Python_program/article/details/133557066