玩蛇系列之Pygame教程(七)-- 時鐘 & 計時器

根據:玩蛇系列之Pygame教程(四)-- 繪制文字 中我們可以知道如何繪制文字在屏幕上,這里我們就應用一下這個知識,再結合自定義事件,實現一個簡單的計時器

如何計時?
這里我采用每隔一秒發送一個自定義的事件來實現計時

自定義事件:

# 自定義計時事件
COUNT = pygame.USEREVENT +1

# 每隔1秒發送一次自定義事件
pygame.time.set_timer(COUNT,1000)

定義好后就可以在程序主循環中獲得所有的事件,并判斷:

for event in pygame.event.get():# 獲取事件
        
        if event.type == QUIT:# 判斷事件是否為退出事件
            
            pygame.quit()# 退出pygame
            
            sys.exit()# 退出系統
        
        if event.type == COUNT:# 判斷事件是否為計時事件
            
            counts=counts+1
            
            countstext=str(counts)
            
            showText(fontbigObj,countstext,200,350)

如何獲得系統時間?
首先導入time模塊,然后調用time.ctime()就可以獲得當前系統的時間

導入time模塊

import pygame, sys ,time# 聲明 導入需要的模塊

獲得系統當前的時間

    now = time.ctime()# 獲得系統當前時間

    clock = now[11:19]# 格式化形式

完整代碼:

# -*- coding: UTF-8 -*-
'''
Created on 2016年11月22日

@author: 小峰峰
'''
import pygame, sys ,time# 聲明 導入需要的模塊

from pygame.locals import *



pygame.init()# 初始化pygame

DISPLAYSURF = pygame.display.set_mode((400,600))# 設置窗口的大小,單位為像素

pygame.display.set_caption('Clock')# 設置窗口的標題


# 定義幾個顏色
WHITE = (255, 255, 255)
GREEN = ( 0, 255, 0)
BLUE = ( 0, 0, 128)


DISPLAYSURF.fill(WHITE)# 設置背景


# 初始化計時器
counts=0


# 自定義計時事件
COUNT = pygame.USEREVENT +1

# 每隔1秒發送一次自定義事件
pygame.time.set_timer(COUNT,1000)




#抽象出一個方法用來繪制Text在屏幕上
def showText(fontObj,text,x,y):
    
    textSurfaceObj = fontObj.render(text, True, GREEN, WHITE)# 配置要顯示的文字

    textRectObj = textSurfaceObj.get_rect()# 獲得要顯示的對象的rect

    textRectObj.center = (x, y)# 設置顯示對象的坐標


    DISPLAYSURF.blit(textSurfaceObj, textRectObj)# 繪制字體
    
    

fontbigObj = pygame.font.Font('PAPYRUS.ttf', 48)# 通過字體文件獲得字體對象

fontminObj = pygame.font.Font('PAPYRUS.ttf', 24)# 通過字體文件獲得字體對象



showText(fontminObj,"Time:",100,100)

showText(fontminObj,"Count:",100,300)



while True: # 程序主循環
    
    
    
    now = time.ctime()# 獲得系統當前時間

    clock = now[11:19]# 格式化形式
    

    showText(fontbigObj,clock,200,150)

    

    for event in pygame.event.get():# 獲取事件
        
        if event.type == QUIT:# 判斷事件是否為退出事件
            
            pygame.quit()# 退出pygame
            
            sys.exit()# 退出系統
        
        if event.type == COUNT:# 判斷事件是否為計時事件
            
            counts=counts+1
            
            countstext=str(counts)
            
            showText(fontbigObj,countstext,200,350)
            
            
    pygame.display.update()# 繪制屏幕內容

運行結果:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容