标签:splay 学习 设计 waiting 实例化 running fill star display
画面和字幕是后续做游戏我非常需要的,那么如何让画面暂停下来呢?
在最开始的设计中有一个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用来显示。
标签:splay 学习 设计 waiting 实例化 running fill star display
原文地址:https://www.cnblogs.com/snailbuster/p/13121312.html