# HG changeset patch # User Neil Muller # Date 1301951257 -7200 # Node ID 592477d8b09ba0eb749f4640249a49e261f94f53 # Parent 51bcc909873d456dcfcd176f5172a1508644611f Add fps to game diff -r 51bcc909873d -r 592477d8b09b skaapsteker/engine.py --- a/skaapsteker/engine.py Mon Apr 04 22:39:42 2011 +0200 +++ b/skaapsteker/engine.py Mon Apr 04 23:07:37 2011 +0200 @@ -10,6 +10,8 @@ def __init__(self): self._framerate = 60 self._current_scene = None + self._fpss = [self._framerate] * 100 + self._cur_frame = 0 def change_scene(self, next_scene): if self._current_scene is not None: @@ -31,9 +33,13 @@ self.change_scene(ev.next_scene) break self._current_scene.dispatch(ev) - self._current_scene.draw(surface) + self._current_scene.draw(surface, self) pygame.display.flip() - clock.tick(self._framerate) + self._fpss[self._cur_frame] = clock.tick(self._framerate) + self._cur_frame = self._cur_frame + 1 if self._cur_frame < 99 else 0 + + def get_fps(self): + return sum(self._fpss) / 100 class Scene(object): diff -r 51bcc909873d -r 592477d8b09b skaapsteker/levelscene.py --- a/skaapsteker/levelscene.py Mon Apr 04 22:39:42 2011 +0200 +++ b/skaapsteker/levelscene.py Mon Apr 04 23:07:37 2011 +0200 @@ -8,6 +8,7 @@ import level import physics import sprites.player +from skaapsteker.widgets.text import Text import pygame class LevelScene(engine.Scene): @@ -70,7 +71,7 @@ self._world.thaw() self.frozen = False - def draw(self, screen_surface): + def draw(self, screen_surface, engine): if self._clip_rect is None: self._clip_rect = pygame.Rect((0, 0), screen_surface.get_size()) @@ -81,6 +82,10 @@ self._level.draw(self._level_surface) self._world.draw(self._level_surface) + fps_text_pos = self._clip_rect.left + 10, self._clip_rect.top + 10 + fps_text = Text('FPS: %.1f' % engine.get_fps(), fps_text_pos) + fps_text.draw(self._level_surface) + screen_surface.blit(self._level_surface, (0, 0), self._clip_rect) def _update_clip_rect(self): diff -r 51bcc909873d -r 592477d8b09b skaapsteker/menuscene.py --- a/skaapsteker/menuscene.py Mon Apr 04 22:39:42 2011 +0200 +++ b/skaapsteker/menuscene.py Mon Apr 04 23:07:37 2011 +0200 @@ -33,7 +33,7 @@ self.cur_game.thaw() ChangeScene.post(self.cur_game) - def draw(self, surface): + def draw(self, surface, engine): surface.fill(pygame.Color('black')) super(MenuScene, self).draw(surface)