本節書摘來自異步社群《python和pygame遊戲開發指南》一書中的第2章,第2.18節,作者[美]al sweigart(斯維加特), 李強 譯,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
幀速率(frame rate)或重新整理速率(refresh rate)是程式每秒鐘繪制的圖像的數目,用fps或幀/秒來度量(在計算機顯示器上,fps常見的名稱是赫茲。很多顯示器的幀速率是60hz,或者說每秒60幀)。視訊遊戲中,較低的幀速率會使得遊戲看上去抖動或卡頓。如果遊戲包含的代碼太多了,以至于無法運作來頻繁地繪制到螢幕上,那麼,fps會下降。但是,本書中的遊戲都足夠簡單,甚至在較舊的計算機上也不會有問題。
pygame.time.clock對象可以幫助我們確定程式以某一個最大的fps運作。clock對象将會在遊戲循環的每一次疊代上都設定一個小小的暫停,進而確定遊戲程式不會運作得太快。如果沒有這些暫停,遊戲程式可能會按照計算機所能夠運作的速度去運作。這對玩家來說往往太快了,并且計算機越快,它們運作遊戲也就越快。在遊戲循環中調用一個clock對象的tick()方法,可以確定不管計算機有多快,遊戲都按照相同的速度運作。catanimation.py程式的第7行建立了clock對象。

每次遊戲循環的最後,在調用了pygame.display.update()之後,應該調用clock對象的tick()方法。根據前一次調用tick()(這在遊戲循環的前一次疊代的末尾進行)之後經過了多長時間,來計算需要暫停多長時間(第一次調用tick()方法的時候,根本沒有暫停)。在動畫程式中,調用tick()是在第47行進行的,作為遊戲循環中的最後一條指令。
你需要知道的是在遊戲循環的每一次疊代中,應該在循環的末尾調用tick()方法一次。通常,這剛好在調用了pygame.display.update()之後進行。
嘗試修改fps常量變量,以不同的幀速率來運作相同的遊戲。将其設定為一個較低的值,就會使得程式運作得較慢。将其設定為一個較高的值,就會讓程式運作得較快。