pygame学习 画面和字幕

Posted snailbuster

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pygame学习 画面和字幕相关的知识,希望对你有一定的参考价值。

画面和字幕是后续做游戏我非常需要的,那么如何让画面暂停下来呢?

在最开始的设计中有一个show_start_screen用来显示开始的画面,这个画面里面的功能很简单:

    def show_start_screen(self):
        self.screen.fill(BLACK)
        self.draw_text(TITLE,48,WHITE,WIDTH/2,HEIGHT/4)
        self.draw_text("Arrow to move,space to jump",22,WHITE,WIDTH/2,HEIGHT/2)
        self.draw_text("Press a key to pla",22,WHITE,WIDTH/2,HEIGHT*3/4)
        pg.display.flip()
        self.wait_for_key()

  一个上背景三个显示字幕刷新一下然后等按钮。那么很明显这个wait for key就是暂停功能所在了。

    def wait_for_key(self):
        waiting = True
        while waiting:
            self.clock.tick(FPS)
            for event in pg.event.get():
                if event.type == pg.QUIT:
                    waiting = False
                    self.running = False
                if event.type == pg.KEYUP:
                    waiting = False

  可以看到通过一个无限的while true来让屏幕暂停,当按下按键的时候waiting变成false才跳出了这个wait for key。暂停就是这么实现的。

  那么上面的字幕是怎么显示的呢:

    def draw_text(self,text,size,color,x,y):
        font = pg.font.Font(self.font_name,size)
        text_surface = font.render(text,True,color)
        text_rect = text_surface.get_rect()
        text_rect.midtop = (x,y)
        self.screen.blit(text_surface,text_rect)

  这里先创建了一个字体对象font,self.font_name = pg.font.match_font(FONT_NAME)。前面已经把这个font name字体对象实例化了,size为字体大小。

  pygame.font.Font.render()  ——  在一个新 Surface 对象上绘制文本。参数一个内容一个抗锯齿一个颜色。

  然后get_rect()是一个处理矩形图像的方法,通过它的midtop属性设置好后传给blit用来显示。

 

以上是关于pygame学习 画面和字幕的主要内容,如果未能解决你的问题,请参考以下文章

pygame学习记录 画面更新

在pygame中,重置每个子画面位置的最有效方法是什么?

用Python和Pygame写游戏-从入门到精通

用Python和Pygame写游戏-从入门到精通

俄罗斯方块-1

ffmpeg为mkv封装格式的音视频文件添加内挂字幕