首页 > 其他 > 详细

pygame学习(3) 画面和字幕

时间:2020-06-13 19:11:04      阅读:66      评论:0      收藏:0      [点我收藏+]

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

在最开始的设计中有一个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学习(3) 画面和字幕

原文:https://www.cnblogs.com/snailbuster/p/13121312.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!